freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

美创科技运维日记|PostgreSQL-pg简易异步流复制搭建
FreeBuf_345712 2020-07-29 14:40:18 35040

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

流复制是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  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目录

[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内核技术揭秘》等多本数据运维优化书籍。

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

# PostgreSQL # 运维安全 # 数据库运维 # 自动化运维
本文为 FreeBuf_345712 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
数据库运维
FreeBuf_345712 LV.1
这家伙太懒了,还未填写个人描述!
  • 69 文章数
  • 2 关注者
运维日记|SQL server 那点事
2020-09-03
运维日记|做一个查找机器
2020-08-26
运维日记|做一个优雅搬运工
2020-08-25