单机版流复制
测试环境搭建
搭建规划
主库 | 备库 | |
数据目录 | /pgdata/12/data | /pgdata/1202/data |
归档目录 | /pgdata/12/arch | /pgdata/1202/arch |
端口 | 5432 | 5433 |
创建流复制用户
create role replica with replication login password '123456';
备份主库
pg_basebackup -D /backup/ -Ft -Pv -U postgres -h 1.15.57.253 -p5432 -R
解压备份
cd /backup
tar -xvf base.tar -C /pgdata/12/data
tar -xvf pg-wal.tar -C /pgdata/12/arch
修改postgresql.conf
参数修改
max_wal_senders = 10 #设置可以最多有几个流复制连接,差不多有几个从,就设置几个 ,相当月mysql的binlog dump线程
wal_keep_segments = 0 #设置流复制保留的最多的xlog数目 128
wal_sender_timeout = 60s #设置流复制主机发送数据包的超时时间
max_connections = 100 #一般查多于写的应用从库的最大连接数比较大
hot_standby = on #针对从库,说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s #数据备份的最大延迟时间
wal_receiver_status_interval = 10s #多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的时间间隔
hot_standby_feedback = on #如果有错误的数据复制,是否向主进行反馈
recovery_target_timeline = 'latest' #指定恢复到一个最近的时间线
另外因为是单机多实例
还需要修改这几个参数
archive_command = 'cp %p /pgdata/1202/arch/%f'
port = 5433
修改standby.signal
standby_mode = 'on'
表示为备库
启动备库
pg_ctl -D /pgdata/1202/data
CST [22362] LOG: started streaming WAL from primary at 0/6000000 on timeline 2
监控复制
主库:
select pid,state,client_addr,sync_priority,sync_state from pg_stat_replication;
备库:
psql -U postgres -h localhost -p 5433 -c "\x" -c "select * from pg_stat_wal_receiver;"
测试:
主库上新建一个库
查看备库