经验教程|美创科技运维日记 | PostgreSQL-pg简易异步流复制搭建

_原题为 美创科技运维日记 | PostgreSQL-pg简易异步流复制搭建
流复制是PostgreSQL非常重要并且非常好用的高可用架构 。 本片文章小编就来带大家简单的做一个pg流复制的安装 。
流复制是PostgreSQL 9.0之后才提供的新的传递WAL日志的方法 。 通过流复制 , 备库不断的从主库同步相应的数据 , 并在备库apply每个WAL record , 这里的流复制每次传输单位是WAL日志的record 。 就如oracle的dataguard技术一样 , pg的流复制也是按照同步模式的不同 , 分为同步流复制和异步流复制 。 同步流复制虽然能在主库坏掉时确保数据的一致 , 但是当网络或者备库有问题的时候 , 会导致主库事务hang住 。 异步流复制则没有这样的缺点 , 不会影响生产库的性能 , 但是在主库坏掉的时候 , 可能会丢掉一小部分数据 。
pg的流复制安装非常的简单 , 如下配置完成后 , 就可以做到 , 如下版本是pg11在rhel7的配置 , 注意 , 需要提前在两边服务器上建好同一个版本的pg服务:
经验教程|美创科技运维日记 | PostgreSQL-pg简易异步流复制搭建
文章图片

01主库操作 1.1创建复制用户作为主从同步使用
postgres=# create role repl login replication encrypted password '123456';
CREATE ROLE
1.2 修改pg_hba.conf文件
主库
host all all 192.168.0.0/24 md5
host replication repl 192.168.0.52/24 md5
第一行 #允许XX这个从服务器连接到主服务器
第二行 #允许使用replica用户来复制 , 第二个字段必须要填repl (上一步添加的用户)
#psql
psql> select pg_reload_conf();#生效
1.3 修改postgresql.conf
listen_addresses = '*' #这个一般安装服务器之后都会进行配置 , 检查下
wal_level=replica #默认replica , 不动
wal_keep_segments= 256 #设置流复制保留的最多的xlog数目
#重启pg服务生效 。
#只有listen_address改变需要重启 , 否则select pg_reload_conf() 即可 。
pg_ctl stop –D $PGDATA
pg_ctl start –D $PGDATA
1.4 在从库测试连接是否成功
psql -h 192.168.0.51 -p 5432 -U postgres
02备库操作 2.1 停止pg服务 , 清空data目录
【经验教程|美创科技运维日记 | PostgreSQL-pg简易异步流复制搭建】[postgres@apple-standby ~]$ echo $PGDATA
/data/pg11.5/data
[postgres@apple-standby data]$ rm -rf /data/pg11.5/data
2.2 从主节点拷贝数据到从节点
$ pg_basebackup -h 192.168.0.51 -U repl -D /data/pg11.5/data -X stream -P
could not identify current directory: No such file or directory
Password:
45238/45238 kB (100%), 1/1 tablespace
2.3 配置recovery.conf
cd $PGHOME(软件安装目录)
cp share/recovery.conf.sample $PGDATA/recovery.conf
vi recovery.conf
standby_mode = on
primary_conninfo = 'host=192.168.0.51 port=5432 user=repl password=123456'
recovery_target_timeline = 'latest'
###
primary_conninfo 主服务器的信息以及连接的用户
standby_mode = on # 说明该节点是从服务器
recovery_target_timeline #指定恢复到特定时间轴 。 默认设置是沿着执行基本备份时的当前时间线恢复 。 将此设置为 latest 将恢复到存档中找到的最新时间轴
2.4 启动服务
pg_ctl start -D $PGDATA
在主库上查询 , 如下 , 可以看到 , sync_state , async就表示异步流复制 。
postgres=# select pid,usename,application_name,client_addr,state,sync_state from pg_stat_replication;
经验教程|美创科技运维日记 | PostgreSQL-pg简易异步流复制搭建
文章图片

如上 , 就简单的搭好了一个流复制数据库!可以试一试!
美创科技拥有强大的运维中心数据库服务团队 , 其中Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师, 并著有《Oracle DBA实战攻略》 , 《Oracle数据库性能优化方法和最佳实践》 , 《Oracle内核技术揭秘》等多本数据运维优化书籍 。
美创科技结合多年来在数据中心运维领域的知识经验沉淀 , 自主研发数据中心运维一体机 , 并架构美创运维云 , 实现了对数据中心的全景监控和数据库智能化运维 , 有效保障生产业务的运行稳定和数据完整性 。
本文转自杭州美创科技有限公司公众号(新运维新数据) , 如需二次转载 , 请咨询marketing@mchz.com.cn 。


    推荐阅读