PostgreSQL 之 Pgpool概述
?作者:瀚高PG實驗室 (Highgo PG Lab)
Pgpool-II簡介
1.相當于中間件,位于應用程序和PG服務端之間;
2.提供連接池、負載均衡、自動故障切換等功能,負載均衡只針對讀操作,寫操作只發生在主節點上;
3.Pgpool-II自身也可以配置為主從結構,避免單點故障,對外提供虛擬IP地址,當主節點故障后,從節點提升為新的主節點并接管虛擬IP;
Pgpool-II體系結構
?
Pgpool的下載地址
Downloads - pgpool Wiki
Pgpool-II四種模式(O 意味著“可用”, X 意味著“不可用)
?
Pgpool-II主要配置文件
| 配置文件 | 用途 |
| pcp.conf ???? | 用于管理、查看節點信息,如加入新節點。該文件主要是存儲用戶名及md5形式的密碼 ???????????? |
| pgpool.conf ? | 用于設置pgpool的模式,主次數據庫的相關信息等 ??????????????????????????????? |
| pool_hba.conf | 用于認證用戶登錄方式,如客戶端IP限制等,類似于postgresql的pg_hba.conf文件 ?????????????? |
| pool_passwd ? | 用于保存相應客戶端登錄帳號名及md5密碼 ?????????????????????????????????????????????? |
Pgpool-II主要的腳本文件
以下腳本文件都會在pgpool.conf配置文件中指定路徑
1)failover腳本 -->failover.sh ?#完成主備庫角色的切換 ,主要有兩種方式,推薦使用方式 pg_ctl promote命令。
2)Online Recovery腳本-->basebackup.sh 和 pgpool_remote_start
basebackup.sh 主要是以在線備份恢復的方式重新構建備庫
pgpool_remote_start 執行數據庫啟動命令
Pgpool的安裝參考
Installation of Pgpool-II
啟動和關閉pgpool
1)啟動命令
pgpool ????????????##直接啟動,不輸出調試信息
pgpool啟動在后臺,開啟debug模式,debug日志輸出到/tmp/pgpool.log。
pgpool -n -d > /tmp/pgpool.log 2>&1 &
2) 關閉命令
pgpool [-m {s[mart]|f[ast]|i[mmediate]}] stop
stop有三個模式:"smart", "fast", "immediate"
smart ??????等待客戶端斷開后關閉
fast ???????不等待客戶端斷開,立刻關閉
immediate ??等同于fast模式
注意:
pgpool的啟動和關閉順序,啟動時先主后備,關閉時先備后主。
如果pgpool沒有正常關閉,下次啟動可能會異常。
通過Pgpool訪問數據庫示例
啟動pgpool后,使用端口9999和VIP地址連接數據庫
psql -h 192.168.137.200 -p 9999 -d testdb
psql (9.5.7)
Type "help" for help.
psql -p 9999 d testdb -c “show pool_nodes;”
?node_id | hostname | port | status | lb_weight | ?role ??| select_cnt | load_balance_node | replication_delay
---------+----------+------+--------+-----------+---------+------------+-------------------+-------------------
?0 ??????| db1 ?????| 1921 | up ????| 0.500000 ?| primary | 0 ?????????| false ????????????| 0
?1 ??????| db2 ?????| 1921 | up ????| 0.500000 ?| standby | 0 ?????????| true ?????????????| 0
Pgpool-II的其他管理命令
1)show命令
show pool_nodes; ??#顯示所有已配置節點的列表,以pgpool鏈接數據庫后執行
show pool_status; ???#顯示Pgpool-II配置參數的當前值
show pool_version; ??#顯示Pgpool-II版本信息
show pool_processes; ?#顯示所有Pgpool-II進程的列表
show pool_pools; ???????#顯示Pgpool-II連接池列表
2)pcp管理命令列表
| 命令名稱 | 作用 |
| pcp_attach_node | 為pgpool-II關聯一個節點 |
| pcp_detach_node | 從pgpool-II脫離一個節點 |
| pcp_node_count | 顯示數據庫節點的總數 |
| pcp_node_info | 顯示指定的節點信息 |
| pcp_pool_status | 顯示pgpool.conf中定義的參數值 |
| pcp_proc_count | 顯示Pgpool-II子進程ID的列表 |
| pcp_proc_info | 顯示Pgpool-II子進程ID的信息。 |
| pcp_promote_node | 指定新節點作為Pgpool-II的主節點 |
| pcp_recovery_node | 在線恢復一個節點 |
| pcp_stop_pgpool | 停止pgpool-II |
| pcp_watchdog_info | 顯示Pgpool-II的watchdog狀態 |
pcp命令示例:
pcp_node_count ????#顯示數據庫節點的總數
pcp_node_info [-h db1 -U postgres] 0 ??#顯示指定的節點信息
pcp_watchdog_info -h db1 -U postgres ??#顯示Pgpool-II的watchdog狀態
pcp_pool_status -h db1 -U postgres |more ?#顯示pgpool.conf中定義的參數值
pcp_detach_node -n 1 #將指定的節點1從Pgpool-II中分離出來
pcp_attach_node -n 1 ?#將指定節點附加到Pgpool-II
測試數據庫failover故障轉移(目標是業務訪問的連續性不受影響!)
1)模擬備機故障
?a.手動關掉備節點數據庫
?b.手動關閉備節點服務器
2)模擬主機故障
?a.手動關掉主節點數據庫
?b.手動關閉主節點服務器
3)使用pcp_recovery_node恢復節點1
pcp_recovery_node -n 0 -d > /tmp/reco.log ???#在正常主節點執行恢復備節點
總結
以上是生活随笔為你收集整理的PostgreSQL 之 Pgpool概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库update(动态更新)-SqlS
- 下一篇: A D 20:基于S T M 32的DD