openGauss/MogDB-3.0.0 dcf 測試(非 om 安裝)
本文出處:https://www.modb.pro/db/402037
IP 地址
... LERDER
... FOLLOWER
... FOLLOWER
一、安裝 openGauss
安裝依賴包
yum install -y bzip2 bzip2-devel curl libaio
建立使用者、組並建立目錄
groupadd omma -g 20001
useradd omma -g 20001 -u 20001
echo "*@" | passwd --stdin omma
mkdir -p /opengauss/{soft,data}
tar xf openGauss-3.0.0-CentOS-64bit-all.tar.gz -C /opengauss/soft
配置環境變數
echo "export GAUSSHOME=/opengauss/soft" >> /home/omma/.bashrc &&
echo "export PATH=$GAUSSHOME/bin:$PATH " >> /home/omma/.bashrc &&
echo "export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH" >> /home/omma/.bashrc
解壓資料庫軟體包
cd /opengauss/soft
tar -xf openGauss-3.0.0-CentOS-64bit.tar.bz2
初始化資料庫 後續所有操作均使用 omma 使用者,初始化需要加-c 引數,會生成 dcf 相關檔案(注意 nodename)
gs_initdb --nodename=gaussdb1 -w *@ -D /opengauss/data/ -c
二、配置 dcf 引數
1.配置白名單
在 pg_hba.conf 裡新增白名單
2.配置 dcf 引數與 replconninfo
因為在初始化時加了-c,會自動開啟 enable_dcf 引數 在節點一的 postgresql.conf 裡新增
port=21000
dcf_node_id = 1
dcf_ssl=off
dcf_data_path = '/opengauss/data/dcf_data'
dcf_log_path= '/opengauss/data/dcf_log'
dcf_config='[{"stream_id":1,"node_id":1,"ip":"...","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"...","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"...","port":21000,"role":"FOLLOWER"}]'
replconninfo1 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
replconninfo2 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
類似得,在其他兩個備機新增 節點二:
port=21000
dcf_node_id = 2
dcf_ssl=off
dcf_data_path = '/opengauss/data/dcf_data'
dcf_log_path= '/opengauss/data/dcf_log'
dcf_config='[{"stream_id":1,"node_id":1,"ip":"...","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"...","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"...","port":21000,"role":"FOLLOWER"}]'
replconninfo1 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
replconninfo2 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
節點三:
port=21000
dcf_node_id = 3
dcf_ssl=off
dcf_data_path = '/opengauss/data/dcf_data'
dcf_log_path= '/opengauss/data/dcf_log'
dcf_config='[{"stream_id":1,"node_id":1,"ip":"...","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"...","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"...","port":21000,"role":"FOLLOWER"}]'
replconninfo1 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
replconninfo2 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
三、啟動 openGauss
全部以備機身份拉起
gs_ctl start -D /opengauss/data -M standby
手動設定存活節點為少數派模式執行,在主節點執行(即 LEADER)
gs_ctl setrunmode -D /opengauss/data -v 1 -x minority
叢集其他節點主動重建拉起,在所有備節點執行(即 FOLLOWER) gs_ctl build -b full -D /opengauss/data ... 存活節點重回多數派,在主節點執行(即 LEADER)
gs_ctl setrunmode -D /opengauss/data -x normal
全部節點檢視狀態
gs_ctl query -D /opengauss/data
四、資料同步測試
主節點
[omma@localhost ~]$ gsql -p 21000 postgres -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=# create table ysl (id int);
CREATE TABLE
openGauss=# insert into ysl values(1);
INSERT 0 1
openGauss=# select * from ysl;
id
1
(1 row)
備機
五、故障切換測試
主節點進行停資料庫 gs_ctl stop -D /opengauss/data/
可以看到我們的 node2 變成了主節點,身份是 leader,而我們的原主變成了它的 follower
拉起原主庫,以 standby 方式啟動,檢視當前狀態,原主節點依舊是新主節點的 follower gs_ctl start -D /opengauss/data -M standby
六、switchover 切換測試
在節點 1 進行 switchover 操作,之前節點 1 為 follower,執行完切換之後,可以看到我們的節點 1 又重新恢復成主節點。
此時檢視節點 2,也就是我們 switchover 之前的主節點,發現節點 2 已經 shutdown 了,需要手動再加入叢集
總結:
1.openGauss-3.0.0 版本的 dcf 對於 switchover,在進行切換之後會把原主節點 shutdown,而不會重啟為 follower,需要手動重啟。 2.此外 dcf 不像 om 工具這種部署的主備,dcf 在主節點 pg_stat_replication 檢視裡查詢不到複製資訊。 資料複製流程區別: