我在两个postgres实例之间设置了一对(逻辑上的)复制表。所有SELECT, INSERT, UPDATE, DELETE事务都按预期复制。
我的用例是从逻辑转储文件中恢复/追加几千行(自定义格式,COPY还是INSERT?)
TRUNCATE未被复制…在我的理解中(这也依赖于其他商业数据库供应商如何做到这一点),因为它绕过了复制机制所需的事务日志(如果逻辑复制依赖于WAL段,这将是另一个问题?)
由于我找不到任何关于它的文档,我想知道是否:
- COPY绕过事务日志(WAL)?
- COPY对逻辑复制有任何限制,因此实际上在复制环境中强制使用insert ?
注:如果我把事情弄混了,我很抱歉,我真的很想把这些话题弄清楚,以便更好地理解它们是如何协同工作的
有几件事需要纠正:
-
逻辑复制支持
TRUNCATE
:支持复制
TRUNCATE
命令在v11
中引入 -
既非
COPY
也非TRUNCATE
旁路WAL -
COPY
数据一直使用逻辑复制进行复制,就像所有其他数据修改语句一样