问题描述
我在 Postgres 10.3 逻辑复制中遇到以下错误。
设置
- 在 master 中,postgresql 使用 12.3
- 逻辑上,postgres 10.3
日志
2021-03-22 13:06:57.332 IST @ 25929 LOG: checkpoints are occurring too frequently (22 seconds apart)
2021-03-22 13:06:57.332 IST @ 25929 HINT: Consider increasing the configuration parameter "max_wal_size".
2021-03-22 14:34:21.263 IST @ 21461 ERROR: invalid logical replication message type "T"
2021-03-22 14:34:21.315 IST @ 3184 LOG: logical replication apply worker for subscription "elk_subscription_133" has started
2021-03-22 14:34:21.367 IST @ 3184 ERROR: invalid logical replication message type "T"
2021-03-22 14:34:21.369 IST @ 25921 LOG: worker process: logical replication worker for subscription 84627 (PID 3184) exited with exit code 1
2021-03-22 14:34:22.259 IST @ 25921 LOG: worker process: logical replication worker for subscription 84627 (PID 21461) exited with exit code 1
2021-03-22 14:34:27.281 IST @ 3187 LOG: logical replication apply worker for subscription "elk_subscription_133" has started
2021-03-22 14:34:27.311 IST @ 3187 ERROR: invalid logical replication message type "T"
2021-03-22 14:34:27.313 IST @ 25921 LOG: worker process: logical replication worker for subscription 84627 (PID 3187) exited with exit code 1
2021-03-22 14:34:32.336 IST @ 3188 LOG: logical replication apply worker for subscription "elk_subscription_133" has started
2021-03-22 14:34:32.362 IST @ 3188 ERROR: invalid logical replication message type "T"
解决方法
The documentation 描述消息 T
:
截断
Byte1('T')
将消息标识为截断消息。
在 v11 中添加了对 TRUNCATE
的支持,因此主服务器必须是 v11 或更高版本。
您必须从发布中删除表、刷新订阅、手动截断表、将其添加到发布中并再次刷新订阅。
避免 TRUNCATE
并更改发布:
ALTER PUBLICATION name SET (publish = 'insert,update,delete');