日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它

發(fā)布時(shí)間:2025/3/19 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小吳總的雞湯

postgres作為年度最佳數(shù)據(jù)庫在國內(nèi)得不到大范圍使用真的太可惜了!干巴巴的,麻麻賴賴的,一點(diǎn)都不圓潤,怎么辦?盤他!

書接上回,為了解決postgres的高可用部署問題,需解決以下幾個(gè)主要問題

1.主節(jié)點(diǎn)和從節(jié)點(diǎn)的讀寫分離2.主節(jié)點(diǎn)和從節(jié)點(diǎn)的自動(dòng)主從切換3.主節(jié)點(diǎn)和從節(jié)點(diǎn)的負(fù)載均衡

pgpool因?yàn)橥瑫r(shí)具備連接池,負(fù)載平衡,主從節(jié)點(diǎn)讀寫分離,可自動(dòng)主從切換的特性,被官方推薦為postgres的官方高可用方案,我們?cè)谶@里推薦使用主備模式。

pgpool各模式對(duì)比圖

接下來我們將在之前的從服務(wù)器進(jìn)行pgpool的單節(jié)點(diǎn)部署。

192.168.1.102(從)

從節(jié)點(diǎn)下載及安裝pgpool(192.168.1.102)

tar xzvf pgpool-II-4.0.4.tar.gz -C /usr/local/./configure --with-pgsql=/usr/pgsql-9.6/ --prefix=/usr/local/pgpool2#如果出現(xiàn)error: libpq is not installed or libpq is old則執(zhí)行下句yum install postgresql-devel#編譯及安裝make && make install#復(fù)制配置文件模版cd /usr/local/pgpool2/etccp pgpool.conf.sample pgpool.confcp pool_hba.conf.sample pool_hba.confcp pcp.conf.sample pcp.confmkdir /usr/local/pgpool2/run

配置節(jié)點(diǎn)間的免密登錄(192.168.1.101/102)

#在每個(gè)節(jié)點(diǎn)執(zhí)行su postgresssh-keygen -t rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys#復(fù)制公鑰到從節(jié)點(diǎn)(192.168.1.101)scp ~/.ssh/authorized_keys postgres@192.168.1.102:~/.ssh/#測(cè)試免密登錄ssh postgres@192.168.1.102#復(fù)制公鑰到主節(jié)點(diǎn)(192.168.1.102)scp ~/.ssh/authorized_keys postgres@192.168.1.101:~/.ssh/#測(cè)試免密登錄ssh postgres@192.168.1.101

配置pcp.conf(192.168.1.102)

cd /usr/local/pgpool2./bin/pg_md5 123456#復(fù)制生成的md5值到pcp文件vi pcp.confpostgres:e10adc3949ba59abbe56e057f20f883e

生成pool_passwd密碼認(rèn)證文件(192.168.1.102)

#使用pg_md5命令生成認(rèn)證文件/usr/local/pgpool2/bin/pg_md5 -m -u postgres password#查看生成的文件cat etc/pool_passwdpostgres:md5a3556571e93b0d20722ba62be61e8c2d

設(shè)置允許遠(yuǎn)程訪問(192.168.1.102)

vi pool_hba.conf追加host all all 0.0.0.0/0 md5

配置主備模式的主要修改點(diǎn)(192.168.1.102)

vi pgpool.conf#允許遠(yuǎn)程訪問listen_addresses = '*'#訪問端口port = 9999#主節(jié)點(diǎn)配置backend_hostname0 = '192.168.1.101'backend_port0 = 5432backend_weight0 = 1backend_data_directory0 = '/var/lib/pgsql/9.6/data/'backend_flag0 = 'ALLOW_TO_FAILOVER'#從節(jié)點(diǎn)配置backend_hostname1 = '192.168.1.102'backend_port1 = 5432backend_weight1 = 1backend_data_directory1 = '/var/lib/pgsql/9.6/data/'backend_flag1 = 'ALLOW_TO_FAILOVER'#開啟訪問控制enable_pool_hba = onpool_passwd = 'pool_passwd'# 設(shè)置連接池的連接數(shù)num_init_children = 32# 連接池最大數(shù)量,實(shí)際允許訪問的最大連接數(shù)為num_init_children*max_poolmax_pool = 4# pid文件路徑pid_file_name = '/usr/local/pgpool2/run/pgpool.pid'#開啟負(fù)載均衡load_balance_mode = on#開啟主備模式master_slave_mode = on#使用流復(fù)制模式master_slave_sub_mode = 'stream'#流復(fù)制校驗(yàn)設(shè)置sr_check_period = 10sr_check_user = 'replica'sr_check_password = 'replica'sr_check_database = 'postgres'delay_threshold = 0#健康檢查校驗(yàn)設(shè)置health_check_period = 0health_check_timeout = 20health_check_user = 'replica'health_check_password = 'replica'health_check_database = 'postgres'health_check_max_retries = 0health_check_retry_delay = 1connect_timeout = 10000#主節(jié)點(diǎn)宕機(jī)時(shí)主備切換failover_command = '/usr/local/pgpool2/run/failover_stream.sh %H'

啟動(dòng)pgpool及主備驗(yàn)證(192.168.1.102)

cd /usr/local/pgpool2/#啟動(dòng)pgpool開啟debug模式并將日志打印到pgpool.log,生產(chǎn)上不建議./bin/pgpool -n -d > pgpool.log 2>&1 啟動(dòng)pgpool并將日志打印到pgpool.log,正常模式./bin/pgpool -n > pgpool.log 2>&1 停止pgpool./bin/pgpool -m f stop#查看節(jié)點(diǎn)狀況,驗(yàn)證是否一主(primary)和一從(standby)以及狀態(tài)是否uppsql -p 9999show pool_nodes;

節(jié)點(diǎn)狀況

測(cè)試主備切換

#當(dāng)前主節(jié)點(diǎn)(192.168.1.101)停止數(shù)據(jù)庫,模擬宕機(jī)systemctl stop postgresql-9.6#在此查看節(jié)點(diǎn)狀態(tài),發(fā)現(xiàn)原來的從節(jié)點(diǎn)變成了primary主節(jié)點(diǎn),原來的主節(jié)點(diǎn)狀態(tài)為downshow pool_nodes

發(fā)生了備節(jié)點(diǎn)切換為主節(jié)點(diǎn)

#修改recovery.confcd /var/lib/pgsql/9.6/data/vi recovery.confstandby_mode = 'on'primary_conninfo = 'host=192.168.1.102 port=5432 user=replica password=replica'trigger_file = 'trigger_file0'recovery_target_timeline = 'latest'#防止主節(jié)點(diǎn)積壓,緩存未處理的日志restore_command = 'cp %p ../archive/%f'#再次啟動(dòng)原主節(jié)點(diǎn)(192.168.1.101)systemctl start postgresql-9.6#使用pcp命令動(dòng)態(tài)添加節(jié)點(diǎn)(192.168.1.101)為從節(jié)點(diǎn)cd /usr/local/pgpool2/./bin/pcp_attach_node 0#再次查看狀態(tài),原主備節(jié)點(diǎn)發(fā)生了交換psql -p 9999show pool_nodes;

主備發(fā)生了切換

達(dá)人的回顧總結(jié)

在上一篇文章中我們已經(jīng)實(shí)現(xiàn)了postgres的主備集群搭建,有需要的可以進(jìn)行快速回顧。下一篇我們將涉及pgpool本身集群的搭建

硬核數(shù)據(jù)庫postgres的主備集群搭建,快來盤它

總結(jié)

以上是生活随笔為你收集整理的切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。