美文网首页
PostgreSQL 10 副本实现

PostgreSQL 10 副本实现

作者: 梵蒂冈教主 | 来源:发表于2019-07-27 15:32 被阅读0次

    异步流复制模式

    一、主库Master修改要点

    1、创建用于备份的用户角色

    $sudo -u postgres psql

    postgres=#CREATE ROLE replicate WITH REPLICATION LOGIN ; #创建用于数据库同步访问用户

    postgres=#set password_encryption = 'md5'; #加密协议scram-sha-256或md5

    postgres=#\password replicate #修改密码

    postgres=#\q

    2、修改postgresql.conf文件,调整如下参数,支持复制

    $sudo vi /etc/postgresql/10/main/postgresql.conf

    wal_level= replica

    max_wal_senders= 10 # max number of walsender processes

    wal_keep_segments= 64 # in logfile segments, 16MB each; 0 disables

    3、修改pg_hba.conf文件,打开支持链接

    $sudo vi /etc/postgresql/10/main/pg_hba.conf

    host replication replicate xxx.xxx.xxx.xxx/yy md5 #注意用户和加密和前面创建的用户保持一致

    4、重启数据库服务

    $sudo /etc/init.d/postgresql restart

    二、副本库Slave修改要点

    1、 停止数据库服务

    $sudo /etc/init.d/postgresql stop

    2、修改postgresql.conf文件,设置当前库运行模式

    $sudo vi /etc/postgresql/10/main/postgresql.conf

    hot_standby = on #声明为副本库

    max_standby_archive_delay= 30s

    max_standby_streaming_delay= 30s

    wal_receiver_status_interval= 10s

    hot_standby_feedback= off

    wal_receiver_timeout= 60s

    wal_retrieve_retry_interval= 5s

    3、获取远端基准数据

    #su - postgres

    $pg_basebackup -h X.X.X.X -D /replica/postgresql/10/main/ -P -U replicate --wal-method=stream

    注意如果数据转移为非当前目录需要注意命令目标目录修改

    4、配置recovery.conf文件

    $sudo cp -avr /usr/share/postgresql/10/recovery.conf.sample /replica/postgresql/10/main/recovery.conf

    5、修改recovery.conf文件

    $sudo vi /pdlreplica/postgresql/10/main/recovery.conf

    standby_mode = on #指明身份

    primary_conninfo= 'host=X.X.X.X port=5432 user=replicate password=XXXXXX' #主服务器连接信息

    recovery_target_timeline = 'latest' #同步到最后数据

    restore_command= 'cp /home/postgresql_wal/%f "%p"'

    6、重启数据库服务

    $sudo /etc/init.d/postgresql restart

    三、查看结果

    select * from pg_stat_replication ;

    select * from pg_stat_activity where usename = 'replicate' ;

    select pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_flush_lsn(),write_lsn))delay_wal_size,* from pg_stat_replication ;

    相关文章

      网友评论

          本文标题:PostgreSQL 10 副本实现

          本文链接:https://www.haomeiwen.com/subject/krderctx.html