本文主要介绍基于pg_basebackup实现主从复制(异步流复制)
MASTER节点安装的方法可以看这篇文章
PostgreSQL YUM安装_yum install postgresql-CSDN博客
关于基本的配置就不作过多的介绍了,直接开始
MASTER节点
首先在master节点创建一个用于复制的用户rep 设置密码 123456,并授予rolcanlogin权限
CREATE ROLE rep WITH REPLICATION LOGIN PASSWORD '123456';
接下来需要配置pg_hba.conf文件,配置完后记得重启PG
由于我们的SLAVE节点是一个DOCKER PG的容器,下面就需要使用pg_basebackup来备份MASTER 节点的数据目录用来启动SLAVE节点,先备份
pg_basebackup -D /opt/pg_basebackup/ -h 172.17.0.2 -p 5432 -U rep -Fp -R -X s -P -v
SLAVE节点
接下来在DOCKER的数据目录下创建一个SLAVE的本地映射文件用于启动SLAVE节点
接下来将MASTER节点中pg_basebackup备份的数据COPY到我们准备的本地映射centos9_pg目录下
docker cp centos9:/opt/pg_basebackup /var/lib/docker/centos9_pg/
然后启动SLAVE节点即可
docker run -itd --name pg.slave.16.3 -e POSTGRES_PASSWORD=123456 -v /var/lib/docker/centos9_pg:/var/lib/postgresql/data 07a4ee949b9e
进入容器,看到从数据目录下多了一个standby.signal
文件,这默认是一个空文件,其实是一个标识文件。
是因为上面备份的时候使用了-R
参数,所以在同步的数据里,所以会在postgresql.auto.conf
里配置上 primary_conninfo
信息。
验证主从同步
在MASTER节点上可以看到流复制的监控信息,其中 state = streaming 表示流复制状态正常
select * from pg_stat_replication;
下面执行DML语句进行验证(验证的数据在备份之前就可以准备好)
总结
在配置的过程中如果遇到报错一定要去看下错误日志,错误日志中会记录详细信息