Centos7下postgresql9.3(以下简称pg9.3)主备双机流复制搭建(同步与异步)
异步流复制配置:
前提先规划好主机,网络,存储,主备机时间同步等。
1,主备库建立
前提主备机器都已安装完pg9.3,参考Centos7下postgresql9.3源码安装:https://www.cnblogs.com/jinli1771/p/14289309.html。
2,主机新建replication角色
postgres=# CREATE USER repl REPLICATION LOGIN ENCRYPTED PASSWORD 'repl';
3,配置主库postgresql.conf和pg_hba.conf。
1)配置postgresql.conf
# - Settings -
wal_level = hot_standby #主备机需配置为hot_standby
# - Archiving -
archive_mode = on # 为on表示归档模式开启
archive_command = 'cp %p /usr/local/pg93/data/archive/%f' # %p代表xlog日志的全路径,%f指文件名
max_wal_senders=16 #至少1个流复制节点连接到主机
wal_keep_segments=32 #WAL日志保留个数,不能超出目录大小,编译时指定大小,默认10M
2)配置pg_hba.conf
红框代表允许repl用户从任何IP免密连接到主机。
4,备节点使用pg_basebackup创建备库基础备份(创建前先删除$PGDATA目录)
-Fp表示输出的格式默认普通非压缩
-P 指打印出复制进度
-R 直接生成备机用于复制的配置文件recovery.conf
-D 表示复制至指定目录
-h 主机名
-p 端口号
-U 复制的用户
由于主机pg_hba.conf配置的repl免密登录因此可以不用输入密码。
复制完毕后,检查recovery.conf
primary_conninfo指连接到主机(192.168.138.81)的用户是repl,端口是8493。
5,启动hot_standby
pg_ctl start
查看数据库已启动,同时多了流复制接收进程和恢复进程
6,测试验证
主节点执行
备节点查询已同步
同步流复制
1 主机只需在异步流复制两个postgresql.conf配置添加两个参数:
# - Settings -
synchronous_standby_names = '*' # 同步流复制的备机列表名称,*代表全部的备节点
# - Master Server -
synchronous_commit = on # 同步流复制提交,支持全局,事务,会话中打开
2 测试同步流复制:
1)连接主节点,插入test表,插入成功无等待。
2)模拟备节点故障停止,主节点再次插入已经变为等待。
主节点
3)重新启动备节点,发现主节点插入成功。
主节点
完