pg 主备流复制可以设置人为的复制延迟,这个功能在某些场景下有巨大的作用,比如误删数据的恢复。通过设置一个延迟复制的备库,主库上被误删的数据,可以在备库上找回来。延迟时间可以自定义设置,超过延迟时间,则无法找回误删的数据。下面通过一个案例来了解 pg 延迟复制的用法。
环境:
主库:192.168.56.200
备库:192.168.56.201
数据库版本:pg 14.3
一、初始化并启动主库:
cd ~/app/pg14/bin/
./initdb -D ~/data/pg14/
vim ~/data/pg14/postgresql.conf
listen_addresses = '*'
vim ~/data/pg14/pg_hba.conf
host replication all 192.0.0.0/8 trust
host all all 192.0.0.0/8 trust
./pg_ctl -D ~/data/pg14/ start
二、构建备库
cd ~/app/pg14/bin/
./pg_basebackup -h 192.168.56.200 -p 5432 -X stream -C -S slave_slot -R -D ~/data/pg14
chmod 700 ~/data/pg14/
./pg_ctl -D ~/data/pg14/ start
三、确认主备复制搭建完成
在主库执行:
select * from pg_stat_replication;
select * from pg_replication_slots;
四、设置延迟复制
在备库修改延迟复制参数:recovery_min_apply_delay
alter system set recovery_min_apply_delay=60000;
select pg_reload_conf();
show recovery_min_apply_delay;
五、验证延迟复制
主库插入数据,在备库不能立即查到。等待1分钟之后才可以查到。