PostgreSQL主从复制配置

本文主要介绍基于pg_basebackup实现主从复制(异步流复制)

PostgreSQL安装的方法可以参考这篇文章,PostgreSQL安装


关于基本的配置就不作过多的介绍了,直接开始

MASTER节点

首先在master节点创建一个用于复制的用户rep 设置密码 123456,并授予rolcanlogin权限

1
CREATE ROLE rep WITH REPLICATION LOGIN PASSWORD '123456';

接下来需要配置pg_hba.conf文件,配置完后记得重启PG

由于我们的SLAVE节点是一个DOCKER PG的容器,下面就需要使用pg_basebackup来备份MASTER 节点的数据目录用来启动SLAVE节点,先备份

1
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目录下

1
docker cp centos9:/opt/pg_basebackup /var/lib/docker/centos9_pg/

然后启动SLAVE节点即可

1
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 表示流复制状态正常

1
select * from pg_stat_replication;

下面执行DML语句进行验证(验证的数据在备份之前就可以准备好)

总结

在配置的过程中如果遇到报错一定要去看下错误日志,错误日志中会记录详细信息