freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

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

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

FreeBuf+小程序

FreeBuf+小程序

    运维日记|postgresql-pg简易异步流复制搭建
    2020-07-29 11:08:18

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

    流复制是PostgreSQL 9.0之后才提供的新的传递WAL日志的方法。通过流复制,备库不断的从主库同步相应的数据,并在备库apply每个WAL record,这里的流复制每次传输单位是WAL日志的record。就如oracle的dataguard技术一样,pg的流复制也是按照同步模式的不同,分为同步流复制和异步流复制。同步流复制虽然能在主库坏掉时确保数据的一致,但是当网络或者备库有问题的时候,会导致主库事务hang住。异步流复制则没有这样的缺点,不会影响生产库的性能,但是在主库坏掉的时候,可能会丢掉一小部分数据。

    pg的流复制安装非常的简单,如下配置完成后,就可以做到,如下版本是pg11在rhel7的配置,注意,需要提前在两边服务器上建好同一个版本的pg服务:

      主库操作

    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

      备库操作

    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;

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

    本文作者:, 转载请注明来自FreeBuf.COM

    被以下专辑收录,发现更多精彩内容
    + 收入我的专辑
    评论 按时间排序

    登录/注册后在FreeBuf发布内容哦

    相关推荐
    • 0 文章数
    • 0 评论数
    • 0 关注者
    登录 / 注册后在FreeBuf发布内容哦
    收入专辑