pg数据库主备库切换
一、switchover
1、先停主库,再停备库
[postgres@db /var/postgre/data]$touch standby.signal
2、在原主库的数据目录中建文件standby.signal(pg 12以前是recovery.conf),并配置连接新主库的流复制参数。
在postgresql.conf文件中配置如下内容:
primary_conninfo = 'user=postgres password=postgres host=127.0.0.1 port=5433 sslmode=prefer sslcompression=0'
如果是PostgreSQL 12以前的版本可以在recovery.conf文件中配置如下内容
hot_standby = on
standby_mode ='on'
primary_conninfo = 'host=localhost port=5432 user=rep_owner password=rep_owner sslmode=disable sslcompression=1'
restore_command = 'cp /var/postgre/primary_archive/%f %p'
3、把备库的standby.signal文件删掉或重命名
[postgres@db /var/postgre/standby]$rm standby.signal
如果是PostgreSQL 12以前的版本需要重命名recovery.conf文件或删掉
4、启动原备库(现在已经变成了主库)
[postgres@db /var/postgre/standby]$pg_ctl start -D /var/postgre/standby
[postgres@db /var/postgre/standby]$psql -p 5433
psql (16.0)
Type "help" for help.postgres=# select pg_is_in_recovery();pg_is_in_recovery
-------------------f
(1 row)postgres=#
4、启动原主库(现在已经变成了备库)
postgres=# select client_addr,state,sync_state from pg_stat_replication;