在实时数据库上运行 pg_dump 会产生一致的备份吗?

Rom*_*man 51 postgresql

我有一个不断修改的 3GB 数据库,我需要在不停止服务器的情况下进行备份(Postgres 8.3)。

我的 pg_dump 运行了 5 分钟。如果数据在这个过程中被修改了怎么办?我可以获得一致的备份吗?我不想知道灾难何时发生。

Postgres 文档http://www.postgresql.org/docs/8.3/static/app-pgdump.html对此没有任何说明。

Fra*_*ens 67

手册

即使同时使用数据库,它也会进行一致的备份。

所以是的,您可以信任备份。当然是 PostgreSQL,你可以信任你在 PostgreSQL 里的数据。

  • 当我读到“你可以信任你在 PostgreSQL 中的数据”时,我真的哈哈大笑:) (13认同)
  • 手册的链接会很好 (2认同)
  • @PabloFernandez:完成! (2认同)

Den*_*lte 23

转储从设置开始TRANSACTION ISOLATION LEVEL SERIALIZABLE

请阅读有关事务隔离的手册 ,例如有关此问题用户列表讨论

引用:

备份只会看到在设置隔离级别之前提交的事务。

基本上pg_dump设置事务隔离级别之后的所有内容都不是此转储的一部分。

在此期间读/写操作不受影响(锁定)。


Gre*_*ith 15

pg_dump 启动一个事务,类似于任何其他长时间运行的查询的工作方式。一致性保证来自MVCC 实现。转储将始终在这些规则内自洽。

MVCC 的所有模糊部分都围绕着诸如 UPDATE 事务对其他客户端可见的顺序以及如何获取锁等问题。pg_dump 对排序很严格,并获取整个数据库的读锁以转储它。对于大多数人来说,这就是他们所期望的,所使用的机制从来不会造成任何麻烦。主要的并发风险是尝试更改数据库结构的客户端将在转储运行时被阻止。但这并不影响转储的质量。