在PostgreSQL上的时间点恢复

时间:2018-08-10 09:55:23

标签: postgresql postgresql-10

我们需要一些有关恢复测试方面的帮助。我们已按照以下步骤操作,但是在创建了recovery.conf文件并重新启动计算机后,数据库已损坏且无法启动。 请查看以下步骤,并帮助我们分析那里出了什么问题。我们已经使用离线postgresql安装程序来设置数据库。还正确设置了postgresql.conf中的必需配置,例如wal_level = hot_stanby,archive_mode = on和archive_command ='cp%p / mnt / server / archive /%f'。

  1. 设置数据库后,我们创建了一个tablcespace,db并将其与表空间映射。还创建了一些表以在pg_wal和归档目录(是mnt / server / archive)中生成事务文件

  2. SELECT pg_start_backup('TestPITR');

  3. 获取Postgresql数据目录的备份(tar)(opt / PostgreSQL / 10 /数据)>> tar zcf backup20180810.tar数据/

  4. SELECT pg_stop_backup();

  5. 创建了更多表,并记下了它们的时间戳(用于PITR,它将作为recovery_target_time添加到recovery.conf文件中)

  6. 停止了DB >>服务postgresql-10停止

  7. 创建了一个新目录>> mkdir pgbackup

  8. 将tar文件移动到pgbackup目录>> mv backup20180810.tar / opt / PostgreSQL / 10 / pgbackup

  9. 将存档文件复制到pgbackup目录>> cp -r / mnt / server / archive / / opt / PostgreSQL / 10 / pgbackup /

  10. 将旧数据目录(opt / PostgreSQL / 10 / data)重命名为bad.data >>> mv data bad.data(现在opt / PostgreSQL / 10 / bad.data)

  11. 在步骤2中取反后>> tar -xvf backup20180810.tar

  12. 将数据目录移动到旧路径>>> mv / opt / PostgreSQL / 10 / pgbackup / data / / opt / PostgreSQL / 10 /(现在我有opt / PostgreSQL / 10 /数据来自tar文件,并在pg_wal中包含旧的事务日志)

13将更新的pg_wal日志从bad.data复制到数据>>> cp -r /opt/PostgreSQL/10/bad.data/pg_wal/0* / opt / PostgreSQL / 10 / data / pg_wal

  1. 启动数据库>>服务postgresql-10 start(我们的数据库工作正常)

  2. 在数据文件夹>> opt / PostgreSQL / 10 / data中创建了recovery.conf文件-授予权限和用户为postgres

我们的recovery.conf文件具有以下两个参数。 recovery_target_time来自步骤5

  1. restore_command ='cp / opt / PostgreSQL / 10 / pgbackup / archive /%f%p'
  2. recovery_target_time ='2018-08-10 02:56:31'

  3. 重新启动数据库服务器>>服务postgresql-10重新启动

它不会重新启动,并且日志文件夹(opt / PostgreSQL / 10 / data / log)中没有日志条目,看起来好像重新启动后已停止创建日志。

1 个答案:

答案 0 :(得分:0)

步骤14和15是错误的方法。您必须在启动服务器之前创建recovery.conf