异步流复制模式
一、主库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 ;
网友评论