ITPub博客

首页 > 数据库 > PostgreSQL > 美创科技运维日记|postgresql-pg简易异步流复制搭建

美创科技运维日记|postgresql-pg简易异步流复制搭建

原创 PostgreSQL 作者:数据安全 时间:2020-07-29 16:15:10 0 删除 编辑

流复制是postgresql非常重要并且非常好用的高可用架构。本篇文章小编就来带大家简单的做一个pg流复制的安装。

流复制是PostgreSQL 9.0之后才提供的新的传递WAL日志的方法。通过流复制,备库不断的从主库同步相应的数据,并在备库apply每个WAL record,这里的流复制每次传输单位是WAL日志的record。就如 的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;

如上,就简单的搭好了一个流复制数据库!可以试一试!

美创科技拥有强大的运维中心数据库服务团队,其中Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、 RHCA、中间件weblogic、tuxedo认证、达梦工程师,并著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。

美创科技结合多年来在数据中心运维领域的知识经验沉淀,自主研发数据中心运维一体机,并架构美创运维云,实现了对数据中心的全景监控和数据库智能化运维,有效保障生产业务的运行稳定和数据完整性。更多产品详情咨询:4008113777。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69973247/viewspace-2707831/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
美创科技,以“数据安全领导者和引路人,数字化转型推动者”为使命,十六年专注深耕,围绕数据安全、数字化转型、运行安全三大业务,为政企用户提供专业产品与解决方案。

注册时间:2020-07-08

  • 博文量
    116
  • 访问量
    51285