postgreSQL pgpool-II
pgpool-II
源碼下載地址:
https://pgpool.net/mediawiki/index.php/Downloads
https://www.cnblogs.com/yickel/p/11161915.html
https://blog.csdn.net/silenceray/article/details/53760916
編譯依賴 zlib* readline*
1介紹
pgpool-II 是一個位于 PostgreSQL 服務器和 PostgreSQL 數(shù)據(jù)庫客戶端之間的中間件,它提供以下功能:
連接池
pgpool-II 保持已經(jīng)連接到 PostgreSQL 服務器的連接, 并在使用相同參數(shù)(例如:用戶名,數(shù)據(jù)庫,協(xié)議版本) 連接進來時重用它們。 它減少了連接開銷,并增加了系統(tǒng)的總體吞吐量。
復制
pgpool-II 可以管理多個 PostgreSQL 服務器。 激活復制功能并使在2臺或者更多 PostgreSQL 節(jié)點中建立一個實時備份成為可能, 這樣,如果其中一臺節(jié)點失效,服務可以不被中斷繼續(xù)運行。
負載均衡
如果數(shù)據(jù)庫進行了復制(可能運行在復制模式或者主備模式下), 則在任何一臺服務器中執(zhí)行一個 SELECT 查詢將返回相同的結(jié)果。 pgpool-II 利用了復制的功能以降低每臺 PostgreSQL 服務器的負載。 它通過分發(fā) SELECT 查詢到所有可用的服務器中,增強了系統(tǒng)的整體吞吐量。 在理想的情況下,讀性能應該和 PostgreSQL 服務器的數(shù)量成正比。 負載均很功能在有大量用戶同時執(zhí)行很多只讀查詢的場景中工作的效果最好。
限制超過限度的連接
PostgreSQL 會限制當前的最大連接數(shù),當?shù)竭_這個數(shù)量時,新的連接將被拒絕。 增加這個最大連接數(shù)會增加資源消耗并且對系統(tǒng)的全局性能有一定的負面影響。 pgpoo-II 也支持限制最大連接數(shù),但它的做法是將連接放入隊列,而不是立即返回一個錯誤。
pgpool-II 使用 PostgreSQL 的前后臺程序之間的協(xié)議,并且在前后臺之間傳遞消息。 因此,一個(前端的)數(shù)據(jù)庫應用程序認為 pgpool-II 就是實際的 PostgreSQL 數(shù)據(jù)庫, 而后端的服務進程則認為 pgpool-II 是它的一個客戶端。 因為 pgpool-II 對于服務器和客戶端來說是透明的, 現(xiàn)有的數(shù)據(jù)庫應用程序基本上可以不需要修改就可以使用 pgpool-II 了。
2安裝pgpool-II
2.1編譯安裝
官方文檔:
https://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#install
./configure
選項
–prefix=path pgpool-II 的二進制程序和文檔將被安裝到這個目錄。默認值為 /usr/local
–with-pgsql=path PostgreSQL 的客戶端庫安裝的頂層目錄。默認值由 pg_config 提供
–with-openssl pgpool-II 程序?qū)⑻峁?OpenSSL 支持。默認是禁用 OpenSSL 支持的。
–enable-sequence-lock 在 pgpool-II 3.0 系列中使用 insert_lock 兼容。pgpool-II 針對序列表中的一行進行加鎖。PostgreSQL 8.2 或2011年六月以后發(fā)布的版本無法使用這種加鎖方法。
–enable-table-lock
在 pgpool-II 2.2 和 2.3 系列中使用 insert_lock 兼容。pgpool-II 針對被插入的表進行加鎖。這種鎖因為和 VACUUM 沖突,已被廢棄。
–with-memcached=path pgpool-II 的二進制程序?qū)⑹褂?memcached 作為 基于內(nèi)存的查詢緩存。你必須先安裝 libmemcached。
2.2環(huán)境準備
2.2.1 免密登錄
配置密鑰使master和slave1這兩臺虛擬機的postgres用戶能免密連接
Master與slave之間的免密碼登陸:
#在master上切換至postgres用戶,生成密鑰
su postgres ssh-keygen -t rsa
#然后全輸入回車
#切換到postgres用戶:
su postgres ssh-copy-id -i /var/lib/pgsql/.ssh/id_rsa 192.168.200.91
#然后ssh 192.168.200.91 成功,實現(xiàn)master到slave的免密碼登陸。
#同理,完成對slave到mastere的免密登錄。
2.2.2 安裝postgrsql
安裝好postgresql,確保能正常使用,并且可以通過網(wǎng)絡連接。
2.3 安裝pgpool-II
1、源碼安裝
[root@localhost ~]# tar xvf pgpool-II-3.3.3.tar.gz
[root@localhost ~]#mkdir /opt/pgpool
[root@localhost ~]#chown -R postgres:postgres /opt/*
[postgres@localhost~]$ cd /opt/pgpool-II-3.3.3
[postgres@localhost pgpool-II-3.3.3]./configure??prefix=/opt/pgpool[postgres@localhostpgpool?II?3.3.3]./configure --prefix=/opt/pgpool [postgres@localhost pgpool-II-3.3.3]./configure??prefix=/opt/pgpool[postgres@localhostpgpool?II?3.3.3]make
[postgres@localhost pgpool-II-3.3.3]$make install
2、安裝pgpool_regclass 和pgpool-recovery
[postgres@localhost pgpool-II-3.3.3]$ cd /pgpool-II-3.3.3/sql/pgpool_regclass
[postgres@localhost pgpool_regclass]KaTeX parse error: Expected 'EOF', got '&' at position 6: make &?& make install …psql -f pgpool-regclass.sql template1
[postgres@localhost pgpool_regclass]$cd /pgpool-II-3.3.3/sql/pgpool-recovery
[postgres@localhost pgpool-recovery] KaTeX parse error: Expected 'EOF', got '&' at position 6: make &?& make install …psql -f pgpool-recovery.sql template1
3、建立inert_lock表
[postgres@localhost pgpool-recovery]cd/pgpool?II?3.3.3/sql/[postgres@localhostsql]cd /pgpool-II-3.3.3/sql/ [postgres@localhost sql]cd/pgpool?II?3.3.3/sql/[postgres@localhostsql]psql -f insert_lock.sql template1
4、配置即使用
查看配置文件
[postgres@localhost pgpool-II-3.3.3]$ cd /opt/pgpool/etc/
[postgres@localhost etc]$ ll
total 180
-rw-r–r--. 1 postgres postgres 858 Dec 19 13:28 pcp.conf.sample
-rw-r–r--. 1 postgres postgres 30979 Dec 19 13:28 pgpool.conf.sample
-rw-r–r--. 1 postgres postgres 30669 Dec 19 13:28 pgpool.conf.sample-master-slave
-rw-r–r--. 1 postgres postgres 30651 Dec 19 13:28 pgpool.conf.sample-replication
-rw-r–r--. 1 postgres postgres 30690 Dec 19 13:28 pgpool.conf.sample-stream
-rw-r–r--. 1 postgres postgres 3200 Dec 19 13:28 pool_hba.conf.sample
-rw-rw-r–. 1 postgres postgres 43 Dec 19 13:53 pool_passwd
[postgres@localhost etc]$ cp pgpool.conf.sample pgpool.conf
[postgres@localhost etc]$ cp pcp.conf.sample pcp.conf
[postgres@localhost etc]$ pool_hba.conf.sample pool_hba.conf
pg_pool默認只接受端口的本地連接。如果想從其他主機接受連接,請設置listen_address=’’ ,相對應在pgpool.conf中配置修改如下:
listen_address=’’
port =9999
因為不是安裝在默認的“/usr/local/”目錄下的,所以要指定目錄的配置項,
pid_file_name =’/opt/pgpool/run/pgpool.pid’
創(chuàng)建相對應目錄的命令
[postgres@localhost etc]KaTeX parse error: Expected 'EOF', got '#' at position 43: …據(jù)庫,pgpool.conf #?- Backend Conne…pg_md5 -m -p -u postgres pool_passwd
passwd:
這樣就生成了pool_passwd文件,使用cat查看文件內(nèi)容:
postgres:md5279d84d3239474da07235e5a6555c73b
啟動pgpool
[postgres@localhost etc]pgpool如果想讓pgpool在前臺運行,可以加“?n”參數(shù)[postgres@localhostetc]pgpool 如果想讓pgpool在前臺運行,可以加“-n”參數(shù) [postgres@localhost etc]pgpool如果想讓pgpool在前臺運行,可以加“?n”參數(shù)[postgres@localhostetc]pgpool -n
如果想讓日志打印到一個文件。使用一下命令
[postgres@localhost etc]KaTeX parse error: Expected 'EOF', got '&' at position 30: …p/pgpool.log 2>&?1 & 如果想打印調(diào)度信息,加…pgpool -n -d > /tmp/pgpool.log 2>&1 &
停止pgpool
[postgres@localhost etc]pgpoolstop也可以加上參數(shù)[postgres@localhostetc]pgpool stop 也可以加上參數(shù) [postgres@localhost etc]pgpoolstop也可以加上參數(shù)[postgres@localhostetc]pgpool -m fast stop
5、復制和負載均衡的示例
在pgpool.conf中配置以下內(nèi)容:
replication_mode = true
load_balance_mode = true
backend_hostname0 = ‘192.168.200.90’
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = ‘/opt/pgsql/data’
backend_flag0 = ‘ALLOW_TO_FAILOVER’
backend_hostname1 = ‘192.168.200.91’
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = ‘/opt/pgsql/data’
backend_flag1 = ‘ALLOW_TO_FAILOVER’
啟動pgpool
pgpool -f /opt/pgpool/etc/pgpool.conf
在data1上連接pgpool的端口9999,然后創(chuàng)建一張表。并插入數(shù)據(jù)
[postgres@localhost etc]$ psql -h 192.168.200.90 -d postgres -p 9999 -U postgres
psql (9.4.4)
Type “help” for help.
postgres=# \d
List of relations
Schema | Name | Type | Owner
----------------±-----±-----±-------
oracle_catalog | dual | view | postgres
(1 row)
postgres=# create table aaa (a int);
CREATE TABLE
highgo=# \d
List of relations
Schema | Name | Type | Owner
----------------±-----±------±-------
oracle_catalog | dual | view | postgres
public | aaa | table | postgres
(2 rows)
postgres=# insert into aaa values (1);
INSERT 0 1
postgres=# insert into aaa values (2);
INSERT 0 1
postgres=# insert into aaa values (3);
INSERT 0 1
postgres=# select * from aaa ;
a
1
2
3
(3 rows)
在data2上可以看到,表和數(shù)據(jù)都弄好了,而且數(shù)據(jù)完全一樣
[postgres@localhost data]$ psql
Password:
psql (9.4.4)
Type “help” for help.
postgres=# \d
List of relations
Schema | Name | Type | Owner
----------------±-----±------±-------
oracle_catalog | dual | view | postgres
public | aaa | table | postgres
(2 rows)
postgres=# select * from aaa ;
a
1
2
3
(3 rows)
虛擬IP+健康檢查watchdog
pgpool有四個主要的配置文件,分別是
pcp.conf 用于管理查、看節(jié)點信息,如加入新節(jié)點。該文件主要是存儲用戶名及md5形式的密碼。
pgpool.conf 用于設置pgpool的模式,主次數(shù)據(jù)庫的相關(guān)信息等。
pool_hba.conf 用于認證用戶登錄方式,如客戶端IP限制等,類似于postgresql的pg_hba.conf文件。
pool_passwd 用于保存相應客戶端登錄帳號名及md5密碼。
1、 配置pgpool.conf
listen_addresses = ‘*’ # rtm用于pgpool監(jiān)聽地址,控制哪些地址可以通過pgpool 連接,*表示接受所有連接
port = 9999 # rtm pgpool 監(jiān)聽的端口
pcp_listen_addresses = ‘*’ # rtm
pcp_port = 9898 # rtm
backend_hostname0 = ‘10.10.10.1’ # rtm 配置后端postgreSQL 數(shù)據(jù)庫地址,此處為主庫
backend_port0 = 5432 # rtm 后端postgreSQL 數(shù)據(jù)庫端口
backend_weight0 = 1 # rtm 權(quán)重,用于負載均衡
backend_data_directory0 = ‘/pgdata/ha/masterdata’ # rtm 后端postgreSQL 數(shù)據(jù)庫實例目錄
backend_flag0 = ‘ALLOW_TO_FAILOVER’ # rtm 允許故障自動切換
backend_hostname1 = ‘10.10.10.2’ # rtm 此處為備庫1數(shù)據(jù)庫地址
backend_port1 = 5432 # rtm
backend_weight1 = 1 # rtm
backend_data_directory1 = ‘/pgdata/ha/slavedata’ # rtm
backend_flag1 = ‘ALLOW_TO_FAILOVER’ # rtm
backend_hostname2 = ‘10.10.10.3’ # rtm 此處為備庫2數(shù)據(jù)庫地址
backend_port2 = 5432 # rtm
backend_weight2 = 1 # rtm
backend_data_directory2 = ‘/pgdata/ha/slavedata’ # rtm
backend_flag2 = ‘ALLOW_TO_FAILOVER’ # rtm
enable_pool_hba = on # rtm 開啟pgpool認證,需要通過 pool_passwd 文件對連接到數(shù)據(jù)庫的用戶進行md5認證
pool_passwd = ‘pool_passwd’ # rtm 認證文件
log_destination = ‘stderr,syslog’ # rtm 日志級別,標注錯誤輸出和系統(tǒng)日志級別
log_line_prefix = '%t: pid %p: ’ # rtm 日志輸出格式
log_connections = on # rtm 開啟日志
log_hostname = on # rtm 打印主機名稱
#log_statement = all # rtm 取消注釋則打印sql 語句
#log_per_node_statement = on # rtm 取消注釋則開啟打印sql負載均衡日志,記錄sql負載到每個節(jié)點的執(zhí)行情況
#client_min_messages = log # rtm 日志
#log_min_messages = info # rtm # 日志級別
pid_file_name = ‘/opt/pgpool-3/run/pgpool/pgpool.pid’ # rtm pgpool的運行目錄,若不存在則先創(chuàng)建
logdir = ‘/opt/pgpool-3/log/pgpool’ # rtm 指定日志輸出的目錄
replication_mode = off # rtm 關(guān)閉pgpool的復制模式
load_balance_mode = on # rtm 開啟負載均衡
master_slave_mode = on # rtm 開啟主從模式
master_slave_sub_mode = ‘stream’ # rtm設置主從為流復制模式
sr_check_period = 10 # rtm 流復制的延遲檢測的時間間隔
sr_check_user = ‘pgcheck’ # rtm Specifiy replication delay check user and password,該用戶需要在pg數(shù)據(jù)庫中存在,且擁有查詢權(quán)限
sr_check_password = ‘123456’ # rtm Pgpool-II 4.0開始,如果這些參數(shù)為空,Pgpool-II將首先嘗試從sr_check_password文件中獲取指定用戶的密碼
sr_check_database = ‘postgres’ # rtm 流復制檢查的數(shù)據(jù)庫名稱
delay_threshold = 10000000 # rtm 設置允許主備流復制最大延遲字節(jié)數(shù),單位為kb。定義slave庫能夠接收讀請求所允許的最大延遲時間。比如:設置為1024,slave庫只允許滯后master庫1KB 的XLOG;否則,slave庫將不會接收到請求。
health_check_period = 10 # rtm pg數(shù)據(jù)庫檢查檢查間隔時間。定義系統(tǒng)應該多久檢查一次哪些XLOG位置,以弄清楚是否是延遲太高或太低。
health_check_timeout = 20 # rtm
health_check_user = ‘pgcheck’ # rtm 健康檢查用戶,需pg數(shù)據(jù)庫中存在。連接到primary來檢查當前XLOG的位置的用戶名。
health_check_password = ‘123456’ # rtm 設置方法同sr_check_password
health_check_database = ‘postgres’ # rtm 健康檢查的數(shù)據(jù)庫名稱
health_check_max_retries = 3 # rtm 健康檢查最大重試次數(shù)
health_check_retry_delay = 3 # rtm 重試次數(shù)間隔
failover_command = ‘/etc/pgpool-II/failover.sh %d %h %p %D %m %H %M %P %r %R’ # rtm 在failover_command參數(shù)中指定failover后需要執(zhí)行的failover.sh腳本
follow_master_command = ‘/etc/pgpool-II/follow_master.sh %d %h %p %D %m %M %H %P %r %R’ # rtm如果使用3臺PostgreSQL服務器,需要在主節(jié)點切換后指定follow_master_command運行,如果是兩PostgreSQL服務器,則不需要設置 follow_master_command。
fail_over_on_backend_error = off # rtm 如果設置了health_check_max_retries次數(shù),則關(guān)閉該參數(shù)
use_watchdog = on # rtm 開啟看門狗,用于監(jiān)控pgpool 集群健康狀態(tài)
wd_hostname = ‘10.10.10.1’ # rtm 本地看門狗地址,配置為當前庫的IP
wd_port = 9000 # rtm
wd_priority = 1 # rtm 看門狗優(yōu)先級,用于pgpool 集群中master選舉
delegate_IP = ‘10.10.10.101’ # rtm 在三個庫上指定接受客戶端連接的虛擬IP地址。
if_up_cmd = ‘ip addr add KaTeX parse error: Expected group after '_' at position 4: _IP_?/24 dev eth0 label eth0:0’ # rtm 配置虛擬IP到本地網(wǎng)卡
if_down_cmd = ‘ip addr del KaTeX parse error: Expected group after '_' at position 4: _IP_?/24 dev eth0’ # rtm
wd_lifecheck_method = ‘heartbeat’ # rtm 看門狗健康檢測方法
wd_heartbeat_port = 9694 # rtm 看門狗心跳端口,用于pgpool 集群健康狀態(tài)通信
wd_heartbeat_keepalive = 2 # rtm 看門狗心跳檢測間隔
wd_heartbeat_deadtime = 30 # rtm
heartbeat_destination0 = ‘10.10.10.2’ # rtm 配置需要監(jiān)測健康心跳的IP地址,非本地地址,即互相監(jiān)控,配置對端的IP地址
heartbeat_destination_port0 = 9694 # rtm 監(jiān)聽的端口
heartbeat_device0 = ‘eth0’ # rtm 監(jiān)聽的網(wǎng)卡名稱
heartbeat_destination1 = ‘10.10.10.3’ # rtm 配置需要監(jiān)測健康心跳的IP地址,非本地地址,即互相監(jiān)控,配置對端的IP地址
heartbeat_destination_port1 = 9694 # rtm 監(jiān)聽的端口
heartbeat_device1 = ‘eth0’ # rtm
wd_life_point = 3 # rtm 生命檢測失敗后重試次數(shù)
wd_lifecheck_query = ‘SELECT 1’ # rtm 用于檢查 pgpool-II 的查詢語句。默認為“SELECT 1”。
wd_lifecheck_dbname = ‘postgres’ # rtm 檢查健康狀態(tài)的數(shù)據(jù)庫名稱
wd_lifecheck_user = ‘pgcheck’ # rtm 檢查數(shù)據(jù)庫的用戶,該用戶需要在Postgres數(shù)據(jù)庫存在,且有查詢權(quán)限
wd_lifecheck_password = ‘123456’ # rtm 看門狗健康檢查用戶密碼
other_pgpool_hostname0 = ‘10.10.10.2’ # rtm 指定被監(jiān)控的 pgpool-II 服務器的主機名
other_pgpool_port0 = 9999 # rtm 指定被監(jiān)控的 pgpool-II 服務器的端口號
other_wd_port0 = 9000 # rtm 指定 pgpool-II 服務器上的需要被監(jiān)控的看門狗的端口號
other_pgpool_hostname1 = ‘10.10.10.3’ # rtm 指定被監(jiān)控的 pgpool-II 服務器的主機名
other_pgpool_port0 = 9999 # rtm 指定被監(jiān)控的 pgpool-II 服務器的端口號
other_wd_port0 = 9000 # rtm 指定 pgpool-II 服務器上的需要被監(jiān)控的看門狗的端口號
2、 配置pool_passwd,該文件用于配置哪些用戶可以訪問pgpool。使用如下命令生成:
pg_md5 -p -m -u postgres pool_passwd //執(zhí)行后輸入密碼
通過如上命令,設置數(shù)據(jù)庫的postgre用戶名和密碼,及pgpool進行健康檢查的pgcheck用戶名和密碼。
3、 配置.pgpass。使用pgpool-II進行故障庫自動切換(failover)、或在線恢復(online recovery)(在線恢復:主庫故障后切換,原主庫恢復后變更為備庫。注意是Online recovery,而不是自動恢復,需要手工執(zhí)行命令恢復),需要能夠無密碼SSH訪問其他postgreSQL服務器。為了滿足此條件,我們需要在每個postgreSQL服務器上,在postgres用戶的home file下創(chuàng)建了.pgpass文件,并修改器文件權(quán)限為600。
[all servers]# su - postgres
[all servers]$ vi /var/lib/pgsql/.pgpass
10.10.10.1:5432:replication:repl:
10.10.10.2:5432:replication:repl:
10.10.10.3:5432:replication:repl:
[all servers]$ chmod 600 /var/lib/pgsql/.pgpass
4、 配置pcp.conf。由于pcp命令需要用戶認證,該在文件中指定配置pcp命令的pgpool用戶的用戶名、密碼。格式:
用戶名:密碼MD5編碼
注:密碼的MD5編碼看通過“pg_md5” 密碼命令生成5、 配置pcp的.pcppass。需要follow_master_command腳本情況下,由于此腳本必須在不輸入密碼的情況下執(zhí)行pcp命令,所以我們在Pgpool-II用戶(root用戶)的home directory下創(chuàng)建.pcppass:
# echo ‘localhost:9898:pgpool:pgpool’ > ~/.pcppass
# chmod 600 ~/.pcppass
6、 配置pool_hba.conf認證文件,類似于PostgreSQL的pg_hba.conf文件。
步驟四:備庫配置pgpool-II
類同主庫配置pgpool-II步驟:
1、 配置pgpool.conf。類同主庫pgpool-II配置。以備庫1配置pgpool.conf為例:修改配置中主庫、備庫2的IP:
use_watchdog = on # rtm 開啟看門狗,用于監(jiān)控pgpool 集群健康狀態(tài)
wd_hostname = ‘10.10.10.2’ # rtm 本地看門狗地址,配置為當前庫地址
wd_port = 9000 # rtm
wd_priority = 1 # rtm 看門狗優(yōu)先級,用于pgpool 集群中master選舉
wd_lifecheck_method = ‘heartbeat’ # rtm 看門狗健康檢測方法
wd_heartbeat_port = 9694 # rtm 看門狗心跳端口,用于pgpool 集群健康狀態(tài)通信
wd_heartbeat_keepalive = 2 # rtm 看門狗心跳檢測間隔
wd_heartbeat_deadtime = 30 # rtm
heartbeat_destination0 = ‘10.10.10.1’ # rtm 配置需要監(jiān)測健康心跳的IP地址,非本地地址,即互相監(jiān)控,配置對端的IP地址
heartbeat_destination_port0 = 9694 # rtm 監(jiān)聽的端口
heartbeat_device0 = ‘eth0’ # rtm 監(jiān)聽的網(wǎng)卡名稱
heartbeat_destination1 = ‘10.10.10.3’ # rtm 配置需要監(jiān)測健康心跳的IP地址,非本地地址,即互相監(jiān)控,配置對端的IP地址
other_pgpool_hostname0 = ‘10.10.10.1’ # rtm 指定被監(jiān)控的 pgpool-II 服務器的主機名
other_pgpool_port0 = 9999 # rtm 指定被監(jiān)控的 pgpool-II 服務器的端口號
other_wd_port0 = 9000 # rtm 指定 pgpool-II 服務器上的需要被監(jiān)控的看門狗的端口號
other_pgpool_hostname1 = ‘10.10.10.3’ # rtm 指定被監(jiān)控的 pgpool-II 服務器的主機名
other_pgpool_port0 = 9999 # rtm 指定被監(jiān)控的 pgpool-II 服務器的端口號
other_wd_port0 = 9000 # rtm 指定 pgpool-II 服務器上的需要被監(jiān)控的看門狗的端口號
2、 其他部署類同主庫配置。
步驟:啟動pgpool-II
注:
啟動pgpool-II前,必須先啟動PostgreSQL;同理,停止PostgreSQL前,必須先停止pgpool-II.
上面步驟中,配置的三個庫的優(yōu)先級一致(backend_weight)。所以Pgpool-II節(jié)點角色取決于Pgpool-II啟動的先后順序
分別在主庫、備庫1、備庫2執(zhí)行如下命令啟動pgpool-II: pgpool -n -d > pgpool.log 2>&1 &
1、 pgpool-II先啟動的庫,如下打印
顯示角色是主庫。看門狗向另外兩個庫發(fā)送心跳,也接收另外另個庫的響應。
DEBUG: STATE MACHINE INVOKED WITH EVENT = STATE CHANGED Current State = MASTER
DEBUG: watchdog heartbeat: send heartbeat signal to 10.10.10.2:9694
DEBUG: watchdog heartbeat: send heartbeat signal to 10.10.10.3:9694
DEBUG: received heartbeat signal from 。。。。
2、 pgpool-II后啟動的庫,如下打印
顯示角色是備庫。看門狗向另外兩個庫發(fā)送心跳,也接收另外另個庫的響應。
DEBUG: STATE MACHINE INVOKED WITH EVENT = PACKET RECEIVED Current State = STANDBY
DEBUG: watchdog heartbeat: send heartbeat signal to 10.10.10.1:9694
DEBUG: watchdog heartbeat: send heartbeat signal to 10.10.10.3:9694
DEBUG: received heartbeat signal from “10.10.10.1(10.10.10.1):9999” node:10.10.10.1:9999 Linux CLWDB3
DEBUG: received heartbeat signal from “10.10.10.3(10.10.10.3):9999” node:Not_Set
3、 查看VIP
在主庫上執(zhí)行:#ip addr,看到10.10.10.101虛擬IP綁定在主庫的eth0上。
步驟六:查看pgpool集群狀態(tài)
1、 通過pgpool命令查看pgpool中庫狀態(tài)(IP為pgpool的VIP)
執(zhí)行:psql -h 10.10.56.87 -p 9999 -U postgres pgpool
其他命令:
查看pgpool配置:# show pool_status;
查看pgpool連接池:# show pool_pools;
2、 通過pcp管理pgpool。Pcp是管理pgpool的linux命令。
(1) 查看pgpool集群狀態(tài)(IP為pgpool的VIP)
# pcp_watchdog_info -h 10.10.10.101 -p 9898 -U pgcheck -v
可以看到集群Node的IP、Port、狀態(tài),虛擬IP綁定的Node等信息。
(2) 查看pgpool集群Node數(shù)量(IP為pgpool的VIP)
# pcp_node_count -h 10.10.10.101 -p 9898 -U pgcheck -v
(3) 查看pgpool集群配置(IP為pgpool的VIP)
# pcp_pool_status -h 10.10.10.101 -p 9898 -U pgcheck -v
(4) 查看pgpool processer進程狀態(tài)連接池(IP為pgpool的VIP)
#pcp_proc_count -h 10.10.10.101 -p 9898 -U pgcheck -v
總結(jié)
以上是生活随笔為你收集整理的postgreSQL pgpool-II的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qemu转换虚拟机为镜像(VMDK转IM
- 下一篇: Mysql 计算时间差、按条件求和、计算