PostgreSQL 10 副本实现

异步流复制模式

一、主库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 副本实现)