我们每晚对我们的数据库进行完整备份,然后使用该转储创建我自己的开发数据库。 dev-db的创建时间大约需要10分钟,所以每天早晨在我上班前通过cron安排。所以我现在可以使用几乎 live db。如何恢复/倒带我的PostgreSQL数据库
但是,当我测试的东西有时会方便回滚完全数据库或只是一些特定的表到初始备份。当然,我可以完全重新开发dev-db,但这会让我再等10分钟才能再次运行测试。
那么有没有一种简单的方法来恢复/回卷数据库/表到特定时间点或从转储?
我曾尝试使用pg_restore
这样恢复特定的表:
pg_restore -d my-dev-db -n stuff -t tableA -t tableB latest-live-db.dump
我也象-c
和--data-only
也选择尝试。但似乎有几个问题在这里,我没有预见到:
- 旧的数据时,恢复的数据复制回不会自动删除。
- 有几个外键约束使得这不可能(纠正我,如果我错了)没有明确地删除FK之前恢复,然后再次添加回来。
- 在这一点上,失序的PK序列根本不关心我,但这可能也是一个问题。
编辑:我测试了更多的东西/看着:
pg_basebackup
- 更强力的替代
pg_basebackup
是停止数据库服务器,复制DB-文件,然后启动数据库服务器。
上述两种替代方法都失败了,因为我有几个本地数据库在同一个集群中运行,并且总计大量磁盘上的数据。这种方式无法分离数据库!所以这里的文件复制操作不会给我任何速度增益。
也不能有这帮助你吗? http://stackoverflow.com/questions/876522/creating-a-copy-of-a-database-in-postgres它询问有关pgAdmin,但由于该命令是常规的SQL,它应该是足够的。使用您的开发数据库作为模板,并在每次需要时从其创建一个新的数据库。 – DrColossos 2014-09-04 09:26:54
PITR和WAL归档? – 2014-09-04 09:31:38