gpt4 book ai didi

postgresql - 使用永久磁盘时备份 PostgreSQL 的安全方法

转载 作者:行者123 更新时间:2023-11-29 12:11:18 26 4
gpt4 key购买 nike

我正在尝试为我在 Google Compute Engine 上运行且其数据目录位于永久磁盘上的 PostgreSQL 实例设置每日备份(使用永久磁盘快照)。

现在,根据Persistent Disk Backups博客文章,我应该:

  • 停止我的应用程序 (PostgreSQL)
  • fsfreeze 我的文件系统以防止进一步修改并将挂起的 block 刷新到磁盘
  • 拍摄永久性磁盘快照
  • 解冻我的文件系统
  • 启动我的应用程序 (PostgreSQL)

这显然会带来一些停机时间(在我的测试中,每个步骤从几秒到几分钟不等),我想避免或至少尽量减少。

博客文章的步骤被标记为确保快照一致所必需的(我假设在文件系统级别),但我对干净的文件系统不感兴趣,我感兴趣的是能够恢复来自此类快照的我的 PostgreSQL 实例中的所有数据。

PostgreSQL uses fsync提交时,所有 PostgreSQL 确认为已提交的数据都已经进入磁盘 ( fsync goes to the disk )。

出于本次讨论的目的,我认为将永久磁盘快照停止 PostgreSQL 和使用fsfreeze 与刚刚经历意外断电的磁盘上的文件系统。

看完https://wiki.postgresql.org/wiki/Corruptionhttp://www.postgresql.org/docs/current/static/wal-reliability.html ,我的理解是所有提交的数据都应该在意外断电时幸存下来。

我的问题是:

  1. 我与意外停电的比较是否准确,还是我遗漏了什么?

  2. 我能否在不停止 PostgreSQL 且不使用 fsfreeze 的情况下拍摄快照,或者我是否遗漏了一些副作用?

  3. 如果以上问题的答案是我不应该只拍摄快照,那么创建另一个永久磁盘是否符合惯例,定期使用 pg_dumpall(1) 转储整个数据库然后快照另一个永久磁盘?

最佳答案

1) 是的,不过拍摄快照应该更安全。 fsfreeze 的东西真的是 100% 安全(轶事:我从来没有在我的 PD 上使用 fsfreeze 并且没有遇到问题)

2) 是的,但不能 100% 保证它始终有效(偏执的解决方案:拍摄快照,使用该快照启动临时 VM,检查磁盘是否正常,然后删除 VM。这可以是自动化)

3) 不,我不会推荐快照。这将花费更多时间,可能会降低您的数据库性能,如果在转储过程中发生某些事情会怎样?此外,PD 对于增量备份来说非常昂贵。快照是不同的,因此您不必为整个磁盘的每个副本(只需第一个副本)付费,只需为更改付费。

可能的建议:

执行#3,然后创建新 PD 的快照,然后删除 PD。

关于postgresql - 使用永久磁盘时备份 PostgreSQL 的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com