切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它
生活随笔
收集整理的這篇文章主要介紹了
切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小吳總的雞湯
postgres作為年度最佳數據庫在國內得不到大范圍使用真的太可惜了!干巴巴的,麻麻賴賴的,一點都不圓潤,怎么辦?盤他!
書接上回,為了解決postgres的高可用部署問題,需解決以下幾個主要問題
1.主節(jié)點和從節(jié)點的讀寫分離2.主節(jié)點和從節(jié)點的自動主從切換3.主節(jié)點和從節(jié)點的負載均衡pgpool因為同時具備連接池,負載平衡,主從節(jié)點讀寫分離,可自動主從切換的特性,被官方推薦為postgres的官方高可用方案,我們在這里推薦使用主備模式。
pgpool各模式對比圖
接下來我們將在之前的從服務器進行pgpool的單節(jié)點部署。
192.168.1.102(從)從節(jié)點下載及安裝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#如果出現error: libpq is not installed or libpq is old則執(zhí)行下句yum install postgresql-devel#編譯及安裝make && make install#復制配置文件模版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é)點間的免密登錄(192.168.1.101/102)
#在每個節(jié)點執(zhí)行su postgresssh-keygen -t rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys#復制公鑰到從節(jié)點(192.168.1.101)scp ~/.ssh/authorized_keys postgres@192.168.1.102:~/.ssh/#測試免密登錄ssh postgres@192.168.1.102#復制公鑰到主節(jié)點(192.168.1.102)scp ~/.ssh/authorized_keys postgres@192.168.1.101:~/.ssh/#測試免密登錄ssh postgres@192.168.1.101配置pcp.conf(192.168.1.102)
cd /usr/local/pgpool2./bin/pg_md5 123456#復制生成的md5值到pcp文件vi pcp.confpostgres:e10adc3949ba59abbe56e057f20f883e生成pool_passwd密碼認證文件(192.168.1.102)
#使用pg_md5命令生成認證文件/usr/local/pgpool2/bin/pg_md5 -m -u postgres password#查看生成的文件cat etc/pool_passwdpostgres:md5a3556571e93b0d20722ba62be61e8c2d設置允許遠程訪問(192.168.1.102)
vi pool_hba.conf追加host all all 0.0.0.0/0 md5配置主備模式的主要修改點(192.168.1.102)
vi pgpool.conf#允許遠程訪問listen_addresses = '*'#訪問端口port = 9999#主節(jié)點配置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é)點配置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'# 設置連接池的連接數num_init_children = 32# 連接池最大數量,實際允許訪問的最大連接數為num_init_children*max_poolmax_pool = 4# pid文件路徑pid_file_name = '/usr/local/pgpool2/run/pgpool.pid'#開啟負載均衡load_balance_mode = on#開啟主備模式master_slave_mode = on#使用流復制模式master_slave_sub_mode = 'stream'#流復制校驗設置sr_check_period = 10sr_check_user = 'replica'sr_check_password = 'replica'sr_check_database = 'postgres'delay_threshold = 0#健康檢查校驗設置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é)點宕機時主備切換failover_command = '/usr/local/pgpool2/run/failover_stream.sh %H'啟動pgpool及主備驗證(192.168.1.102)
cd /usr/local/pgpool2/#啟動pgpool開啟debug模式并將日志打印到pgpool.log,生產上不建議./bin/pgpool -n -d > pgpool.log 2>&1 啟動pgpool并將日志打印到pgpool.log,正常模式./bin/pgpool -n > pgpool.log 2>&1 停止pgpool./bin/pgpool -m f stop#查看節(jié)點狀況,驗證是否一主(primary)和一從(standby)以及狀態(tài)是否uppsql -p 9999show pool_nodes;節(jié)點狀況
測試主備切換
#當前主節(jié)點(192.168.1.101)停止數據庫,模擬宕機systemctl stop postgresql-9.6#在此查看節(jié)點狀態(tài),發(fā)現原來的從節(jié)點變成了primary主節(jié)點,原來的主節(jié)點狀態(tài)為downshow pool_nodes發(fā)生了備節(jié)點切換為主節(jié)點
#修改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é)點積壓,緩存未處理的日志restore_command = 'cp %p ../archive/%f'#再次啟動原主節(jié)點(192.168.1.101)systemctl start postgresql-9.6#使用pcp命令動態(tài)添加節(jié)點(192.168.1.101)為從節(jié)點cd /usr/local/pgpool2/./bin/pcp_attach_node 0#再次查看狀態(tài),原主備節(jié)點發(fā)生了交換psql -p 9999show pool_nodes;主備發(fā)生了切換
達人的回顧總結
在上一篇文章中我們已經實現了postgres的主備集群搭建,有需要的可以進行快速回顧。下一篇我們將涉及pgpool本身集群的搭建
硬核數據庫postgres的主備集群搭建,快來盤它
總結
以上是生活随笔為你收集整理的切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php post请求后端拿不到值_php
- 下一篇: gtp6 linux 启动_Win10更