![当没有复制时,我怎样才能仍然能够写入主 postgresql?](https://linux22.com/image/788891/%E5%BD%93%E6%B2%A1%E6%9C%89%E5%A4%8D%E5%88%B6%E6%97%B6%EF%BC%8C%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E4%BB%8D%E7%84%B6%E8%83%BD%E5%A4%9F%E5%86%99%E5%85%A5%E4%B8%BB%20postgresql%EF%BC%9F.png)
结果是,我的脚本reload
由于身份验证错误而无法连接到 postgresql。因此,下面的所有内容都是虚假问题postgresql。修复错误后,postgresql 允许我毫不费力地写入单独的主服务器。感谢 Nikita Kipriyanov 的帮助,但您可以忽略下面的文字。
我的目标是让主服务器在备用服务器发生故障时仍能处理写入请求。我注意到synchronous_commit =
可以手动设置off
为然后重新加载主服务器。
其他配置repmgr.conf
包括repmgr
:
use_replication_slots=yes
因此,通过请求主服务器在发生故障时为其保留 wal-log,创建的备用服务器repmgr
会这样做。事情并不像预期的那样 - 我能够将写入操作提交给主服务器,并且备用服务器能够从主服务器克隆该操作,但有一个错误 - 写入命令总是卡在这里:
postgres=# CREATE DATABASE ANYTHING;
Ctrl
直到我按下+ ,提示才再次出现,并显示D
以下几行:
^CCancel request sent
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby.
CREATE DATABASE
postgres=#
因此,每当我尝试写入主服务器时,它总是会冻结synchronous_commit = off
。(psql -c ...
也会导致 shell 冻结)这意味着这种复制设置的临时更改无法达到我的目标,即在备用服务器遇到问题时防止主服务器“罢工”!
有没有什么办法可以解决这个冻结问题?谢谢。