gpt4 book ai didi

Postgresql 数据库备份理想实践

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

• 使用 pg_dump 进行 PostgreSQL 逻辑备份的理想做法是什么?

• 从备用/从节点进行备份是否理想?如果复制延迟小于 200ms

• 从备用/从节点进行备份是否理想,我们是否需要更改任何特定配置?

• 备份逻辑备份好还是物理备份好?数据库经常更新的地方。由于备份是为了灾难恢复,哪种方法备份和灾难恢复(恢复)更快更好。

已更新
我们当前的数据库大小为 5GB,复制处于 hot standby 模式。
我们在从节点上运行备份脚本,但它每 30 分钟从主节点进行一次远程备份。
我创建这个问题的原因是要了解备份何时运行一些 COPY 语句需要 6 分钟才能完成,即使它不会影响数据库上的其他事务,如果语句是否会出现任何其他问题需要更多时间。

最佳答案

我考虑了您写的内容,这里有一些想法供您引用:

  1. 如果您需要与某个时间点真正一致的备份,那么您必须使用 pg_basebackup 或 pg_barman(内部使用 pg_basebackup)- 说明在下面的 1. 链接中。最新的 pg_basebackup 10 流 WAL 日志,因此您还可以备份在备份期间完成的所有更改。当然这个备份只需要整个 PG 实例。另一方面,它不锁定任何表。如果您从远程实例执行此操作,那么它只会在 PG 实例上造成很小的 CPU 负载,并且磁盘 IO 并不像某些文本所建议的那么大。有关我的经历,请参阅链接 4。恢复非常简单 - 请参阅链接 5。
  2. 如果您使用 pg_dump,您必须了解您无法保证您的备份与时间点确实一致 - 再次参见链接 1。可以使用数据库快照(参见链接 2 和 3)但是即使有了它,您也不能指望 100% 的一致性。我们只在我们的分析数据库上使用 pg_dump,它每天只加载 1x 新的(昨天来自生产数据库的分区)。您可以使用并行选项加速它(仅适用于目录备份格式)。但缺点是 PG 实例的负载更高——更高的 CPU 使用率,更高的磁盘 IO。即使你远程运行 pg_dump - 在这种情况下你只保存磁盘 IO 来保存备份文件。另外 pg_dump 需要在表上放置读锁,以便它可以与新插入或复制(在副本上进行时)相结合。但是,当您的数据库达到数百 GB 时,即使是并行转储也可能需要数小时,此时您无论如何都需要切换到 pg_basebackup。
  3. pg_barman 是 pg_basebackup 的“舒适版本” + 它允许您防止数据丢失,即使您的 PG 实例崩溃非常严重。让它工作需要更多的改变,但这绝对是值得的。您将必须设置 WAL 日志存档(请参阅链接 6),如果您的 PG <10,您将必须设置“max_wal_senders”和“max_replication_slots”(无论如何您都需要进行复制)-一切都在 pg-barman 手册中,尽管描述不是很好。 pg_barman 甚至会在备份之间流式传输和存储 WAL 记录,因此您可以确保在非常严重的崩溃情况下几乎没有数据丢失。但是让它工作可能需要很多时间,因为描述不是很好。 pg-barman 使用其命令进行备份和恢复。

您的数据库有 5GB 大,因此任何备份方法都会很快。但是你必须决定是否需要时间点恢复和几乎零数据丢失——所以你是否会花时间设置 pg-barman 。

链接:

  1. PostgreSQL, Backups and everything you need to know
  2. Review for Paper: 14-Serializable Snapshot Isolation in PostgreSQL - 关于快照
  3. Parallel dumping of databases - 示例如何使用快照
  4. pg_basebackup experiencies
  5. pg_basebackup - restore tar backup
  6. Archiving WAL logs using script

关于Postgresql 数据库备份理想实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48187662/

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