pgpool-II 是一個(gè)中間 件,工作在PostgreSQL多服 務(wù) 器和PostgreSQL數(shù)據(jù) 庫(kù) 客 戶(hù) 端之 間。使用并行 查 詢(xún) 功能,數(shù)據(jù)可分布在多
pgpool-II 是一個(gè)中間 件,工作在PostgreSQL多服 務(wù) 器和PostgreSQL數(shù)據(jù) 庫(kù) 客 戶(hù) 端之 間。
它提供了以下功能
連 接池: pgpool -Ⅱ保存 連 接到PostgreSQL服 務(wù) 器,并重復(fù)利用具有相同屬性的新的 連 接(即用 戶(hù) 名,數(shù)據(jù) 庫(kù) , 協(xié)議 的版本),減少 連 接的開(kāi) 銷(xiāo) ,并提高了系 統(tǒng) 的整體吞吐量。復(fù)制: pgpool - II可以管理多個(gè)PostgreSQL服務(wù)器。 使用復(fù)制功能,可以 實(shí)時(shí)備份在 2個(gè)或多個(gè)物理磁 盤(pán) 上,因此即使在硬 盤(pán)出故障的時(shí)候也不用停止服務(wù)。
負(fù)載 平衡: 如果數(shù)據(jù) 庫(kù) 是復(fù)制,任何服 務(wù) 器上 執(zhí) 行一個(gè)SELECT 查 詢(xún) 將返回相同的 結(jié) 果。 pgpool -Ⅱ采用一個(gè)復(fù)制功能 優(yōu) 勢(shì) 是,以減少多個(gè)服 務(wù) 器之 間 分配上的SELECT 查 詢(xún) 每個(gè)PostgreSQL服 務(wù) 器的 負(fù)載 ,提高系 統(tǒng) 的整體吞吐量。在最好的,性能的提高比例的PostgreSQL服 務(wù) 器的數(shù)量。在同一 時(shí)間有 大量用 戶(hù) 的 查 詢(xún)的時(shí)候,負(fù)載 平衡的情況下有最佳的 執(zhí) 行。
連接超 過(guò)限制 : 有一個(gè)關(guān)于與 PostgreSQL 的最大并 發(fā)連 接數(shù)限制,最大 連接數(shù)超過(guò)后 的 連 接被拒 絕 。 設(shè) 置最大 連 接數(shù),但是增加的 資 源消耗和影響系 統(tǒng) 性能。 pgpool - II 也有 對(duì) 最大 連 接數(shù)的限制,但 額 外的 連 接將被排 隊(duì) ,而不是立即返回 錯(cuò)誤 。
并行查詢(xún) : 使用并行 查 詢(xún) 功能,數(shù)據(jù)可分布在多個(gè)服 務(wù) 器中,以便 查 詢(xún) 可以 執(zhí) 行所有服 務(wù) 器上同 時(shí) 減少 總 體 執(zhí) 行 時(shí)間 。 并行 查 詢(xún) 的工作 時(shí) 候 , 尋 找最佳的大 規(guī) 模的數(shù)據(jù)。
進(jìn)行pgpool搭建前需要配置好postgresql的流復(fù)制,操作步驟參考
一、安裝
wget ?f=pgpool-II-3.4.0.tar.gz
tar -zxvf pgpool-3.4.0.tar.gz
cd pgpool-II-3.4.0/
./configure --prefix=/usr/local/pgpool --with-pgsql=path --with-pgsql=/usr/local/pgsql
make
make install
chown postgres.postgres /usr/local/pgpool/ -R
chown postgres.postgres /usr/src/pgpool-II-3 -R
mkdir /var/run/pgpool
chown postgres.postgres /var/run/pgpool/
#切換postgres 用戶(hù)安裝一些函數(shù)
su - postgres
cd /usr/src/pgpool-II-3.4.0/src/sql/
make
make install
cd pgpool-recovery/
make install
cd ../pgpool-regclass/
make install
二、配置
cd /usr/local/pgpool/etc
cp pcp.conf.sample pcp.conf
pg_md5 postgres
e8a48653851e28c69d0506508fb27fc5
echo "postgres:e8a48653851e28c69d0506508fb27fc5" >> pcp.conf
echo "postgres:e8a48653851e28c69d0506508fb27fc5" >> pool_passwd
cp pool_hba.conf.sample pool_hba.conf
vim pool_hba.conf
host all postgres db2 md5
listen_addresses = '*' #允許所有主機(jī)監(jiān)聽(tīng)
port = 9999 #訪問(wèn)端口
backend_hostname0 = 'db1' #DBmaster ip
backend_port0 = 5432 #DBmaster postgresql 端口
backend_weight0 = 1 #權(quán)重
backend_data_directory0 = '/opt/data' #DBmaster 數(shù)據(jù)庫(kù)目錄
backend_flag0 = 'ALLOW_TO_FAILOVER' #允許切換
backend_hostname0 = 'db2'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/opt/data'
backend_flag0 = 'ALLOW_TO_FAILOVER'
enable_pool_hba = on #隨意,自由定制,,使用 pool_hba.conf 對(duì)client的驗(yàn)證
pool_passwd = 'pool_passwd' #md5驗(yàn)證文件
sr_check_user = 'postgres' #用來(lái)故障切換的用戶(hù)
failover_command = '/usr/local/pgsql/bin/failover_command.sh %d %H /tmp/trigger_file'
故障切換腳本
vim /usr/local/pgsql/bin/failover_command.sh
#! /bin/sh
# Failover command for streaming replication.
# This script assumes that DB node 0 is primary, and 1 is standby.
#
# If standby goes down, do nothing. If primary goes down, create a
# trigger file so that standby takes over primary node.
#
# Arguments: $1: failed node id. $2: new master hostname. $3: path to
# trigger file.
failed_node=$1
new_master=$2
trigger_file=$3
# Do nothing if standby goes down.
#if [ $failed_node = 1 ]; then
# exit 0;
#fi
# Create the trigger file.
/usr/bin/ssh -T $new_master /bin/touch $trigger_file
exit 0;
chmod +x /usr/local/pgsql/bin/failover_command.sh
三、調(diào)試
啟動(dòng)命令,帶有日志輸出
[postgres@db1 etc]$ pgpool -nd >/tmp/pgpool.log 2>&1 &
[postgres@db1 etc]$ netstat -ntlp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:9898 0.0.0.0:* LISTEN 16664/pgpool
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 16664/pgpool
tcp 0 0 :::22 :::* LISTEN -
tcp 0 0 ::1:25 :::* LISTEN -
tcp 0 0 :::9999 :::* LISTEN 16664/pgpool
登錄
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com