2013-10-05 25 views
0

我有pgpool的配置:「主機-1」主機和「主機-2」從機,如果「主機-1」關閉,pgpool正確地推動「主機-2」成爲主機;但是如果「Host-1」返回,pgpool不知道這一點,並且如果「Host-2」關閉,即使「Host-1」爲「是」,pgpool也不會促使「主機-1」成爲主設備線上。 我啓用了health_check,但它看起來完全沒用,因爲「Host-1」的狀態(變成up後)總是3 =「Node is down」。pgpool-II:是否有可能促使一個節點掌握多次?

這是命令 「秀pool_nodes」 的事件時的輸出:

- >最初的情況: 「主機-1」 UP(主) 「主機2」 UP(從)

node_id | hostname | port | status | lb_weight | role 
---------+----------+------+--------+-----------+-------- 
0  | Host-1 | 5432 | 2  | nan  | master 
1  | Host-2 | 5432 | 1  | nan  | slave 

- >節點0下降: 「主機-1」 DOWN 「主機2」 UP

node_id | hostname | port | status | lb_weight | role 
---------+----------+------+--------+-----------+-------- 
0  | Host-1 | 5432 | 3  | nan  | slave 
1  | Host-2 | 5432 | 2  | nan  | master 

- >節點0返回起來: 「主機1」 UP 「主機2」 UP

node_id | hostname | port | status | lb_weight | role 
---------+----------+------+--------+-----------+-------- 
0  | Host-1 | 5432 | 3  | nan  | slave 
1  | Host-2 | 5432 | 2  | nan  | master 

注意到的但是 「主機-1」 是3,這意味着狀態 「節點是向下」

- >節點1下降: 「主機-1」 UP 「主機2」 DOWN:在這一點我不能連接到數據庫,即使節點0已啓動並運行!

我要做些什麼來允許pgpool來提升主節點0的時間? 如果是有用的,這些都是部分「後端連接設置」和我pgpool.conf的「健康檢查」:

# - Backend Connection Settings - 

backend_hostname0 = 'Host-1' 
            # Host name or IP address to connect to for backend 0 
backend_port0 = 5432 
            # Port number for backend 0 
#backend_weight0 = 1 
            # Weight for backend 0 (only in load balancing mode) 
#backend_data_directory0 = '/data' 
            # Data directory for backend 0 
backend_flag0 = 'ALLOW_TO_FAILOVER' 
            # Controls various backend behavior 
            # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER 

backend_hostname1 = 'Host-2' 
            # Host name or IP address to connect to for backend 0 
backend_port1 = 5432 
            # Port number for backend 0 
#backend_weight1 = 1 
            # Weight for backend 0 (only in load balancing mode) 
#backend_data_directory1 = '/data' 
            # Data directory for backend 0 
backend_flag1 = 'ALLOW_TO_FAILOVER' 
            # Controls various backend behavior 
            # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER 

#------------------------------------------------------------------------------ 
# HEALTH CHECK 
#------------------------------------------------------------------------------ 

health_check_period = 10 
            # Health check period 
            # Disabled (0) by default 
health_check_timeout = 20 
            # Health check timeout 
            # 0 means no timeout 
health_check_user = 'admin' 
            # Health check user 
health_check_password = '12345' 
            # Password for health check user 
health_check_max_retries = 10 
            # Maximum number of times to retry a failed health check before giving up. 
health_check_retry_delay = 1 
            # Amount of time to wait (in seconds) between retries. 

回答

0

你必須把從節點可以促進前。這意味着,在你的情況下,使用Slony完全故障轉移並重新構建一個新的Slave作爲Master。

基本問題是寫入新主節點的寫入操作必須先複製到舊主節點,然後才能恢復。這首先是一個問題。在你確認Slony正在工作並且一切都被複制之後,你可以排除你的pgpool端的問題,但是直到那時(然後你可能需要重新連接到PGPool)。在PGPool處於主/從模式下,PGPool對於您正在使用的任何其他複製系統是次要的。

+0

這與Slony沒有任何關係。一旦複製重新建立,pgpool將不會注意到 - 但必須*告訴*節點已啓動。正如@ Ochko的答案所表明的那樣,使用「附加」來完成此操作 - 即使它看起來已附加,也必須「重新附加」。今晚在pgpool服務器上看到了這一點,並且令人頭疼。 –