Postgresql

如何通過應用程序自動切換為 PostgreSQL 進行自動故障轉移?

  • December 6, 2019

有兩種方法可以嘗試。

方法一

使用 JDBC 連接 PostgreSQL 集群(僅限主、備 2 台伺服器):

jdbc:postgresql://192.168.0.1:5432,192.168.0.2:5432/jiradb

但失敗了:

您的 dbconfig.xml 文件的配置不正確(使用者、密碼或數據庫 URL 等)

如何從 jdbc 連接多個伺服器?

方法二

使用pgbouncerrepmgr

三台伺服器:

  • 彈跳器
  • PostgreSQL Primary (192.168.0.1) 安裝 repmgr,執行 repmgrd
  • PostgreSQL Standby (192.168.0.2) 安裝repmgr,執行repmgr

在 pgbouncer 伺服器(pgbouncer.ini)中設置配置:

[databases]
postgres = host=192.168.0.1 port=5432 dbname=postgres
postgres = host=192.168.0.2 port=5432 dbname=postgres

[pgbouncer]
listen_port = 6432
listen_addr = *
auth_type = md5
auth_file = userlist.txt
logfile = pgbouncer.log
pidfile = pgbouncer.pid
admin_users = postgres
unix_socket_dir = /tmp

當主伺服器關閉時,repmgr 可以切換到備用伺服器作為主伺服器。但是 pgbouncer 沒有自動連接第二個數據庫伺服器。為什麼?的配置設置databases不起作用。是錯誤的用法嗎?還是pgbouncer沒有這個自動切換功能?

比較JDBC 文件

為了支持簡單的連接故障轉移,可以在以逗號分隔的連接 url 中定義多個端點(主機和埠對)。驅動程序將嘗試按順序連接到它們中的每一個,直到連接成功。如果沒有成功,則拋出正常的連接異常。

連接 url 的語法是:

jdbc:postgresql://host1:port1,host2:port2/database

所以你的網址沒問題。如果 JIRA 抱怨它,那將是一個 JIRA 錯誤。

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