PostgreSQL 物理复制槽的使用(physical replication slot)

1、在主库创建物理复制槽
可以手动在主库创建物理复制槽,也可以不创建,在备库使用 pg_basebackup 创建备份时指定参数 -C -S 来创建复制槽。手动创建复制槽的 SQL 语句如下:
select * from pg_create_physical_replication_slot('slot_s1');


2、查看复制槽信息

select * from pg_replication_slots;


3、使用 pg_basebackup 创建备库

pg_basebackup -h 192.168.56.100 -p 5432 -R -C -S slot_s1 -D /data/pg/
  • -R 表示写复制相关的配置文件,指定了 -R 参数,启动备库自动创建流复制
  • -C 表示自动在主库创建复制槽,复制槽名称为 -S 指定,-C 必须与 -S 同时使用
  • -S slot_s1 参数指定复制槽名称,备份完成后会自动在 postgresql.auto.conf 文件里加上参数 primary_slot_name = 'slot_s1'


4、启动备库并在主库上查看复制槽信息

select * from pg_replication_slots;
select * from pg_stat_replication;


5、相关参数

  • max_replication_slots,表示复制槽的数量,取值范围为 0 ~ 0x3FFFF,默认值为 10, 设置为 0 表示禁用复制槽。
  • wal_level,表示 wal 级别, 可取值 minimal,replica,logical,必须大于等于 replica 级别才能使用复制槽。


注:

使用复制槽一定要做好 wal 日志的个数和大小监控,在异步复制场景下,如果备库长时间离线,会导致主库的 wal 日志一直不能清除,最终导致磁盘空间被耗尽。

文章评论

0条评论