1.环境
主库:172.16.191.133(pg16)
备库:172.16.191.136(pg16)
2.主库配置
要使用流复制,需要允许主库接受流复制的连接,这就需要在pg_hba.conf中做如下配置:
host replication all 0/0 md5
修改配置参数文件postgresql.conf
listen_addresses = '*' max_wal_senders = 10 wal_level = replica
3.备库配置
3.1 首先在配置中生成基础备份(pg_basebackup)
pg_basebackup -h172.16.191.133 -U postgres -F p -P -X stream -R -D $PGDATA -l osdbabackup20240101
3.2 执行完了之后就能在备库的数据目录(PGDATA)下面看到已经被复制过来的文件(主库的)
因为使用pg_basebackup命令时使用了“-R”参数,所以也会生成standby.signal文件,同时在postgresql.auto.conf中生成如下内容
primary_conninfo = 'user=postgres password=1234 channel_binding=disable host=172.16.191.133 port=5432 sslmode=disable sslcompression=0 sslcertmode=disable sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable'
如果没有加“-R”参数,我们也可以手动添加上面的内容,如果是PostgreSQL 12版本之前的数据库,使用了“-R”参数会生成recovery.conf文件:
standby_mode = 'on'primary_conninfo = 'user=postgres password=XXXXXX host=10.0.3.101port=5432 sslmode=disable sslcompression=1'
3.3启动standby
启动完成之后,检查备库的参数hot_standby是不是on