说明:
- 测试主库IP: 10.211.55.4;
- 备库IP: 10.211.55.5;
- PG数据目录/pg/PG14.4/data/ye
主库操作部分
1、创建复制用户
1 | postgres=# create user repl replication password 'Abcd321#'; |
2、修改主库 pg_hba.conf 白名单文件
将用于流复制数据同步的 repl 用户,添加至 /pg/PG14.4/data/pg_hba.conf 文件中
1 | shell> vi /pg/PG14.4/data/pg_hba.conf |
repl 用户添加之后,及时手动进行生效
1 | shell> pg_ctl reload |
3、修改参数文件
修改主库参数文件,添加异步流复制配置相关参数,如下:
1 | vi /pg/PG14.4/data/postgresql.conf |
异步流复制参数设置完成后,需手动重启实例
1 | shell> pg_ctl restart |
注意:其中只有 listen_address 参数设置需要重启生效,对于其他参数则可以选择 pg_ctl reload
或者 select pg_reload_conf();
方式动态生效即可
4、从库测试连接
1 | shell> psql -h 10.55.211.4 -p 5432 -U repl postgres |
备库操作
1、停止备库 PG 服务并清空 data 目录
检查 PG 数据目录,并手动关闭 PG 实例,最后再清空$PGDATA(对于目标端非新环境等场景)
1 | shell> su – postgres |
2、备库远程拷贝主库数据目录
1 | shell> pg_basebackup -h 10.211.55.4 -U repl -D /pg/PG14.4/data/ -X stream -P -R |
在/pg/PG14.4/data/ 下,会比主库多出一个 backup_label 文件,该文件记录了备份开始时 WAL 日志位置 ,如下:
1 | shell> more /pg/PG14.4/data/backup_label |
3、配置 postgresql.auto.conf
注意:如果 pg_basebackup 时添加了-R 选项,则可跳过此步,否则必须配置此步骤。
以下为没有添加-R 选项的配置方法,如下:
1 | shell> vi /pg/PG14.4/data/postgresql.auto.conf |
手动创建 standby.signal 文件
1 | shell> touch /pg/PG14.4/data/standby.signal |
4、启动备库实例
1 | shell> pg_ctl -D /pg/PG14.4/data/ start |
验证主备关系
1、检查主库与备库角色
在主库执行角色检查,如下:
1 | shell> pg_controldata | grep 'Database cluster state' |
在备库执行角色检查,如下:
1 | shell> pg_controldata | grep 'Database cluster state' |
2、在主库上检查同步情况
1 | postgres=# \x |
3、在备库检查同步情况
1 | postgres=# \x |