使用 PostgreSQL 数据库 WAL 日志文件

概览

Datastream 使用 PostgreSQL WAL(预写式日志)事务日志来读取 PostgreSQL 流。日志存储在数据库服务器上的 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