当postgres数据库双机热备出现故障,备节点日志报错:“ FATAL: requested WAL segment xxxxxxxxxx has already been removed”时,修复方式如下:
1、首先停止从库的Postgres数据库(如果启动)
service postgres stop
2、从库重命名/usr/local/pgsql/data/目录为/usr/local/pgsql/data_bak/,备份data目录下所有的conf文件,如postgresql.conf , pg_hba.conf , recovery.conf 文件
3、将主库/usr/local/pgsql/目录下的data目录发送到从库相同目录下
Pg9.2以下版本语句:
pg_basebackup -D /usr/local/pgsql/data -Fp -x -v -P -h Primary_IP -p 54320 -U postgres
Pg9.2以上版本语句:
pg_basebackup -D /usr/local/pgsql/data -Fp -Xs -v -P -h Primary_IP -p 54320 -U postgres
(注意:在 9.2 版本之后支持 -Xs 即,stream 形式,这种模式不需要收集主库的 WAL 文件,而能以 stream 复制方式直接追赶主库。因此9.2版本最好使用-Xs)
4、替换之前备份的conf文件,然后修改data目前下的所有者权限
cd /usr/local/pgsql/data
chown postgres *
5、然后启动从服务器数据库服务:
service postgres start
6、安装配置完毕,检验主备流复制服务是否开启:
启动数据库