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

2023年 8月 15日 58.5k 0

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 日志一直不能清除,最终导致磁盘空间被耗尽。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论