Datastream 会读取 PostgreSQL 预写式日志 (WAL),以捕获和复制源表中的行级数据更改。数据库服务器会将每个事务更改存储在 WAL 文件中。您可以配置 WAL 保留、超时和复制槽参数,并优化日志文件增长,以防止出现高流延迟和存储空间耗尽。
为 PostgreSQL WAL 文件设置配置参数
建议您对 PostgreSQL 数据库应用以下配置设置:
max_slot_wal_keep_size:设置此参数(仅适用于 PostgreSQL 13 及更高版本)以限制复制槽使用的存储空间量。这对于长时间运行的事务尤为重要,在极端情况下,这些事务可能会导致 WAL 文件大小占用整个存储空间并导致数据库崩溃。statement_timeout:将此参数设置为所选值,以减少长时间运行的事务导致的延迟。对于不支持max_slot_wal_keep_size的数据库,您还可以使用statement_timeout作为替代预防措施。wal_sender_timeout:将此参数设置为0(以停用超时)或大于或等于 10 分钟的值。
如果您计划创建 10 个以上的流,或者除计划的流数量之外,其他资源使用的逻辑复制槽数量超过 10 个,请务必修改以下参数:
max_replication_slots:增加此参数的值,具体取决于为数据库设置的复制槽数量(每个数据流需要 1 个复制槽)。您只能在服务器启动时设置max_replication_slots。max_wal_senders:增加此参数的值,使其大于max_replication_slots参数的值。您只能在启动服务器时设置max_wal_senders。
优化 WAL 日志文件
为避免在从 PostgreSQL 来源复制数据时出现数据流延迟时间过长和 WAL 日志文件大小快速增长的情况,请考虑采取以下预防措施:
- 避免执行大型长时间运行的操作,因为它们可能会显著增加 WAL 文件的大小。
- 在批量操作期间使用
UNLOGGED或TEMPORARY表。 - 检查 WAL 配置,并考虑降低检查点频率。 如需了解详情,请参阅 WAL 配置
- 检查是否存在大型
DELETE操作,并考虑将其替换为TRUNCATE操作。这样做可以显著减少 WAL 文件数据,但您需要谨慎,因为 Datastream 不会复制TRUNCATE操作。
后续步骤
- 详细了解 PostgreSQL 作为来源。
- 详细了解如何配置 PostgreSQL 源数据库。