MogDB/openGauss 資料庫擴縮容的幾種方式
文字出處:https://www.modb.pro/db/453105
隨著業務的發展,業務系統對資料庫的架構要求也在變化,比如需要讀負載均衡、機房搬遷、伺服器硬體替換等等,這需要在原資料庫主備架構的基礎上進行擴/縮容操作,目前 MogDB 資料庫安裝方式有三種,分別是手工安裝(非 om)、標準安裝(om)和 PTK 安裝。
- 手工安裝資料庫叢集擴縮容,適用 MogDB/openGauss 資料庫叢集,需要初始化新節點,修改引數檔案,build 新增備庫或者直接刪除備庫節點即可
- 標準安裝資料庫叢集擴縮容,適用 MogDB/openGauss 資料庫叢集,需要修改 xml 配置檔案,藉助 gs_expansion/gs_dropnode 工具進行操作,不可直接新增/刪除節點
- PTK 安裝資料庫叢集擴縮容,僅支援 MogDB 資料庫叢集,PTK0.3 版本開始支援,使用 ptk cluster scale-out/scale-in -h 可以快速方便的完成擴縮容
工具介紹
PTK
PTK 官方文件
PTK 一鍵部署示例
gs_expansion
gs_expansion 工具對資料庫的備機進行擴容。支援從單機或者一主多備最多擴容到一主八備(包括級聯備)。
注意事項
- 擴容後不會自動更新 synchronous_standby_names 引數。如果需要為該引數增加擴容的機器,請在擴容完成後手動更新。
- 擴容級聯備之前要確保原叢集中有處於同一 AZ(Available Zone)且狀態正常的備機,或擴容級聯備的同時也擴容了處於同 AZ 的備機。
gs_dropnode
gs_dropnode 工具從一主多備的資料庫中移除不需要的備機,最多可以刪除到只剩下單機。
注意事項
- 僅支援使用 om 方式安裝的主備資料庫例項中移除備機,不支援使用編譯方式安裝組建的主備資料庫。
- 從主備資料庫例項中移除當前仍可連通的備機時,會自動停止目標備機上正在執行的資料庫服務,並刪除備機上的 GRPC 證書(證書位置:$GAUSSHOME/share/sslcert/grpc/),但是不會刪除備機上的應用。
- 如果目標備機在執行操作前處於不可連通的狀態,需要使用者在目標備機恢復後手動停止或刪除目標備機的資料庫服務,並刪除備機上的 GRPC 證書。
- 如果刪除後資料庫例項中只剩下一個主機時,會提示建議重啟當前主機,此時建議使用者根據當前業務執行環境重啟主機。
- 當移除的備機處於同步複製模式時,如果執行刪除命令的同時主機上存在事務操作,事務提交時會出現短暫卡頓,刪除完成後事務處理可繼續。
- 當目標備機被移除後,如果需要以備機方式使用目標備機,請參考 gs_expansion 命令重新將目標備機新增到叢集中。
- 當目標備機被移除後,如果不再需要目標備機,請在目標備機上使用 gs_uninstall -delete-data -L 命令單點解除安裝,請注意務必新增-L 選項。
- 當目標備機被移除後,如果暫時不確定是否需要目標備機,可以選擇如下方法拒絕從目標備機的遠端 ssh 連線,避免在目標備機上的誤操作。
- 方式一:在當前主機上使用 root 使用者修改/etc/ssh/sshd_config 檔案,新增如下記錄(如果已存在 DenyUsers 記錄,請在後面追加)DenyUsers omm@10.11.12.13,修改後需要重啟 ssh 服務使其生效,修改後限制從目標備機不能使用 omm 使用者遠端到該主機。
- 方式二:在當前主機上將目標備機加入到/etc/hosts.deny 檔案中(例如:sshd:10.11.12.13:deny),拒絕從目標備機的遠端 ssh 連線(對所有使用者生效),此方法需要系統 sshd 服務繫結到 libwrap 庫。
- 當目標備機被移除後,如果需要以單機方式使用目標備機且無需保留原資料,請先執行 gs_uninstall -delete-data -L 命令解除安裝後重新安裝。如果保留原資料,請在目標備機上先執行 gs_guc set -D /gaussdb/data/dbnode -c “replconninfoX“ ,
- /gaussdb/data/dbnode 表示資料目錄,
- replconninfoX 表示主備叢集中的除本節點外的其他節點,
比如一主一備則需要配置 replconninfo1, 一主兩備需要配置 replconninfo1 和 replconninfo2, 以此類推
示例
環境檢查
叢集狀態
[omm@node1 ~]$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip port instance state
----------------------------------------------------------------------------
1 node1 ***.***.***.*** 25000 6001 /data/mogdb P Primary Normal
2 node2 ***.***.***.*** 25000 6002 /data/mogdb S Standby Normal
xml 配置檔案
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="dbCluster" />
<PARAM name="nodeNames" value="node1,node2" />
<PARAM name="backIp1s" value="***.***.***.***,***.***.***.***"/>
<PARAM name="gaussdbAppPath" value="/opt/mogdb/app" />
<PARAM name="gaussdbLogPath" value="/var/log/mogdb" />
<PARAM name="gaussdbToolPath" value="/opt/mogdb/tools" />
<PARAM name="corePath" value="/opt/mogdb/corefile"/>
<PARAM name="clusterType" value="single-inst"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="1000001">
<PARAM name="name" value="node1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="***.***.***.***"/>
<PARAM name="sshIp1" value="***.***.***.***"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="25000"/>
<PARAM name="dataNode1" value="/data/mogdb,node2,/data/mogdb"/>
</DEVICE>
<DEVICE sn="1000002">
<PARAM name="name" value="node2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="***.***.***.***"/>
<PARAM name="sshIp1" value="***.***.***.***"/>
</DEVICE>
</DEVICELIST>
</ROOT>
擴容
前提條件
- 擴容備機的作業系統與主機保持一致。
- 在擴容備機上建立好與主機上相同的使用者和使用者組。
- 已存在的節點和新增節點之間建立好 root 使用者互信以及資料庫管理使用者(如 omm)的互信。
- 正確配置 xml 檔案,在已安裝資料庫配置檔案的基礎上,新增需要擴容的備機資訊。
- 擴容備節點的操作只能在主節點上執行,且只能使用 root 使用者在解壓 MogDB 映象包後的 script 目錄下執行 gs_expansion 命令。
- 執行擴容命令前需要透過 source 命令匯入主機資料庫的環境變數。一般該檔案路徑為:/home/[user]/.bashrc
- 不允許與 gs_dropnode 命令同時執行。
- 不允許併發執行相同的 gs_expansion 命令。
- 操作過程中不允許同時在其他備節點上執行主備倒換或者故障倒換的操作。
擴容節點準備
擴容節點:...
參考 作業系統配置
--建立omm使用者及使用者組
[root@node3 ~]# groupadd dbgrp
[root@node3 ~]# useradd -g dbgrp omm
[root@node3 ~]# passwd omm
--建立互信,第一次需要先相互登陸確認一下
[root@node2 ~]# scp -r .ssh root@***.***.***.***:/root
[omm@node2 ~]$ scp -r .ssh omm@***.***.***.***:/home/omm/
--python3 版本要保持一致,如果不一致需要重新安裝
配置 xml 檔案
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="dbCluster" />
<PARAM name="nodeNames" value="node1,node2,node3" />
<PARAM name="backIp1s" value="***.***.***.***,***.***.***.***,***.***.***.***"/>
<PARAM name="gaussdbAppPath" value="/opt/mogdb/app" />
<PARAM name="gaussdbLogPath" value="/var/log/mogdb" />
<PARAM name="gaussdbToolPath" value="/opt/mogdb/tools" />
<PARAM name="corePath" value="/opt/mogdb/corefile"/>
<PARAM name="clusterType" value="single-inst"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="1000001">
<PARAM name="name" value="node1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="***.***.***.***"/>
<PARAM name="sshIp1" value="***.***.***.***"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="25000"/>
<PARAM name="dataNode1" value="/data/mogdb,node2,/data/mogdb,node3,/data/mogdb"/>
</DEVICE>
<DEVICE sn="1000002">
<PARAM name="name" value="node2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="***.***.***.***"/>
<PARAM name="sshIp1" value="***.***.***.***"/>
</DEVICE>
<DEVICE sn="1000003">
<PARAM name="name" value="node3"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="***.***.***.***"/>
<PARAM name="sshIp1" value="***.***.***.***"/>
</DEVICE>
</DEVICELIST>
</ROOT>
叢集擴容
[root@node1 ~]# cd /opt/mogdb300
[root@node1 mogdb300]# source /home/omm/.bashrc
[root@node1 mogdb300]# ./script/gs_expansion -U omm -G dbgrp -X /opt/mogdb300/config.xml -h ***.***.***.***
Start expansion without cluster manager component.
Start to preinstall database on new nodes.
Start to send soft to each standby nodes.
End to send soft to each standby nodes.
Start to preinstall database step.
Preinstall ***.***.***.*** success
End to preinstall database step.
End to preinstall database on new nodes.
Start to install database on new nodes.
Installing database on node ***.***.***.***:
Parsing the configuration file.
Check preinstall on every node.
Successfully checked preinstall on every node.
Creating the backup directory.
Successfully created the backup directory.
begin deploy..
Installing the cluster.
begin prepare Install Cluster..
Checking the installation environment on all nodes.
begin install Cluster..
Installing applications on all nodes.
Successfully installed APP.
begin init Instance..
encrypt cipher and rand files for database.
Please enter password for database:
Please repeat for database:
begin to create CA cert files
The sslcert will be generated in /opt/mogdb/app/share/sslcert/om
NO cm_server instance, no need to create CA for CM.
Cluster installation is completed.
Configuring.
Deleting instances from all nodes.
Successfully deleted instances from all nodes.
Checking node configuration on all nodes.
Initializing instances on all nodes.
Updating instance configuration on all nodes.
Check consistence of memCheck and coresCheck on database nodes.
Configuring pg_hba on all nodes.
Configuration is completed.
Successfully started cluster.
Successfully installed application.
end deploy..
***.***.***.*** install success.
Finish to install database on all nodes.
Database on standby nodes installed finished.
Checking mogdb and gs_om version.
End to check mogdb and gs_om version.
Start to establish the relationship.
Start to build standby ***.***.***.***.
Build standby ***.***.***.*** success.
Start to generate and send cluster static file.
End to generate and send cluster static file.
Expansion results:
***.***.***.***: Success
Expansion Finish.
擴容驗證
--主節點查詢
[root@node1 mogdb300]# su - omm
[omm@node1 ~]$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip port instance state
----------------------------------------------------------------------------
1 node1 ***.***.***.*** 25000 6001 /data/mogdb P Primary Normal
2 node2 ***.***.***.*** 25000 6002 /data/mogdb S Standby Normal
3 node3 ***.***.***.*** 25000 6003 /data/mogdb S Standby Normal
--擴容節點查詢
[root@node3 ~]# su - omm
Last login: Fri Aug 5 10:16:20 HKT 2022 from node1 on pts/1
[omm@node3 ~]$ gs_ctl query -D /data/mogdb
[2022-08-05 10:24:17.047][17791][][gs_ctl]: gs_ctl query ,datadir is /data/mogdb
HA state:
local_role : Standby
static_connections : 2
db_state : Normal
detail_information : Normal
Senders info:
No information
Receiver info:
receiver_pid : 6141
local_role : Standby
peer_role : Primary
peer_state : Normal
state : Normal
sender_sent_location : 0/6000808
sender_write_location : 0/6000808
sender_flush_location : 0/6000808
sender_replay_location : 0/6000808
receiver_received_location : 0/6000808
receiver_write_location : 0/6000808
receiver_flush_location : 0/6000808
receiver_replay_location : 0/6000808
sync_percent : 100%
channel : ***.***.***.***:44046<--***.***.***.***:25001
[omm@node3 ~]$
縮容
前提條件
- 執行前需要確保主節點和備節點之間 omm 使用者(資料庫管理使用者)的互信正常。
- 刪除備節點的操作只能在主節點上執行,需要使用資料庫管理使用者(比如 omm)執行該命令。
- 不允許與 gs_expansion 命令同時執行。
- 不允許併發執行相同的 gs_dropnode 命令。
- 不允許同時在其他備節點上執行主備倒換或者故障倒換的操作。
- 執行命令前需要透過 source 命令匯入主機資料庫的環境變數。如果當前資料庫是分離環境變數方式安裝,則 source 匯入分離的環境變數。如果未進行分離,則需要 source 匯入子使用者的.bashrc 配置檔案。一般該檔案路徑為:/home/[user]/.bashrc
叢集縮容
將新擴容節點當目標備庫再刪除掉,為了防止誤操作,需要刪除目標備庫與原叢集內其他節點的 ssh 互信,操作方式參考注意事項
--主庫執行
[omm@node1 ~]$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip port instance state
----------------------------------------------------------------------------
1 node1 ***.***.***.*** 25000 6001 /data/mogdb P Primary Normal
2 node2 ***.***.***.*** 25000 6002 /data/mogdb S Standby Normal
3 node3 ***.***.***.*** 25000 6003 /data/mogdb S Standby Normal
[omm@node1 ~]$ gs_dropnode -U omm -G dbgrp -h ***.***.***.***
The target node to be dropped is (['node3'])
Do you want to continue to drop the target node (yes/no)?yes
Drop node start without CM node.
[gs_dropnode]Start to drop nodes of the cluster.
[gs_dropnode]Start to stop the target node node3.
[gs_dropnode]End of stop the target node node3.
[gs_dropnode]Start to backup parameter config file on node1.
[gs_dropnode]End to backup parameter config file on node1.
[gs_dropnode]The backup file of node1 is /opt/mogdb/tools/omm_mppdb/gs_dropnode_backup20220805102606/parameter_node1.tar
[gs_dropnode]Start to parse parameter config file on node1.
[gs_dropnode]End to parse parameter config file on node1.
[gs_dropnode]Start to parse backup parameter config file on node1.
[gs_dropnode]End to parse backup parameter config file node1.
[gs_dropnode]Start to set openGauss config file on node1.
[gs_dropnode]End of set openGauss config file on node1.
[gs_dropnode]Start to backup parameter config file on node2.
[gs_dropnode]End to backup parameter config file on node2.
[gs_dropnode]The backup file of node2 is /opt/mogdb/tools/omm_mppdb/gs_dropnode_backup20220805102607/parameter_node2.tar
[gs_dropnode]Start to parse parameter config file on node2.
[gs_dropnode]End to parse parameter config file on node2.
[gs_dropnode]Start to parse backup parameter config file on node2.
[gs_dropnode]End to parse backup parameter config file node2.
[gs_dropnode]Start to set openGauss config file on node2.
[gs_dropnode]End of set openGauss config file on node2.
[gs_dropnode]Start of set pg_hba config file on node1.
[gs_dropnode]End of set pg_hba config file on node1.
[gs_dropnode]Start of set pg_hba config file on node2.
[gs_dropnode]End of set pg_hba config file on node2.
[gs_dropnode]Start to set repl slot on node1.
[gs_dropnode]Start to get repl slot on node1.
[gs_dropnode]End of set repl slot on node1.
[gs_dropnode]Start to modify the cluster static conf.
[gs_dropnode]End of modify the cluster static conf.
[gs_dropnode]Success to drop the target nodes.
[omm@node1 ~]$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip port instance state
----------------------------------------------------------------------------
1 node1 ***.***.***.*** 25000 6001 /data/mogdb P Primary Normal
2 node2 ***.***.***.*** 25000 6002 /data/mogdb S Standby Normal
[omm@node1 ~]$
目標備庫單獨服務(可選)
透過 gs_dropnode 工具已經將 node3 節點從叢集內移除,並關閉了資料庫例項,但是資料目錄依然保留,而且資料庫配置檔案中 replconninfo 資訊也沒有清理。
--狀態檢查
[omm@node3 ~]$ gs_ctl query -D /data/mogdb
[2022-08-05 10:27:53.100][24663][][gs_ctl]: gs_ctl query ,datadir is /data/mogdb
[2022-08-05 10:27:53.100][24663][][gs_ctl]: PID file "/data/mogdb/postmaster.pid" does not exist
[2022-08-05 10:27:53.100][24663][][gs_ctl]: Is server running?
[omm@node3 ~]$ cat /data/mogdb/postgresql.conf |grep -i replconninfo
replconninfo1 = 'localhost=***.***.***.*** localport=25001 localheartbeatport=25003 localservice=25004 remotehost=***.***.***.*** remoteport=25001 remoteheartbeatport=25003 remoteservice=25004'
replconninfo2 = 'localhost=***.***.***.*** localport=25001 localheartbeatport=25003 localservice=25004 remotehost=***.***.***.*** remoteport=25001 remoteheartbeatport=25003 remoteservice=25004'
--註釋複製資訊
[omm@node3 ~]$ gs_guc set -D /data/mogdb/ -c "replconninfo1"
[omm@node3 ~]$ gs_guc set -D /data/mogdb/ -c "replconninfo2"
[omm@node3 ~]$ cat /data/mogdb/postgresql.conf |grep -i replconninfo
#replconninfo1 = 'localhost=***.***.***.*** localport=25001 localheartbeatport=25003 localservice=25004 remotehost=***.***.***.*** remoteport=25001 remoteheartbeatport=25003 remoteservice=25004'
#replconninfo2 = 'localhost=***.***.***.*** localport=25001 localheartbeatport=25003 localservice=25004 remotehost=***.***.***.*** remoteport=25001 remoteheartbeatport=25003 remoteservice=25004'
--啟動資料庫
[omm@node3 ~]$ gs_ctl -D /data/mogdb start
[omm@node3 ~]$ gsql -p 25000 postgres -r
gsql ((MogDB 3.0.0 build 62408a0f) compiled at 2022-06-30 14:21:11 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
MogDB=# select pg_is_in_recovery();
pg_is_in_recovery
-------------------
f
(1 row)
MogDB=#
目標備庫清理資料(可選)
[omm@node3 ~]$ ls /data/mogdb
backup_label.old gaussdb.state mot.conf pg_hba.conf pg_location pg_serial PG_VERSION postmaster.opts server.key
base global pg_clog pg_hba.conf.bak pg_logical pg_snapshots pg_xlog postmaster.pid server.key.cipher
build_completed.done gs_build.pid pg_csnlog pg_hba.conf.lock pg_multixact pg_stat_tmp postgresql.conf postmaster.pid.lock server.key.rand
cacert.pem gs_gazelle.conf pg_ctl.lock pg_ident.conf pg_notify pg_tblspc postgresql.conf.bak rewind_lable undo
full_backup_label gswlm_userinfo.cfg pg_errorinfo pg_llog pg_replslot pg_twophase postgresql.conf.lock server.crt
--刪除資料目錄
[omm@node3 ~]$ gs_uninstall --delete-data -L
Checking uninstallation.
Successfully checked uninstallation.
Stopping the cluster.
Successfully stopped the cluster.
Successfully deleted instances.
Uninstalling application.
Successfully uninstalled application.
Uninstallation succeeded.
[omm@node3 ~]$ ls /data/mogdb
[omm@node3 ~]$
PTK 安裝叢集擴容
[root@node1 .ptk]# ptk cluster scale-out -h
Scale out a MogDB cluster
Usage:
ptk cluster scale-out [flags]
Examples:
ptk cluster -n CLUSTER_NAME scale-out -c add.yaml [--force] [--skip-check-distro] [--skip-check-os] [--skip-create-user]
Flags:
-c, --config string Scale config path
--default-guc Disable optimize guc config, use default value
--force If scale operation had failed or interruptted. you can use --force to scale again. it will clear the old dirty directory
--gen-template Generate a scale add template config
-h, --help help for scale-out
-n, --name string Cluster name
--skip-check-distro Skip check distro
--skip-check-os Skip check os
--skip-create-user Skip create user
-t, --timeout duration Opration timeout (default 10m0s)
Global Flags:
-f, --file string Specify a configuration file of cluster
--log-file string Specify a log output file
--log-format string Specify the log message format. Options: [text, json] (default "text")
--log-level string Specify the log level. Options: [debug, info, warning, error, panic] (default "info")
-v, --version Print version of ptk
檢查叢集狀態
[root@node1 ~]# ptk cluster -n M30 status
[ Cluster State ]
database_version : MogDB-MogDB
cluster_name : M30
cluster_state : Normal
current_az : AZ_ALL
[ Datanode State ]
id | ip | port | user | instance | db_role | state
-------+-----------------+-------+------+----------+---------+---------
6001 | ***.***.***.*** | 25000 | omm | dn_6001 | primary | Normal
6002 | ***.***.***.*** | 25000 | omm | dn_6002 | standby | Normal
生成擴容配置檔案
[root@node1 .ptk]# ptk cluster -n M30 scale-out --gen-template > add.yaml
[root@node1 .ptk]# cat add.yaml
- host: ***.***.***.***
db_port: 25000
role: standby
ssh_option:
host: ***.***.***.***
port: 22
user: root
password: "******"
叢集擴容
[root@node1 .ptk]# ptk cluster -n M30 scale-out -c add.yaml
scale [stage=preCheck]
INFO[2022-08-05T14:19:52.162] start check operating system
INFO[2022-08-05T14:19:52.633] prechecking dependent tools...
INFO[2022-08-05T14:19:52.932] platform: centos_7_64bit host=***.***.***.***
.
.
.
INFO[2022-08-05T14:20:25.432] reload ***.***.***.*** database by gs_ctl host=***.***.***.***
INFO[2022-08-05T14:20:25.504] set ***.***.***.*** postgresql.conf host=***.***.***.***
INFO[2022-08-05T14:20:25.582] generate static config to /opt/mogdb/app/bin/cluster_static_config host=***.***.***.***
INFO[2022-08-05T14:20:25.612] change /opt/mogdb/app/bin/cluster_static_config owner to omm host=***.***.***.***
INFO[2022-08-05T14:20:25.625] set ***.***.***.*** hba config host=***.***.***.***
INFO[2022-08-05T14:20:25.709] build ***.***.***.*** database by gs_ctl host=***.***.***.***
Scale success.
[root@node1 .ptk]# ptk cluster -n M30 status
[ Cluster State ]
database_version : MogDB-MogDB
cluster_name : M30
cluster_state : Normal
current_az : AZ_ALL
[ Datanode State ]
id | ip | port | user | instance | db_role | state
-------+-----------------+-------+------+----------+---------+---------
6001 | ***.***.***.*** | 25000 | omm | dn_6001 | primary | Normal
6002 | ***.***.***.*** | 25000 | omm | dn_6002 | standby | Normal
6003 | ***.***.***.*** | 25000 | omm | dn_6003 | standby | Normal
PTK 叢集縮容
[root@node1 .ptk]# ptk cluster scale-in -h
Scale in a MogDB cluster
Usage:
ptk cluster scale-in [flags]
Examples:
ptk cluster -n CLUSTER_NAME scale-in -H 10.0.0.1 [--stop-db] [--clear-user] [--clear-dir] [--clear-env] [-t 120]
Flags:
--clear-dir Clear relevant dir
--clear-env Clear env value
--clear-user Clear user in delete hosts
-h, --help help for scale-in
-H, --host stringArray Scale delete hosts
-n, --name string Cluster name
--stop-db Stop the database
-t, --timeout duration Opration timeout (default 5m0s)
Global Flags:
-f, --file string Specify a configuration file of cluster
--log-file string Specify a log output file
--log-format string Specify the log message format. Options: [text, json] (default "text")
--log-level string Specify the log level. Options: [debug, info, warning, error, panic] (default "info")
-v, --version Print version of ptk
叢集縮容
[root@node1 .ptk]# ptk cluster -n M30 scale-in -H ***.***.***.*** --stop-db
scale [stage=preCheck]
scale [stage=exec]
modify the instance[***.***.***.***]:/data/mogdb/postgres.conf replconninfo value
INFO[2022-08-05T14:41:46.280] reload ***.***.***.*** database by gs_ctl host=***.***.***.***
modify the instance[***.***.***.***]:/data/mogdb/postgres.conf replconninfo value
INFO[2022-08-05T14:41:46.385] reload ***.***.***.*** database by gs_ctl host=***.***.***.***
modify the instance[***.***.***.***]:/data/mogdb/postgres.conf replconninfo value
INFO[2022-08-05T14:41:46.458] reload ***.***.***.*** database by gs_ctl host=***.***.***.***
scale [stage=postExec]
Would you want delete directory(AppDir,DataDir,ToolDir,LogDir)?[Y|Yes](default=N) Y
Would you want delete the user?[Y|Yes](default=N) Y
Would you want clear the env?[Y|Yes](default=N) Y
INFO[2022-08-05T14:42:06.251] stop ***.***.***.*** database by gs_ctl host=***.***.***.***
INFO[2022-08-05T14:42:06.321] remove files /opt/mogdb/app,/data/mogdb,/opt/mogdb/tool,/opt/mogdb/log host=***.***.***.***
INFO[2022-08-05T14:42:06.587] remove user profiles host=***.***.***.***
INFO[2022-08-05T14:42:06.607] delete os user omm host=***.***.***.***
Scale success.
[root@node1 .ptk]# ptk cluster -n M30 status
[ Cluster State ]
database_version : MogDB-MogDB
cluster_name : M30
cluster_state : Normal
current_az : AZ_ALL
[ Datanode State ]
id | ip | port | user | instance | db_role | state
-------+-----------------+-------+------+----------+---------+---------
6001 | ***.***.***.*** | 25000 | omm | dn_6001 | primary | Normal
6002 | ***.***.***.*** | 25000 | omm | dn_6002 | standby | Normal
[root@node1 .ptk]#