postgresql数据库流复制

primary和standby在同一服务器的不同目录下。

primary: /var/postgre/data

standby: /var/postgre/data1

1. 加账号  (也可以使用postgres账号)

[postgres@v-vlxsz-devdb01 data]$ psql
psql (14.1)
Type "help" for help.

postgres=# create role replica with replication login password '123456';
CREATE ROLE
postgres=# alter user replica with password '123456';
ALTER ROLE
postgres=#

2.修改pg_hba.conf文件,加入如下一行:

host    replication     replica              0.0.0.0/0               md5

3.vi postgresql.conf

wal_level = replica  

max_wal_senders = 10 #最多可以有几个流复制连接,差不多有几个从就设置几个

wal_keep_size = 128   (?)

wal_sender_timeout = 60s #流复制主机发送数据库的超时时间

max_connections = 200   

hot_standby = on  #说明这台机器不仅仅用于数据归档也用于数据查询

max_standby_streaming_delay = 30s  #数据流备份的最大延迟时间

wal_receiver_status_interval = 10s #多久向主机报告一次从的状态,从每次数据复制都会向主报告状态,这里只是设置最长的时间间隔

hot_standby_feedback = on #如果有错误的数据复制,是否向主进行反馈

wal_log_hints = on    # also do full page writes of non-critical updates

4.主库备份

$ pg_basebackup -D /var/postgre/backup/ -Ft -Pv -Ureplica

5.从库恢复

$ tar -xvf base.tar  -C /var/postgre/data1

$ tar -xvf pg_wal.tar  -C /var/postgre/archive1

6.从库配置文件修改

$ vi standby.signal

standby_mode = 'on'

$ vi postgresql.conf

primary_conninfo = 'host=localhost  port=5432 user=replica password=123456' 

restore_command = 'cp /var/postgre/archive1/%f %p'

recovery_target_timeline = 'latest'

max_connections = 200  
hot_standby = on  #说明这台机器不仅仅用于数据归档也用于数据查询max_standby_streaming_delay = 30s  #数据流备份的最大延迟时间

wal_receiver_status_interval = 10s #多久向主机报告一次从的状态,从每次数据复制都会向主报告状态,这里只是设置最长的时间间隔

hot_standby_feedback = on #如果有错误的数据复制,是否向主进行反馈

max_wal_senders = 10 #最多可以有几个流复制连接,差不多有几个从就设置几个
max_standby_archive_delay = 30s 

port = 5433  #因为主从在同一台,所以从的端口要改下

archive_command = 'test ! -f /var/postgre/archive1/%f && cp %p /var/postgre/archive1/%f' #也是因为在同一台的缘故索引要修改

7.从库启动

pg_ctl start -D /var/postgre/data1

8.检查是否同步

主库检查

select pid,state,client_addr,sync_priority,sync_state from pg_stat_replication;

从库检查:psql -p 5433 -c "\x" -c "select * from pg_stat_wal_receiver;"

也可以在主库上创建一个对象,然后再在从库上检查下是否创建成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值