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

資訊專欄INFORMATION COLUMN

基于repmgr的PostgreSQL的高可用搭建

IT那活兒 / 2927人閱讀
基于repmgr的PostgreSQL的高可用搭建

點(diǎn)擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!


主機(jī)信息

IP1:192.168.28.151 Primary PG-1
IP2:192.168.28.150 Standby PG-2

IP3:192.168.21.152 witness PG-3


安裝PostgreSQL

其中SLAVE只安裝軟件不進(jìn)行初始化,Primary 進(jìn)行初始化。

參數(shù)調(diào)整:

  • wal_level 至少replica
  • archive_mode=on
  • archive_command=cp %p /data/archive/%f
  • wal_log_hit=on或者在初始化的開啟數(shù)據(jù)校驗(yàn)和
  • max_wal_senders=10
  • max_keep_size=48GB
  • hot_standby=on


SSH免密 兩臺主機(jī)均做

PG-1:?

vim /etc/hosts
  192.168.21.151 PG-1
  192.168.21.150 PG-2
  192.168.21.152 PG-3
  ssh-keygen
  ssh-copy-id -i .ssh/idrsa.pub postgres@PG-2
  ssh-copy-id -i .ssh/idrsa.pub postgres@PG-3

PG-2:

vim /etc/hosts
  192.168.21.151 PG-1
  192.168.21.150 PG-2
  192.168.21.152 PG-3
  ssh-keygen
  ssh-copy-id -i .ssh/idrsa.pub postgres@PG-1
  ssh-copy-id -i .ssh/idrsa.pub postgres@PG-3

PG-3:?

vim /etc/hosts
  192.168.21.151 PG-1
  192.168.21.150 PG-2
  192.168.21.152 PG-3
  ssh-keygen
  ssh-copy-id -i .ssh/idrsa.pub postgres@PG-1
  ssh-copy-id -i .ssh/idrsa.pub postgres@PG-2


安裝repmgr ,三臺主機(jī)都安裝

tar -xzvf repmgr.4.2.tar.gz
  cd repmgr.4.2
  ./configure
  make
  make install


配置pg_hba.conf和創(chuàng)建repmgr用戶和庫

初始化Primary節(jié)點(diǎn),配置pg_hba.conf和創(chuàng)建repmgr用戶和庫。
initdb -A scram-sha-256 -D /data/pg133 -E utf8 --wal-segsize=1024 -U postgres -W -k
create database repmgr;
  create user repmgr replication login superuser password 4Replic%;
  alter user repmgr set search_path to repmgr,"$user",public;
配置參數(shù):
shared_preload_libraries=repmgr;
重啟數(shù)據(jù)庫。
配置用戶登錄數(shù)據(jù)庫免密:
vi /home/postgres/.pgpass
  ip:port:repmgr:repmgr:repmgr

ip:port:replication:repmgr:repmgr #注意該行必須有,否則在執(zhí)行switchover的時候,standby可以正常提升為primary,但舊primary 無法自動跟隨新主,每臺主機(jī)上都要進(jìn)行配置。


repmgr集群搭建

6.1 Primary上編輯repmgr.conf
vim /etc/remgr/repmgr.conf 
node_id=1
node_name=PG-1.PG
conninfo=host=PG-1.PG port=5432 user=repmgr dbname=repmgr
data_directory=/data/pg134
replication_user=repmgr
replication_type=physical
use_replication_slots=true
location=my-repmgr
#witness settings
witness_sync_interval=10
#logging settings
log_level=INFO
log_facility=STDERR
log_file=/opt/repmgr/repmgr.log
log_status_interval=2
#Environment/Command Settings
pg_bindir=/opt/pg134/bin
repmgr_bindir=/opt/pg134/bin
passfile=/home/postgres/.pgpass
use_primary_conninfo_password=false
#Standby promote_Settings
promote_check_timeout=60
promote_check_interval=1
#Standby Follow Settings
primary_follow_timeout=60
standby_follow_timeout=15
#Standby Switchover Settings
shutdown_check_timeout=60
standby_reconnect_timeout=60
wal_receive_check_timeout=30
#Node Rejoin Settings
node_rejoin_timeout=60
#Failover And Monitoring Settings
failover=automatic
priority=100
connection_check_type=ping
reconnect_attempts=5
reconnect_interval=2
promote_command=/opt/pg134/bin/repmgr standby promote -f /opt/repmgr/repmgr.conf --log-to-file
follow_command=/opt/pg134/bin/repmgr standby follow -f /opt/repmgr/repmgr.conf --upstream-node-id=%n --log-to-file
primary_notification_timeout=60
repmgrd_standby_startup_timeout=30
monitoring_history=yes
monitor_interval_secs=2
degraded_monitoring_timeout=-1
async_query_timeout=60
repmgrd_pid_file=/opt/repmgr/repmgrd.pid
standby_disconnect_on_failover=true
sibling_nodes_disconnect_timeout=30
child_node_connected_min_count=1
child_nodes_check_interval=2
child_nodes_disconnect_timeout=10
child_nodes_connected_include_wintess=true
#child_nodes_disconnect_command = /opt/pg134/bin/pg_ctl stop -D /data/pg134
primary_visibility_consensus=true
#Service Control Commands
service_start_command=/opt/pg134/bin/pg_ctl start -w -D /data/pg134
service_stop_command=/opt/pg134/bin/pg_ctl stop -w -D /data/pg134
service_restart_command=/opt/pg134/bin/pg_ctl restart -w -D /data/pg134
service_reload_command=/opt/pg134/bin/pg_ctl reload -w -D /data/pg134
repmgrd_service_start_command=> /opt/repmgr/repmgrd.pid && /opt/pg134/bin/repmgrd -f /opt/repmgr/repmgr.conf -d -p /opt/repmgr/repmgrd.pid
repmgrd_service_stop_command=kill -9 `cat /opt/repmgr/repmgrd.pid`
6.2 在Primary上進(jìn)行注冊
repmgr -f /etc/repmgr/repmgr.conf primary register  將在主節(jié)點(diǎn)安裝repmgr擴(kuò)展和元數(shù)據(jù)對象,并為主服務(wù)器添加元數(shù)據(jù)記錄。對象的模式的repmgr。
6.3  驗(yàn)證集群狀態(tài)
repmgr -f /etc/repmgr/repmgr.conf cluster show
6.4 啟動監(jiān)控
復(fù)制群集中的每個服務(wù)器都有自己的記錄。如果repmgrd 正在使用,則節(jié)點(diǎn)的狀態(tài)或角色更改時會更新字段upstream_node_id,active和 type。
啟動監(jiān)控:
repmgrd -f /etc/repmgr/repmgr.conf --verbose --monitoring-history > /var/log/repmgr/repmgr.log 2>&1 &
  或者
  repmgr -f /etc/repmgr/repmgr.conf daemon start
6.5 在STANDBY上編輯repmgr.conf
vim /etc/repmgr/repmgr.conf
 node_id=2
node_name=PG-2.PG
conninfo=host=PG-2.PG port=5432 user=repmgr dbname=repmgr
data_directory=/data/pg134
replication_user=repmgr
replication_type=physical
use_replication_slots=true
location=my-repmgr
#witness settings
witness_sync_interval=10
#logging settings
log_level=INFO
log_facility=STDERR
log_file=/opt/repmgr/repmgr.log
log_status_interval=2
#Environment/Command Settings
pg_bindir=/opt/pg134/bin
repmgr_bindir=/opt/pg134/bin
passfile=/home/postgres/.pgpass
use_primary_conninfo_password=false
#Standby promote_Settings
promote_check_timeout=60
promote_check_interval=1
#Standby Follow Settings
primary_follow_timeout=60
standby_follow_timeout=15
#Standby Switchover Settings
shutdown_check_timeout=60
standby_reconnect_timeout=60
wal_receive_check_timeout=30
#Node Rejoin Settings
node_rejoin_timeout=60
#Failover And Monitoring Settings
failover=automatic
priority=100
connection_check_type=ping
reconnect_attempts=5
reconnect_interval=2
promote_command=/opt/pg134/bin/repmgr standby promote -f /opt/repmgr/repmgr.conf --log-to-file
follow_command=/opt/pg134/bin/repmgr standby follow -f /opt/repmgr/repmgr.conf --upstream-node-id=%n --log-to-file
primary_notification_timeout=60
repmgrd_standby_startup_timeout=30
monitoring_history=yes
monitor_interval_secs=2
degraded_monitoring_timeout=-1
async_query_timeout=60
repmgrd_pid_file=/opt/repmgr/repmgrd.pid
standby_disconnect_on_failover=true
sibling_nodes_disconnect_timeout=30
child_node_connected_min_count=1
child_nodes_check_interval=2
child_nodes_disconnect_timeout=10
child_nodes_connected_include_wintess=true
child_nodes_disconnect_command = /opt/pg134/bin/pg_ctl stop -D /data/pg134
primary_visibility_consensus=true
#Service Control Commands
service_start_command=/opt/pg134/bin/pg_ctl start -w -D /data/pg134
service_stop_command=/opt/pg134/bin/pg_ctl stop -w -D /data/pg134
service_restart_command=/opt/pg134/bin/pg_ctl restart -w -D /data/pg134
service_reload_command=/opt/pg134/bin/pg_ctl reload -w -D /data/pg134
repmgrd_service_start_command=> /opt/repmgr/repmgrd.pid && /opt/pg134/bin/repmgrd -f /opt/repmgr/repmgr.conf -d -p /opt/repmgr/repmgrd.pid
repmgrd_service_stop_command=kill -9 `cat /opt/repmgr/repmgrd.pid`
6.6 standby克隆
repmgr -f /etc/repmgr/repmgr.conf -U repmgr -d repmgr -h 192.168.28.166 standby clone --dry-run -c

--dry-run選項用于檢查。

開始克隆:
repmgr -f /etc/repmgr/repmgr.conf -U repmgr -d repmgr -h 192.168.28.166  standby clone -c

克隆從主PostgreSQL的數(shù)據(jù)目錄中的文件節(jié)點(diǎn),使用postgresql的pg_basebackup,會自動創(chuàng)建一個recovery.conf文件。

6.7 啟動STANDBY
pg_ctl -D /data/pgdata start
6.8 在STANDBY上注冊
repmgr -f /etc/repmgr/repmgr.conf  standby register  
 啟動repmgrd:
repmgr -f /etc/repmgr/repmgr.conf daemon start
  或
  repmgrd -f /etc/repmge/repmgr.conf -d -p /data/repmgr/repmgrd.pid
6.9 witness見證服務(wù)器搭建
數(shù)據(jù)庫初始化:
initdb -A scram-sha-256 -D /data/pg133 -E utf8 --wal-segsize=1024 -U postgres -W -k
創(chuàng)建數(shù)據(jù)庫和用戶:??
create database repmgr;
  create user repmgr with login superuser replication password 4Replic%;
  alter user repmgr set search_path to repmgr,"$user",public;

數(shù)據(jù)庫配置參數(shù):

shared_preload_libraries=repmgr;

數(shù)據(jù)庫重啟。

編輯repmgr配置文件: 
vi /etc/repmgr/repmgr.conf
node_id=3
node_name=PG-3.PG
conninfo=host=PG-3.PG port=5432 user=repmgr dbname=repmgr
data_directory=/data/pg134
replication_user=repmgr
replication_type=physical
use_replication_slots=true
location=my-repmgr
#witness settings
witness_sync_interval=10
#logging settings
log_level=INFO
log_facility=STDERR
log_file=/opt/repmgr/repmgr.log
log_status_interval=2
#Environment/Command Settings
pg_bindir=/opt/pg134/bin
repmgr_bindir=/opt/pg134/bin
passfile=/home/postgres/.pgpass
use_primary_conninfo_password=false
#Standby promote_Settings
promote_check_timeout=60
promote_check_interval=1
#Standby Follow Settings
primary_follow_timeout=60
standby_follow_timeout=15
#Standby Switchover Settings
shutdown_check_timeout=60
standby_reconnect_timeout=60
wal_receive_check_timeout=30
#Node Rejoin Settings
node_rejoin_timeout=60
#Failover And Monitoring Settings
failover=automatic
priority=100
connection_check_type=ping
reconnect_attempts=5
reconnect_interval=2
promote_command=/opt/pg134/bin/repmgr standby promote -f /opt/repmgr/repmgr.conf --log-to-file
follow_command=/opt/pg134/bin/repmgr standby follow -f /opt/repmgr/repmgr.conf --upstream-node-id=%n --log-to-file
primary_notification_timeout=60
repmgrd_standby_startup_timeout=30
monitoring_history=yes
monitor_interval_secs=2
degraded_monitoring_timeout=-1
async_query_timeout=60
repmgrd_pid_file=/opt/repmgr/repmgrd.pid
standby_disconnect_on_failover=true
sibling_nodes_disconnect_timeout=30
child_nodes_check_interval=2
child_node_connected_min_count=1
child_nodes_disconnect_timeout=10
child_nodes_connected_include_wintess=true
child_nodes_disconnect_command = /opt/pg134/bin/pg_ctl stop -D /data/pg134
primary_visibility_consensus=true
#Service Control Commands
service_start_command=/opt/pg134/bin/pg_ctl start -w -D /data/pg134
service_stop_command=/opt/pg134/bin/pg_ctl stop -w -D /data/pg134
service_restart_command=/opt/pg134/bin/pg_ctl restart -w -D /data/pg134
service_reload_command=/opt/pg134/bin/pg_ctl reload -w -D /data/pg134
repmgrd_service_start_command=> /opt/repmgr/repmgrd.pid && /opt/pg134/bin/repmgrd -f /opt/repmgr/repmgr.conf -d -p /opt/repmgr/repmgrd.pid
repmgrd_service_stop_command=kill -9 `cat /opt/repmgr/repmgrd.pid`
注冊為見證服務(wù)器:
repmgr -f /etc/repmgr/repmgr.conf witness register -h PG-1 -U repmgr -d repmgr

注意:-h連接的是primary節(jié)點(diǎn),當(dāng)發(fā)生故障切換時,見證節(jié)點(diǎn)會自動連接到最新的primary節(jié)點(diǎn)。

啟動repmgrd:
repmgr -f /etc/repmgr/repmgr.conf daemon start
  或
  repmgrd -f /etc/repmge/repmgr.conf -d -p /data/repmgr/repmgrd.pid
查看集群狀態(tài):

基于同步的模式

7.1 在現(xiàn)有環(huán)境開啟同步復(fù)制

  • 分別調(diào)整PostgreSQL的的配置文件synchronous_standby_name=any 1(*);
  • 分別執(zhí)行pg_ctl reload。
7.2 在搭建環(huán)境中啟動同步復(fù)制
primary節(jié)點(diǎn)synchronous_standby_name = any 1(*)
其他備庫在克隆時,會自動設(shè)置同步模式,默認(rèn)application_name為當(dāng)前節(jié)點(diǎn)名:node_name。
7.3 在一主一備的環(huán)境中,當(dāng)備庫意外當(dāng)即,會導(dǎo)致主庫HANG
一直處于等待狀態(tài),直到備庫恢復(fù)【建議生成環(huán)境部署,至少有兩個備庫,或者有額外的腳本,檢測當(dāng)前庫的角色以及庫的狀態(tài),當(dāng)是備庫且備庫意外宕機(jī)時,將主庫的synchronous_standby_names設(shè)置為空。】
一主一備環(huán)境中解決主庫HANG,可以使用child_nodes_disconnect_command參數(shù),配置腳本解決該問題,但需要等待備份節(jié)點(diǎn)恢復(fù)。

#!/bin/bash
DBPATH=/opt/pg134/bin
DBPORT=5432
DBHOST=127.0.0.1
/opt/pg134/bin/pg_ctl stop -D /data/pg134
$DBPATH/psql -U postgres -p $PGPORT -h $DBHOST <checkpoint;
alter system set synchronous_standby_names to ;
select pg_reload_conf();
q
EOF


使用復(fù)制槽

在現(xiàn)有環(huán)境中使用復(fù)制槽:

  • 分別調(diào)整repmgr的配置文件,添加use_replication_slots=true;
  • 分別重啟repmgrd的守護(hù)進(jìn)程;
  • 執(zhí)行一次主備切換【如果不執(zhí)行主備切換,復(fù)制槽不會自動創(chuàng)建。】

本文作者:魏 強(qiáng)(上海新炬王翦團(tuán)隊)

本文來源:“IT那活兒”公眾號

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

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

相關(guān)文章

  • PostgreSQL UDB,讓31會議數(shù)據(jù)管理更高效可靠

    摘要:相比自建,其可靠性更高,方便運(yùn)維維護(hù)。宋體經(jīng)過審慎考慮,用戶同時選用三種數(shù)據(jù)庫,針對性的滿足不同目標(biāo)。宋體宋體其中,相比于在上的快速高效是其優(yōu)勢,也是用戶選型的重要砝碼。PostgreSQL UDB用在大數(shù)據(jù)分析上,查詢效率更高。相比自建,其可靠性更高,方便運(yùn)維維護(hù)。 — 31會議運(yùn)維經(jīng)理 湯雷 如何用好PostgreSQL? PostgreSQL是業(yè)內(nèi)一款十分流行的開源數(shù)...

    vspiders 評論0 收藏0
  • 到底選擇PostgreSOL還是MySQL?看這里

    摘要:經(jīng)過對比選型,用戶同時選用三種數(shù)據(jù)庫來針對性的滿足不同目標(biāo)。基于能夠帶來的這些特性優(yōu)勢,用戶選擇了。相比自建,其可靠性更高,方便運(yùn)維維護(hù)。整個過程中用戶不需要任何人工干預(yù)和配置修改,真正做到自動容災(zāi)。 據(jù)DB-Engines 最新發(fā)布的2019年8月份數(shù)據(jù)庫流行度排行榜(如下圖)顯示,名列前茅的MySQL和PostgreSQL數(shù)據(jù)庫的流行趨勢與去年同期相比依然穩(wěn)增不減。 showImg...

    沈儉 評論0 收藏0
  • 數(shù)據(jù)倉庫架構(gòu)變遷

    摘要:前面我們簡單闡述了分布式數(shù)據(jù)庫的架構(gòu),并通過一條簡單的查詢語句解釋了分布式的執(zhí)行計劃。 引言 第八屆中國架構(gòu)師大會(SACC2016)10月27號到29號在北京萬達(dá)索菲特大飯店成功舉辦。大會以架構(gòu)創(chuàng)新之路為主題,云集了國內(nèi)外頂尖專家,共同探討云計算和大數(shù)據(jù)等技術(shù)背景下,如何通過架構(gòu)創(chuàng)新及各種IT新技術(shù)來帶動企業(yè)轉(zhuǎn)型增效。作為一家專注于云端數(shù)據(jù)倉庫的初創(chuàng)公司,酷克數(shù)據(jù)受邀在SACC201...

    Raaabbit 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<