【问题标题】:postgresql disable DELETE on replication serverspostgresql 在复制服务器上禁用 DELETE
【发布时间】:2021-03-04 06:38:45
【问题描述】:

好的,简短的总结:出于安全考虑,我们希望禁用复制实例上的删除功能。

现在,因为这些实例是只读的,所以我们不能撤销对表的 DELETE 命令,也不能创建对 DELETE 不执行任何操作的规则。

是否有其他方法可以强制复制服务器不服从主服务器的删除命令?

【问题讨论】:

  • 没有。考虑一下如果删除的行的值稍后重新插入或更新,那么具有唯一索引的表会发生什么——它将在主数据库上工作而在副本上失败。那是不行的。
  • 我不介意它是否会导致复制服务器崩溃——这就是我的意图。就删除记录而言,主服务器不应该能够改变从服务器。如果主服务器尝试删除,从服务器崩溃/不服从。它仅用作故障保险,我打算仅用于此目的。
  • 如果副本是只读的,那么无论是否“允许”,如何删除?你会做的就是失败并出现不同的错误?
  • 只读,因为它从主服务器获取所有约束。

标签: postgresql database-replication master-slave


【解决方案1】:

流式(物理)复制无法做到这一点。

但是,您可以使用逻辑复制从复制中排除删除。但是您将负责自己清除任何复制冲突,因为任何此类冲突都会停止复制。

【讨论】:

  • 谢谢。这似乎是我正在寻找的。我假设这可以同步完成?您会推荐我查看任何文档吗?
  • 似乎我们可以在主服务器上设置要中继的内容的发布标志(INSERT、UPDATE、DELETE),但我们不能告诉从服务器不服从/不服从这一点。也就是说,如果主服务器突然改变它的发布规则,即从(publish= 'insert) 变为(publish = 'insert', 'delete'),从服务器就无从防卫了从这个变化...?
  • 我想我们可以让一切变得更加困难,并复制复制服务器(#2),只发布插入,这样,只有从服务器 #1 受到影响。
  • 是的,这是由出版物控制的。是的,您可以进行同步逻辑复制,但通常需要注意:1)节点之间的网络延迟很短 2)预计写入性能会急剧下降 3)如果您的同步备用服务器少于两台,您的整体可用性将会降低.
猜你喜欢
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
相关资源
最近更新 更多