这篇文章主要讲解了“怎么搭建postgresql-pg简易异步流复制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么搭建postgresql-pg简易异步流复制”吧!
成都创新互联公司拥有十余年成都网站建设工作经验,为各大企业提供做网站、成都做网站服务,对于网页设计、PC网站建设(电脑版网站建设)、重庆App定制开发、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、申请域名等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。
流复制是PostgreSQL 9.0之后才提供的新的传递WAL日志的方法。通过流复制,备库不断的从主库同步相应的数据,并在备库apply每个WAL record,这里的流复制每次传输单位是WAL日志的record。就如 oracle的dataguard技术一样,pg的流复制也是按照同步模式的不同,分为同步流复制和异步流复制。同步流复制虽然能在主库坏掉时确保数据的一致,但是当网络或者备库有问题的时候,会导致主库事务hang住。异步流复制则没有这样的缺点,不会影响生产库的性能,但是在主库坏掉的时候,可能会丢掉一小部分数据。
pg的流复制安装非常的简单,如下配置完成后,就可以做到,如下版本是pg11在rhel7的配置,注意,需要提前在两边服务器上建好同一个版本的pg服务:
01主库操作
1.1创建复制用户作为主从同步使用
postgres=# create role repl login replication encrypted password '123456';
CREATE ROLE
1.2修改pg_hba.conf文件
主库
host allall192.168.0.0/24md5
host replication repl192.168.0.52/24md5
第一行#允许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目录
[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简易异步流复制”的内容了,经过本文的学习后,相信大家对怎么搭建postgresql-pg简易异步流复制这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!