PostgreSQL的流复制搭建

时间:2022-10-14 14:19:36

单机版流复制

测试环境搭建

搭建规划


主库

备库

数据目录

/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'

PostgreSQL的流复制搭建

表示为备库


启动备库

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;

PostgreSQL的流复制搭建


备库:

psql -U postgres -h localhost -p 5433 -c "\x" -c "select * from pg_stat_wal_receiver;"

PostgreSQL的流复制搭建


测试:

主库上新建一个库

PostgreSQL的流复制搭建

查看备库

PostgreSQL的流复制搭建