【发布时间】:2017-05-09 15:49:46
【问题描述】:
环境: 800GB Postgres 数据库(OpenSuse)
正常恢复过程:
- 您有 pg_basebackup 需要恢复(比如说:每个星期六)
- 您有从上周六到今天的WAL文件
- 首先:使用 pg_basebackup 恢复
- 然后:使用 WAL 文件更新数据库以获得最新数据。 (带有 recovery.conf)
我的想法:
当您每天使用一些备份软件进行增量备份时,为什么每周都要进行大型 pg_basebackup 并通过 Internet 将 800GB 复制到 NAS。
- 恢复完整的数据库-vm(昨天站着)
- 添加 WAL 文件(恢复)以使此 vm-clone 保持最新。
现在我已经完成了:
- 我恢复了一个虚拟机
-
创建recovery.conf
restore_command = 'cp /.../%f %p'
rcpostgresql 启动
我收到以下错误:
2017-05-09 16:46:07.780 CEST [2938]: [1-1] user=,db=,app=,client= LOG: database system was shut down at 2017-05-09 16:45:47 CEST
2017-05-09 16:46:07.780 CEST [2938]: [2-1] user=,db=,app=,client= LOG: starting archive recovery
2017-05-09 16:46:08.588 CEST [2952]: [1-1] user=[unknown],db=[unknown],app=[unknown],client=[local] LOG: connection received: host=[local]
2017-05-09 16:46:08.588 CEST [2952]: [2-1] user=postgres,db=postgres,app=[unknown],client=[local] FATAL: the database system is starting up
2017-05-09 16:46:09.391 CEST [2938]: [3-1] user=,db=,app=,client= LOG: restored log file "000000010000070D0000008A" from archive
2017-05-09 16:46:09.434 CEST [2938]: [4-1] user=,db=,app=,client= LOG: contrecord is requested by 70D/8A000028
2017-05-09 16:46:09.434 CEST [2938]: [5-1] user=,db=,app=,client= LOG: invalid primary checkpoint record
2017-05-09 16:46:09.434 CEST [2938]: [6-1] user=,db=,app=,client= LOG: invalid secondary checkpoint link in control file
2017-05-09 16:46:09.434 CEST [2938]: [7-1] user=,db=,app=,client= PANIC: could not locate a valid checkpoint record
2017-05-09 16:46:09.434 CEST [2936]: [4-1] user=,db=,app=,client= LOG: startup process (PID 2938) was terminated by signal 6: Aborted
2017-05-09 16:46:09.434 CEST [2936]: [5-1] user=,db=,app=,client= LOG: aborting startup due to startup process failure
在 pg_resetxlog 之后,下一个 WAL 文件被恢复。我得到同样的错误(下一个 wal 文件名)
有什么办法可以让它工作吗?
【问题讨论】:
-
只要您调用
pg_start_backup()和pg_stop_backup(),您的增量备份将覆盖所有数据库文件,并且您拥有从 pg_start_backup 开始的所有 WAL 文件,这应该可以工作。
标签: postgresql backup restore wal