本文將使用PTK工具演示如何快速安裝部署一套MogDB集群、縮容刪除一個節點及擴容增加一個節點。
一、PTK簡介
PTK是針對MogDB數據庫開發的軟件安裝和運維工具,旨在幫助用戶更便捷地安裝部署MogDB數據庫。
PTK的唯一官方地址為:https://docs.mogdb.io/zh/ptk/v0.3/overview
熟悉openGauss的朋友應該知道gs_om工具,它依賴python3,安裝配置有些復雜,主要分為root預安裝和omm安裝兩個子操作。
root用戶預安裝使用gs_preinstall命令
gs_preinstall -U omm -G dbgrp -X clusterconfig.xml
omm用戶安裝使用gs_preinstall命令
gs_install -X /opt/software/clusterconfig.xml \
--gsinit-parameter="--encoding=UTF8" \
--gsinit-parameter="--dbcompatibility=PG" \
--gsinit-parameter="--pwpasswd=Admin@1234"
初次接觸使用om安裝的人可能會遇到不少問題…
在此背景下,PTK應時而生,通過ptk --help命令可以看到它支持的主要功能:
第一部分是安裝前的命令,包括打印支持的操作系統版本、在線下載合適的安裝包、檢查操作系統依賴包、加密配置文件項、顯示參考的配置模板
Pre Install Commands:
candidate Print software version list which PTK supported
download Download MogDB package online
checkos Check cluster servers os dependencies
encrypt Provides a convenient way to encrypt your text/password
template Print template of configuration
第二部分是正式安裝或者卸載命令
Install Commands:
install Install the MogDB database cluster based on topology configuration
uninstall Uninstall a MogDB database cluster
第三部分是安裝后的集群列表查詢及集群管理(服務啟停、查看狀態、安裝插件、擴縮容)
Post Install Commands:
ls List MogDB clusters
cluster Operations for manage database cluster
二、PTK安裝
PTK軟件并不需要安裝到數據庫服務器本地,可以獨立安裝并管理多套集群。
PTK的安裝可以參考 https://docs.mogdb.io/zh/ptk/v0.3/quick-start
本文通過離線下載,解壓安裝到/opt/ptk
# /opt/ptk/ptk --version
PTK Version: v0.3.2
Go Version: go1.17.1
Build Date: 2022-08-05T09:11:42Z
Git Hash: a1358c6
本文環境使用兩節點虛機192.168.137.131和192.168.137.132,1G內存+1CPU,PTK直接使用其中一臺機器。
生產環境推薦采用獨立的服務器安裝PTK。
三、PTK安裝卸載
PTK的使用需要root用戶操作,需要做一些系統依賴及操作系統參數調優等工作。
由于之前安裝過MogDB集群,可以通過ls命令查看
# /opt/ptk/ptk ls
cluster_name | instances | user | data_dir | db_version | create_time
---------------+----------------------+------+--------------------+------------------------------+----------------------
mymogdb | 192.168.137.131:3000 | omm | /opt/mogdb301/data | MogDB 3.0.1 (build 1a363ea9) | 2022-08-16 15:57:17
| 192.168.137.132:3000 | | | |
操作之前也應該優先使用ls命令進行檢查
測試卸載
之前已安裝過MogDB集群,先測試卸載
注意:卸載之前先需要關閉集群服務
# /opt/ptk/ptk uninstall -n mymogdb
=============================
global:
cluster_name: mymogdb
user: omm
group: dbgrp
app_dir: /opt/mogdb301/app
data_dir: /opt/mogdb301/data
log_dir: /opt/mogdb301/log
tool_dir: /opt/mogdb301/tool
tmp_dir: /opt/mogdb301/tmp
cm_server_port: 15300
db_servers:
- host: 192.168.137.131
db_port: 3000
role: primary
az_name: AZ1
az_priority: 1
- host: 192.168.137.132
db_port: 3000
role: standby
az_name: AZ1
az_priority: 1
=============================
Do you really want to uninstall this cluster? Please confirm carefully[Y|Yes](default=N)
根據操作交互提示進行操作,即可順利完成卸載。
測試安裝
安裝一主一備
checkos
[root@mogdb1 ~]# /opt/ptk/ptk checkos
...
# Check Results
Item | Level
------------------------------------+-----------
A1.Check_OS_Version | OK
A2.Check_Kernel_Version | OK
A3.Check_Unicode | OK
A4.Check_TimeZone | OK
A5.Check_Swap_Memory_Configure | Warning
A6.Check_SysCtl_Parameter | OK
A7.Check_FileSystem_Configure | OK
A8.Check_Disk_Configure | OK
A9.Check_BlockDev_Configure | OK
A9.Check_Logical_Block | OK
A10.Check_IO_Request | Warning
A10.Check_Asynchronous_IO_Request | OK
A10.Check_IO_Configure | OK
A11.Check_Network_Configure | OK
A12.Check_Time_Consistency | OK
A13.Check_Firewall_Service | OK
A14.Check_THP_Service | OK
A15.Check_Dependent_Package | OK
A16.Check_CPU_Instruction_Set | Abnormal
A17.Check_Port | OK
Total count 20, abnormal count 1, warning count 2
Failed to check os, can’t perform installation unless fix all the abnormal items
You can use 'ptk checkos -i ITEM --detail' to see detail message
Please check root_fix_os.[TIMESTAMP].sh for commands to resolve.
生產環境需要根據fix腳本把Warning和Abnormal項修復成功之后,再進行安裝。
本文虛擬機暫時不執行操作系統參數fix的腳本,重點關注A16項:
# /opt/ptk/ptk checkos -i A16 --detail
...
...
# Check Results
Item | Level | Message
--------------------------------+----------+-----------------------------------------------------------------------
A16.Check_CPU_Instruction_Set | Abnormal | [192.168.137.131] [PTK-508001] not found cpu instruction set: [bmi2]
Total count 1, abnormal count 1, warning count 0
Failed to check os, can’t perform installation unless fix all the abnormal items
You can use 'ptk checkos -i ITEM --detail' to see detail message
Please check root_fix_os.[TIMESTAMP].sh for commands to resolve.
提示是缺bmi2指令集,bmi2是做位操作的CPU指令集,需要安裝。
生產環境對checkos檢查發現的問題應該逐個修復再進行安裝,本文主要演示PTK功能,下面安裝時通過參數臨時忽略。
生成模板配置文件
如果已有模板配置文件,可以直接使用
/opt/ptk/ptk template \
--base-dir=/opt/mogdb301 \
--cluster-name=mymogdb \
--user=omm \
--group=dbgrp \
--port=3000 \
??cluster > config.yaml
對config.yaml 可以進行敏感內容加密,比如數據庫初始用戶密碼、SSH密碼等。
# /opt/ptk/ptk encrypt admin
admin: pTk6Y2Q4MzNmYmQ8RD1FPTxAPTgzSDBzTGdrY1VuVmVhd0s0LUhrTzNyNW5qNFhKaTFRNDI4RnN5VW52YWM=
編輯好的配置文件config.yaml 如下:
global:
cluster_name: "mymogdb"
user: "omm"
group: "dbgrp"
user_password: "pTk6NDM4Yjk3NjA8RDxCPUQ8RDVYd2VfVDFfNzU3WEtWUkV2YU5YRHFSVlVCZFBwLV8ybkZabFY3VjJUTjA="
db_password: "pTk6MDE1ZmQ3ZTg8RDxCPUM/RVNKUzQtNE10S2h0NGZ3eXRpMXlTWURDWGdVSUtNeDZvRzNwRHk0M09lUEk="
db_port: 3000
cm_server_port: 15300
base_dir: "/opt/mogdb301"
app_dir: "/opt/mogdb301/app"
log_dir: "/opt/mogdb301/log"
data_dir: "/opt/mogdb301/data"
tool_dir: "/opt/mogdb301/tool"
cm_dir: "/opt/mogdb301/cm"
# tmp_dir: "/tmp"
# core_file_dir: ""
ssh_option:
port: 22
user: root
password: "pTk6ZDA2NmFmOTQ8RDxCPUNBP19NSnVKVFV1eFJ6SG5wOElmVC1uS3pqbWNDSGh1bFJzNEZqSHlGQTRuRWs="
conn_timeout: "5s"
exec_timeout: "1m"
db_servers:
- host: "192.168.137.131"
db_port: 3000
ha_port: 3001
role: "primary"
replication_type: 1
gs_initdb_opts:
- "--encoding=UTF-8"
- "--dbcompatibility=PG"
- host: "192.168.137.132"
db_port: 3000
ha_port: 3001
role: "standby"
replication_type: 1
安裝
/opt/ptk/ptk install --assumeyes \
--pkg /opt/software/MogDB-3.0.1-CentOS-x86_64.tar.gz \
--skip-check-distro --skip-check-os --skip-create-user \
--file=config.yaml
本文使用–skip-check-distro --skip-check-os參數做了臨時跳過,生產環境應該逐個處理修復。
–skip-create-user跳過創建用戶,因為做了手工創建。
安裝過程簡略如下:
...
INFO[2022-08-19T10:55:02.420] Time elapsed: 1m45s
cluste_name | host | user | port | stage | status | message
--------------+-----------------+------+------+--------+---------------+----------
mymogdb | 192.168.137.131 | omm | 3000 | launch | start_success | success
| 192.168.137.132 | omm | 3000 | launch | start_success | success
查看狀態
安裝完查看狀態正常
# /opt/ptk/ptk cluster status -n mymogdb
[ Cluster State ]
database_version : MogDB-MogDB
cluster_name : mymogdb
cluster_state : Normal
current_az : AZ_ALL
[ Datanode State ]
id | ip | port | user | instance | db_role | state
-------+-----------------+------+------+----------+---------+---------
6001 | 192.168.137.131 | 3000 | omm | dn_6001 | primary | Normal
6002 | 192.168.137.132 | 3000 | omm | dn_6002 | standby | Normal
四、PTK擴縮容
擴縮容使用scale-in、scale-out命令進行操作,操作前先使用cluster status查看確認集群,參考上一步。
測試縮容
對剛才安裝的一主一備進行節點刪除,刪除備節點縮容后將變成單機。
使用scale-in指定要刪除備機的IP進行縮容
# /opt/ptk/ptk cluster -n mymogdb scale-in -H 192.168.137.132
...
Would you want delete directory(AppDir,DataDir,ToolDir,LogDir)?[Y|Yes](default=N) y
Would you want clear the env?[Y|Yes](default=N) y
Would you want delete the user?[Y|Yes](default=N) n
...
Scale success.
縮容完查看集群狀態已經變為單機
# /opt/ptk/ptk cluster status -n mymogdb
[ Cluster State ]
database_version : MogDB-MogDB
cluster_name : mymogdb
cluster_state : Normal
current_az : AZ_ALL
[ Datanode State ]
id | ip | port | user | instance | db_role | state
-------+-----------------+------+------+----------+---------+---------
6001 | 192.168.137.131 | 3000 | omm | dn_6001 | Normal | Normal
測試擴容
使用scale-out接著對單機擴容,增加一個備節點,擴容成一主一備。
scale-out需要接收一個新增節點配置的文件,使用–gen-template生產,然后修改為具體的配置
/opt/ptk/ptk cluster -n mymogdb scale-out --gen-template > add.yaml
修改完的add.yaml文件內容如下:
- host: 192.168.137.132
db_port: 3000
role: standby
ssh_option:
host: 192.168.137.132
port: 22
user: root
password: "pTk6ZDA2NmFmOTQ8RDxCPUNBP19NSnVKVFV1eFJ6SG5wOElmVC1uS3pqbWNDSGh1bFJzNEZqSHlGQTRuRWs="
使用scale-out命令進行縮容
# /opt/ptk/ptk cluster -n mymogdb --skip-check-os --skip-create-user scale-out -c add.yaml
scale [stage=preCheck]
...
Scale success.
注意這里進行擴容時會聯網去下載MogDB安裝包,本文是在離線環境進行,可以在.ptk目錄的cache子目錄把安裝包提前拷貝進去。
# ll /root/.ptk/cache/
total 136004
-rw-r--r-- 1 omm dbgrp 139264406 Aug 6 11:30 MogDB-3.0.1-CentOS-x86_64.tar.gz
拷貝時需要覆蓋,可能會存在一個零字節的文件,因為聯網下載沒有成功。
縮容完檢查狀態
# /opt/ptk/ptk cluster status -n mymogdb
[ Cluster State ]
database_version : MogDB-MogDB
cluster_name : mymogdb
cluster_state : Normal
current_az : AZ_ALL
[ Datanode State ]
id | ip | port | user | instance | db_role | state
-------+-----------------+------+------+----------+---------+---------
6001 | 192.168.137.131 | 3000 | omm | dn_6001 | primary | Normal
6002 | 192.168.137.132 | 3000 | omm | dn_6002 | standby | Normal
總結
PTK進行安裝、卸載、擴縮容非常便捷,期待下一版本支持數據庫升級的功能。




