postgres数据库双机热备故障修复方法

时间:2024-04-06 20:37:32

当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、安装配置完毕,检验主备流复制服务是否开启:
启动数据库时如果报错或者不能正常使用,查看/usr/local/pgsql/data/pg_log目录下的日志文件,根据日志排查错误。
控制台输入: ps -ef|grep postgres
查看主机进程,正常启动会出现wal sender进程;
查看从机进程,正常启动会出现wal receiver进程。

postgres数据库双机热备故障修复方法