我有一个PostgreSQL 9.1服务器运行在一个CentOS 5.8 32位操作系统上,我已经启用了WAL存档。在这个服务器上,有三个数据库: databaseA、databaseB和databaseC。有人在下午12点在databaseB上删除一个表,我想将databaseB还原到删除该表之前的时间。现在时间是下午3点
如何才能恢复到中午12点的databaseB,而不损失另外两个数据库中三个小时的数据呢?
wal_level = archive
archive_mode = on
archive_command = 'test ! -f /opt/pgsql/logs/%f && cp %p /opt/pgsql/logs/%f'
max_wal_senders = 100restore_command = 'cp /opt/pgsql/logs/%f %p'
recovery_target_time = '2012-06-29 11:59:59 CEST'我在早上9点运行我的基地备份
pg_basebackup -h 127.0.0.1 -D /opt/pgsql/backupPostgreSQL服务于下午3时关闭
发布于 2012-06-30 18:31:26
我会做一个时间点恢复到一个不同的位置,恢复到所需的时间,并pg_dump问题数据库。我将在正常位置删除一个数据库,再次创建它,并加载pg_dump输出。
在启动类似的操作之前,请确保创建并保存集群数据目录树的文件系统级副本。
发布于 2012-07-05 09:47:30
要扩展kgrit万亿的答案,还可以只对已删除的表执行pg_dump,并在现有的databaseB中重新构建该表,因此不需要在其他表中丢失6个小时的数据。
https://dba.stackexchange.com/questions/20158
复制相似问题