MogDB openGauss資料庫擴縮容的幾種方式

奔跑的数据库發表於2024-03-14

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]#

相關文章