是否可以仅从最新的 PostgreSQL 转储中恢复新的更改
Is it possible to restore only new changes from latest PostgreSQL dump
现在从 back-up/dump 恢复大约需要 20 分钟,
pg_restore --create --exit-on-error --verbose -U postgres --dbname=postgres --verbose --clean -F directory mydb.dump
问:是否可以从最新的 PostgreSQL 转储中恢复仅新更改(以节省时间),
每当有人更改数据库或添加新数据时?
--
我知道人们通常使用 sql 脚本并将它们应用到他们的数据库中。但是如果没有脚本。因为数据库是从外部更改的。
在 pg_restore
中不支持它,但是从 PostgreSQL v12 开始,您可以使用带有选项 --inserts --on-conflict-do-nothing
的 pg_dump
。这样的转储将仅恢复那些不违反您恢复到的 table 上的主键或唯一约束的行。
不,pg_restore 无法知道有哪些新变化。也许它可以依赖于您保存在表中的时间戳,但它不知道如何执行此操作,您必须编写代码来教它。
听起来你真正想要的是使用物理备份,然后 WAL 重放。
现在从 back-up/dump 恢复大约需要 20 分钟,
pg_restore --create --exit-on-error --verbose -U postgres --dbname=postgres --verbose --clean -F directory mydb.dump
问:是否可以从最新的 PostgreSQL 转储中恢复仅新更改(以节省时间), 每当有人更改数据库或添加新数据时?
--
我知道人们通常使用 sql 脚本并将它们应用到他们的数据库中。但是如果没有脚本。因为数据库是从外部更改的。
在 pg_restore
中不支持它,但是从 PostgreSQL v12 开始,您可以使用带有选项 --inserts --on-conflict-do-nothing
的 pg_dump
。这样的转储将仅恢复那些不违反您恢复到的 table 上的主键或唯一约束的行。
不,pg_restore 无法知道有哪些新变化。也许它可以依赖于您保存在表中的时间戳,但它不知道如何执行此操作,您必须编写代码来教它。
听起来你真正想要的是使用物理备份,然后 WAL 重放。