Postgresql

為什麼使用 synchronous_standby_names = ‘barman_receive_wal’ 會導致數據庫異常?

  • October 6, 2020

使用PostgreSQL文件中barmansynchronous_standby_names特性postgresql.conf

synchronous_standby_names = 'barman_receive_wal'

不能做這些操作:

  • 創建使用者(掛起)
  • createdb(掛起)
  • repmgr如果用於複製,則無法將數據保存在主數據庫中

他們的主要配置是

max_wal_senders = 10
max_replication_slots = 10
shared_preload_libraries = 'repmgr'
wal_level = 'replica'
archive_mode = on
archive_command = 'rsync -a %p barman@backup_server:/var/lib/barman/mydb/incoming/%f'
synchronous_standby_names = 'barman_receive_wal'

如果synchronous_standby_names從此配置中刪除,它工作得很好。

我看到你已經設置了 PostgreSQL 來將 WAL 文件推送到barmanvia archive_command-barman也設置為WAL 流式傳輸?如果不是這種情況,則不會有具有該名稱的同步備用數據庫,barman_receive_wal因此對主數據庫的任何寫入都不會成功,因為 PostgreSQL 正在等待永遠不會到達的備用送出確認。

引用自:https://dba.stackexchange.com/questions/276452