国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

pgpool+PG流復(fù)制高可用架構(gòu)搭建

IT那活兒 / 954人閱讀
pgpool+PG流復(fù)制高可用架構(gòu)搭建

pg流復(fù)制可以是一主多從架構(gòu),類似Oracle ADG,都是采用物理復(fù)制,從庫(kù)可提供實(shí)時(shí)查詢業(yè)務(wù),流復(fù)制在不借助插件的情況下,本身并不提供自動(dòng)failover等功能。

PGPOOL是一款較流行的Postgres的數(shù)據(jù)庫(kù)中間件,提供了連接池、自動(dòng)故障轉(zhuǎn)移、負(fù)載均衡、看門狗等功能。在基于流復(fù)制架構(gòu)下,架構(gòu)圖如下(轉(zhuǎn)自官方文檔):

注:本文采用3個(gè)主機(jī),進(jìn)行一主兩從架構(gòu)部署示例。


Postgresql軟件安裝


提前安裝好Postgres數(shù)據(jù)庫(kù),并搭建好流復(fù)制架構(gòu),本文不再做描述。


Pgpool軟件安裝


pgpool最新版本為4.2.2,本文采用4.1.2版作為示例。可選用rpm或者源碼包安裝,本文采用源碼編譯的方式安裝

  • 軟件安裝
tar xvf pgpool-II-4.1.2.tar.gz
cd  pgpool-II-4.1.2
./configure --prefix=/usr/local/pgpool412  --with-openssl
make
make install

  • 插件安裝

安裝pgpool_recovery

cd pgpool-II-4.1.2/src/sql/pgpool-recovery
make
make install 
psql
c template1
create extension pgpool_recovery;

Installing pgpool-regclass
cd pgpool-II-4.1.2/src/sql/pgpool-regclass
make
make install
psql template1
CREATE EXTENSION pgpool_regclass;

Creating insert_lock table
cd pgpool-II-4.1.2/src/sql
$ psql -f insert_lock.sql template1


  • 修改PG數(shù)據(jù)庫(kù)參數(shù)文件

pgpool.pg_ctl = /usr/local/postgres/bin/pg_ctl


PGPOOL配置


  • 配置SSH等效性

ssh-keygen -t rsa -f ~/.ssh/id_rsa_pgpool
cd ~/.ssh
ssh-copy-id -i id_rsa_pgpool.pub postgres@host01
ssh-copy-id -i id_rsa_pgpool.pub postgres@host02
ssh-copy-id -i id_rsa_pgpool.pub postgres@host03

ssh postgres@host01 -i ~/.ssh/id_rsa_pgpool


  • 配置Pgpool參數(shù)

cp -p /usr/local/pgpool412/etc/pgpool.conf.sample-stream /usr/local/pgpool412/etc/pgpool.conf
##以下為所有節(jié)點(diǎn)通用配置
listen_addresses = *
pid_file_name = /usr/local/pgpool412/pgpool.pid

sr_check_user = pgpool
sr_check_password =
health_check_period = 5
health_check_timeout = 30
health_check_user = pgpool
health_check_password =
health_check_max_retries = 3
backend_hostname0 = host01
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = /pgdata
backend_flag0 = ALLOW_TO_FAILOVER

backend_hostname1 = host02
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = /pgdata
backend_flag1 = ALLOW_TO_FAILOVER

backend_hostname2 = host03
backend_port2 = 5432
backend_weight2 = 1
backend_data_directory2 = /pgdata
backend_flag2 = ALLOW_TO_FAILOVER
   
backend_application_name0 = host01
backend_application_name1 = host02
backend_application_name2 = host03

failover_command = /usr/local/pgpool412/etc/failover.sh %d %h %p %D %m %H %M %P %r %R %N %S
follow_master_command = /usr/local/pgpool412/etc/follow_master.sh %d %h %p %D %m %H %M %P %r %R


recovery_user = postgres
recovery_password =
recovery_1st_stage_command = recovery_1st_stage
enable_pool_hba = on
##看門狗通用配置
use_watchdog = on
delegate_IP = 192.168.56.5

if_cmd_path = /usr/sbin
if_up_cmd = /usr/bin/sudo /usr/sbin/ip addr add $_IP_$/24 dev enp0s3 label enp0s3:0
if_down_cmd = /usr/bin/sudo /usr/sbin/ip addr del $_IP_$/24 dev enp0s3
arping_path = /usr/sbin
arping_cmd = /usr/bin/sudo /usr/sbin/arping -U $_IP_$ -w 1 -I enp0s3

##以下不同主機(jī)分別配置

#host01
wd_hostname = host01
wd_port = 9000

#host02

wd_hostname = host02
wd_port = 9000

#host03

wd_hostname = host03
wd_port = 9000


#host01

other_pgpool_hostname0 = host02
other_pgpool_port0 = 9999
other_wd_port0 = 9000
other_pgpool_hostname1 = host03
other_pgpool_port1 = 9999
other_wd_port1 = 9000

#host02

other_pgpool_hostname0 = host01
other_pgpool_port0 = 9999
other_wd_port0 = 9000
other_pgpool_hostname1 = host03
other_pgpool_port1 = 9999
other_wd_port1 = 9000

#host03

other_pgpool_hostname0 = host01
other_pgpool_port0 = 9999
other_wd_port0 = 9000
other_pgpool_hostname1 = host02
other_pgpool_port1 = 9999
other_wd_port1 = 9000

#心跳檢測(cè)相關(guān)配置

#host01

heartbeat_destination0 = host02
heartbeat_destination_port0 = 9694
heartbeat_device0 =
heartbeat_destination1 = host03
heartbeat_destination_port1 = 9694
heartbeat_device1 =

#host02

heartbeat_destination0 = host01
heartbeat_destination_port0 = 9694
heartbeat_device0 =
heartbeat_destination1 = host03
heartbeat_destination_port1 = 9694
heartbeat_device1 =

#host03

heartbeat_destination0 = host01
heartbeat_destination_port0 = 9694
heartbeat_device0 =
heartbeat_destination1 = host02
heartbeat_destination_port1 = 9694
heartbeat_device1 =


  • 編輯failover和follow腳本

cd /usr/local/pgpool412/etc/
cp failover.sh.sample failover.sh
cp follow_master.sh.sample follow_master.sh
chmod 755 *.sh

vi failover.sh
PGHOME=/usr/local/postgres

vi follow_master.sh

PGHOME=/usr/local/postgres
ARCHIVEDIR=/pgdata/archivelog
REPLUSER=repl
PCP_USER=pgpool
PGPOOL_PATH=/usr/local/pgpool412
PCP_PORT=9898


  • 配置pcp.conf文件

echo pgpool:`pg_md5 Welcome2021` >> /usr/local/pgpool412/etc/pcp.conf


  • 配置pcppass文件

su - postgres
echo localhost:9898:pgpool:Welcome2021 > ~/.pcppass
chmod 600 ~/.pcppass


  • 配置recover文件 ---這兩個(gè)文件要放到$PGDATA目錄中

cp -p /usr/local/pgpool412/etc/recovery_1st_stage.sample /pgdata/recovery_1st_stage
cp -p /usr/local/pgpool412/etc/pgpool_remote_start.sample /pgdata/pgpool_remote_start
chown postgres:postgres /pgdata/{recovery_1st_stage,pgpool_remote_start}
vi /pgdata/recovery_1st_stage
...
PGHOME=/usr/local/postgres

vi /pgdata/pgpool_remote_start
PGHOME=/usr/local/postgres

chmod 755 {recovery_1st_stage,pgpool_remote_start}


  • 配置pool_hba.conf文件

host    all  pgpool     0.0.0.0/0        scram-sha-256
host    all  postgres   0.0.0.0/0        scram-sha-256
--該文件建議配置和pg_hba.conf一致

  • 配置pgpool密碼文件

[all servers]$ pg_enc -m -k ~/.pgpoolkey -u pgpool -p
db password: [pgpool users password]
[all servers]$ pg_enc -m -k ~/.pgpoolkey -u postgres -p
db password: [postgres user
s passowrd]

# cat /usr/local/pgpool412/etc/pool_passwd
pgpool:AESheq2ZMZjynddMWk5sKP/Rw==
postgres:AESHs/pWL5rtXy2IwuzroHfqg==
##每添加一個(gè)用戶,都需要更新此文件,否則無(wú)法通過(guò)pgpool連接pg數(shù)據(jù)庫(kù)


  • 為Postgres用戶配置sudo權(quán)限

vi /etc/sudoers

postgres ALL=(ALL)    NOPASSWD: ALL


  • 配置將pgpool日志存放到syslog

vi pgpool.conf
log_destination = syslog
syslog_facility = LOCAL1
mkdir /var/log/pgpool
touch /var/log/pgpool /pgpool.log

vi /etc/rsyslog.conf
...
*.info;mail.none;authpriv.none;cron.none;LOCAL1.none /var/log/messages
LOCAL1.* /var/log/pgpool /pgpool.log
##配置logrotate
vi /etc/logrotate.d/syslog
...
/var/log/messages
/var/log/pgpool/pgpool.log ---新增此行
/var/log/secure
#重啟服務(wù)
systemctl restart rsyslog


啟停pgpool


nohup pgpool -D -n &      --啟動(dòng)

pgpool -m fast stop    --停止


pgpool常用命令及日常管理


##顯示pg節(jié)點(diǎn)相關(guān)信息

psql -h 10.25.247.99  -p 9999 -U pgpool postgres -c "show pool_nodes"

##pg發(fā)生failover并恢復(fù)后,show pool_nodes顯示狀態(tài)仍然是down,需要重新attach

pcp_attach_node -h 192.168.56.33 -U pgpool 1


##查看pgpool參數(shù)

psql -h 192.168.56.5 -p 9999 -U pgpool postgres -c "pgpool show all"    --看所有參數(shù)

或者

psql -h 192.168.56.5 -p 9999 -U pgpool postgres -c "pgpool show max_pool "  --看指定參數(shù)


##查看看門狗節(jié)點(diǎn)信息

pcp_watchdog_info -h 10.25.247.99 -U pgpool

上圖說(shuō)明pgpool的主節(jié)點(diǎn)是hostname為master的節(jié)點(diǎn),注意的是pgpool的主節(jié)點(diǎn)可能跟pg的主節(jié)點(diǎn)并不是同一個(gè)節(jié)點(diǎn)。


###檢查pgpool的連接數(shù)

pcp_proc_info -U pgpool -h 10.25.247.99  |awk {if (NF==13 && $11==1) print $1,$2,$11,$12}|uniq -c|wc -l


或者在master節(jié)點(diǎn)執(zhí)行

ps -ef|grep pgpool|grep idle|grep -v grep |wc -l


##需注意的參數(shù)

num_init_children --指定pgpool可開啟的子進(jìn)程數(shù)

max_pool可以緩存的連接數(shù)

——注意pgpool最大會(huì)產(chǎn)生num_init_children*max_pool個(gè)pg數(shù)據(jù)庫(kù)連接,所以pg參數(shù)max_connections需大于num_init_children*max_pool

reserved_connections   --此參數(shù)為非0值時(shí),當(dāng)連接超過(guò)num_init_children時(shí),會(huì)報(bào)錯(cuò)退出,否則連接會(huì)被hang住,直到連接數(shù)下降可以連接為止

load_balance_mode    --開啟復(fù)制均衡

memory_cache_enabled   --是否開啟內(nèi)存緩存


END


更多精彩干貨分享

點(diǎn)擊下方名片關(guān)注

IT那活兒

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/129905.html

相關(guān)文章

  • PG的兩種集群技術(shù):Pgpool-II與Postgres-XL

    摘要:最近研究了的兩種集群方案,分別是和,在這里總結(jié)一下二者的機(jī)制結(jié)構(gòu)優(yōu)劣測(cè)試結(jié)果等。其中的前身的,的前身是。為了避免單點(diǎn)故障,可以為所有節(jié)點(diǎn)配置對(duì)應(yīng)的節(jié)點(diǎn)。測(cè)試測(cè)試結(jié)果測(cè)試結(jié)果顯示,兩種集群與單機(jī)的性能指標(biāo)幾乎一致,無(wú)法分辨高下。 最近研究了PG的兩種集群方案,分別是Pgpool-II和Postgres-XL,在這里總結(jié)一下二者的機(jī)制、結(jié)構(gòu)、優(yōu)劣、測(cè)試結(jié)果等。 1、 Pgpool-I...

    gitmilk 評(píng)論0 收藏0
  • 新書推薦 |《PostgreSQL實(shí)戰(zhàn)》出版(提供樣章下載)

    摘要:作者譚峰張文升出版日期年月頁(yè)數(shù)頁(yè)定價(jià)元本書特色中國(guó)開源軟件推進(jìn)聯(lián)盟分會(huì)特聘專家撰寫,國(guó)內(nèi)多位開源數(shù)據(jù)庫(kù)專家鼎力推薦。張文升中國(guó)開源軟件推進(jìn)聯(lián)盟分會(huì)核心成員之一。 很高興《PostgreSQL實(shí)戰(zhàn)》一書終于出版,本書大體上系統(tǒng)總結(jié)了筆者 PostgreSQL DBA 職業(yè)生涯的經(jīng)驗(yàn)總結(jié),本書的另一位作者張文升擁有豐富的PostgreSQL運(yùn)維經(jīng)驗(yàn),目前就職于探探科技任首席PostgreS...

    Martin91 評(píng)論0 收藏0
  • 私有云搭建-私有云搭建之存儲(chǔ)虛擬化

    摘要:平臺(tái)采用分布式存儲(chǔ)系統(tǒng)作為虛擬化存儲(chǔ),用于對(duì)接虛擬化計(jì)算及通用數(shù)據(jù)存儲(chǔ)服務(wù),消除集中式網(wǎng)關(guān),使客戶端直接與存儲(chǔ)系統(tǒng)進(jìn)行交互,并以多副本糾刪碼多級(jí)故障域數(shù)據(jù)重均衡故障數(shù)據(jù)重建等數(shù)據(jù)保護(hù)機(jī)制,確保數(shù)據(jù)安全性和可用性。云計(jì)算平臺(tái)通過(guò)硬件輔助的虛擬化計(jì)算技術(shù)最大程度上提高資源利用率和業(yè)務(wù)運(yùn)維管理的效率,整體降低 IT 基礎(chǔ)設(shè)施的總擁有成本,并有效提高業(yè)務(wù)服務(wù)的可用性、可靠性及穩(wěn)定性。在解決計(jì)算資源的...

    ernest.wang 評(píng)論0 收藏0
  • 構(gòu)建可擴(kuò)展的PostgreSQL解決方案

    摘要:這可以通過(guò)負(fù)載平衡來(lái)實(shí)現(xiàn)數(shù)據(jù)分片當(dāng)問(wèn)題不是并發(fā)查詢的數(shù)量,而是數(shù)據(jù)庫(kù)的大小和單個(gè)查詢的速度時(shí),可以實(shí)現(xiàn)不同的方法。 showImg(https://segmentfault.com/img/remote/1460000018875091); 來(lái)源 | 愿碼(ChainDesk.CN)內(nèi)容編輯 愿碼Slogan | 連接每個(gè)程序員的故事 網(wǎng)站 | http://chaindesk.cn...

    jonh_felix 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<