PostgreSQL 复制与备份管理全解析
一、PostgreSQL 复制相关内容
- pglogical 与分区表
- 当我们将复制集定义为仅转发 INSERT 和 UPDATE 语句时,通常是为了将数据发送到某种存档系统。这类数据库往往会在数月甚至数年内积累数据,因此常采用分区表。pglogical 扩展与这种方法兼容,但存在一些注意事项。
- 在 PostgreSQL 10 引入原生分区之前,分区通常通过触发器和一系列复杂的约束来管理,以根据继承规则分配数据。使用这种方法的报告或其他数据积累系统依赖该触发器确保数据存入正确的分区。
- 为确保数据能到达正确位置,需要对触发器进行微调以使其与 pglogical 兼容。例如,如果触发器名为
pgbench_accounts_part_trig ,则需执行以下 SQL:
ALTER TABLE pgbench_accounts
ENABLE ALWAYS TRIGGER pgbench_accounts_part_trig;
- 完成此操作后,无论只有一个分区还是有数百个分区,来自 pglogical 的传入数据都能到达其适当的目的地。如果表中已有数据,在订阅阶段还需将 `synchronize_data` 设置为 `FALSE`,否则可能会出现原始数据的多个副本,这是由于基于继承的分区在主键方面存在限制。
- 上述注意事项仅适用于基于继承的分区。使