PostgreSQL的流复制搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL的流复制搭建相关的知识,希望对你有一定的参考价值。

单机版流复制

测试环境搭建

搭建规划


主库

备库

数据目录

/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的流复制搭建_数据_02


备库:

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

PostgreSQL的流复制搭建_数据复制_03


测试:

主库上新建一个库

PostgreSQL的流复制搭建_数据_04

查看备库

PostgreSQL的流复制搭建_多实例_05






以上是关于PostgreSQL的流复制搭建的主要内容,如果未能解决你的问题,请参考以下文章

如何配置从 Vanilla Postgresql 9.6 DB 到 AWS RDS Postgresql 的流复制

postgreSQL主从复制

Postgresql主从配置

postgresql从库搭建--逻辑复制

PostgreSQL10.6主从复制搭建

PostgreSQL 12 流复制环境搭建