参考文章:PostgreSQL 主从异步流复制配置(二)_将臣三代的博客-CSDN博客
PostgreSQL 主从异步、同步流复制配置(三)_将臣三代的博客-CSDN博客_同步流复制
服务器地址如下:
PostgreSQL 主从异步流复制配置
在 master 上搭建PostgeSQL 环境基于配置(一),具体请参考 搭建PostgreSQL 安装环境(一)
安装成功后,在master的客户端认证文件pg_hba.conf 后新增如下:
上述表示:允许地址为17、18、19的用户repl 通过MD5密码验证 从主机进行复制。
修改配置文件后,若PostgeSQL 服务在运行 则reload,没有运行则 start 使之生效:
master配置成功后,slave 安装基本环境同 master ,区别在于 slave 从库不需要进行 initdb 初始化数据库
slave复制数据
上述表示把数据从主库master同步到slave 上
查看slave的recovery配置文件
启动slave:
解决方法:
启动PG server:
看到日志输出以下内容说明启动成功:
查看主从是否已连接:
PostgreSQL 主从同步流复制配置
在master上连接pocdb 数据库 ,基于配置二的节点状态
master有两个slave都是async(异步)流复制,现在修改slave1节点为sync(同步)流复制,修改master 节点的postgresql.conf中参数synchronous_standby_names
查看master的复制信息:
slave1已经修改为同步复制。
同步复制slave宕机测试
a. 隐式事务,同步slave宕机,事务挂起,slave恢复后写事务继续执行。
slave1为同步复制方式,当slave1宕机(kill -9),在master上执行查询可以执行,但写入的DML语句,将被block:
恢复slave1之后,master上的事务将继续执行, 恢复slave:
master上的事务:
在同步复制的slave节点上查询:
b. 显式事务,在slave宕机的情况下,提交的事务会本地提交,slave恢复后会将master上本地提交的事务同步到slave,rollback的事务在slave宕机时不受影响。
显式本地提交事务:
显式本地ROLLBACK事务:
在slave上查询:
异步复制slave宕机:
当异步复制slave宕机,master读写不受影响,恢复后可即时同步到最新数据: