环境: 800GB Postgres-Database(OpenSuse)
正常还原 - 处理:
我的想法:
为什么每周都有大量的pg_basebackup并通过Internet将800GB拷贝到NAS上,当你每天使用一些备份软件进行增量备份时。
现在我已经完成了:
创建recovery.conf
restore_command =' cp /.../%f% p'
rcpostgresql start
我收到以下错误:
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文件名)
有没有办法让这个工作?
答案 0 :(得分:0)
根据您的错误我假设您跳过了pg_start_backup
。否则你should have missing checkpoint:
pg_start_backup接受任意用户定义的标签 备份。 (通常这将是备份转储的名称 文件将被存储。)在独占模式下使用时,该函数会写入 备份标签文件(backup_label),如果有任何链接 pg_tblspc /目录,一个表空间映射文件(tablespace_map)进入 数据库集群的数据目录,执行检查点,然后 将备份的启动事务日志位置作为文本返回。
遵循逻辑顺序应为:
<强>备份强>:
select pg_start_backup('some label')
(确保它返回位置 - 制作保存点需要很长时间,或以IO峰值价格强制快速创建)select pg_stop_backup()
restore_command = 'cp /.../%f %p'
你也可能想读一下pg_control,chechpoints和恢复序列here。
答案 1 :(得分:0)
几天后,我能够开始工作。 @Vao Tsun的帮助让我走向正确的方向,但遗憾的是没有必要。
如何使用WAL文件恢复Postgres数据库并完成VM备份还原强>
select pg_start_backup('some label')
不必要
只是正常备份[可能是之前的检查点] restore_command = 'cp /[path_to_your_wal_backups]/%f "%p"'
recovery_target_timeline = 'latest'