原作者:曹碧碧
1 PTK简介
PTK (Provisioning Toolkit)是一款针对 MogDB 数据库开发的软件安装和运维工具,旨在帮助用户更便捷地安装部署MogDB数据库。
如果用户想要运行 MogDB 或者 MogDB 的相关组件时,仅需要执行一行命令即可实现。
1.1 使用场景
- 开发人员快速启动多个本地MogDB环境
- 用户通过PTK快速安装部署MogDB
- DBA日常运维使用
- 第三方运维平台集成
1.2 推荐部署架构
2 PTK安装
PTK 作为一个部署管理工具,并不需要和数据库实例安装到一起。
推荐使用一个中控管理机器来安装PTK,然后通过该中控机去部署管理数据库实例到其他服务器,这样的话,可以避免数据库实例机器的故障造成 PTK 不可用。
2.1 在线安装
- 执行以下命令安装PTK(非windows系统):
curl --proto '=https' --tlsv1.2 -sSf https://cdn-mogdb.enmotech.com/ptk/install.sh | sh
- 安装完成后会提示如下信息(根据运行PTK的 SHELL 类型不同,信息会有所差异)
解释info: downloading ptk package
Detected shell: bash
Shell profile: /root/.bashrc
ptk has been added to PATH in /root/.bashrc
open a new terminal or source /root/.bashrc to active it
Installed path: /root/.ptk/bin/ptk
- 通过提示的 source 指令或打开一个新的终端窗口来使 PTK PATH 环境变量生效。以 bash 为例:
source $HOME/.bashrc
2.2 离线安装
- 下载PTK安装包
根据CPU和操作系统类型下载合适的PTK安装包。
下载链接:https://mogdb.io/downloads/ptk/all
注:若在下载列表中未找到支持的PTK安装包,可以将PTK安装在支持的第三台机器上,通过第三台机器远程部署MogDB数据库。
- 上传并解压缩安装包
tar -zxvf ptk_1.2.0_linux_x86_64.tar.gz
- 配置PTK环境变量(推荐将ptk放在在线安装的默认路径)
mkdir -p /root/.ptk/bin
echo "export PATH=/root/.ptk/bin:\$PATH" >>/root/.bash_profile
source /root/.bash_profile
2.3 PTK工作目录
目录结构
解释
[root@centos .ptk]# ls -al
total 8
drwxr-xr-x 6 root root 73 Feb 1 02:02 .
dr-xr-x---. 8 root root 4096 Feb 1 02:02 ..
drwxr-xr-x 2 root root 39 Feb 1 02:02 bin
drwx------ 2 root root 6 Feb 1 02:02 cache
drwx------ 2 root root 6 Feb 1 02:02 data
drwx------ 2 root root 6 Feb 1 02:03 log
-rw-r--r-- 1 root root 95 Feb 1 02:03 metadata.yml
[root@centos .ptk]#
bin:ptk二进制文件目录,包含ptk可执行文件及当前官网最新版本号。
cache:缓存文件目录,ptk在线下载的安装存放在该目录。
data:数据文件,存储纳管的集群信息,以被纳管的集群名称作为下一次文件夹名称。
Log:日志文件,存储ptk运行日志,如在安装过程中ptk的debug级别日志存放在该路径下。
meta.yaml:ptk元数据文件
3 使用PTK安装MogDB数据库
3.1 准备配置文件
3.1.1 单节点配置文件
使用ptk template --local生成单机数据库安装配置文件
解释
[root@node1 ~]# ptk template --local > config.yaml
[root@node1 ~]#
[root@node1 ~]# cat config.yaml
global:
# cluster name (required)
cluster_name: perlman
# system user for running database
user: omm
# system user group
group: omm
# base directory for installing database server
base_dir: /opt/mogdb
db_servers:
- host: 127.0.0.1
# database port
db_port: 26000
[root@node1 ~]#
注:如果全部使用默认值,则PTK 执行以下操作:
- 在本机安装数据库;
- 运行数据库的操作系统用户为omm ,用户组名称也是omm,该用户没有默认密码;
- 数据库安装在 /opt/mogdb目录下,在该目录下会创建4个目录:app, data, log, tool,分别用于存储数据库软件、数据文件、数据库日志和数据库相关工具;
- 数据库监听端口为26000。
3.1.2 主备节点配置文件
使用ptk template l生成主备数据库安装配置文件
解释[root@node1 ~]# ptk template > config.yaml
[root@node1 ~]#
[root@node1 ~]# cat config.yaml
global:
# cluster name
cluster_name: shirley
# system user for running db
user: omm
# system user group, same as username if not given
group: omm
# (Optional) system user password, use 'ptk encrypt' to encrypt it if not empty
user_password: "" # ptk encrypted password
# database password, use 'ptk encrypt' to encrypt it if not empty
db_password: "" # ptk encrypted password
# database port
db_port: 26000
# base directory for installing database server,
# if any of app_dir,data_dir,log_dir and tool_dir not set,
# PTK will create corresponding directory under base_dir
base_dir: /opt/mogdb
# (Optional) application directory of database
# app_dir: ""
# (Optional) log directory of database
# log_dir: ""
# (Optional) data directory of database
# data_dir: ""
# (Optional) tool directory of database
# tool_dir: ""
# (Optional) temporary directory of database
# tmp_dir: ""
db_servers:
- host: <replace host ip here>
# # database role, options: primary, standby, cascade_standby
role: primary
# available zone name
az_name: AZ1
# available zone priority, diffrent az should have diffrent priority
az_priority: 1
# (Optional) parameters in postgresql.conf
# db_conf:
# key1: value1
# key2: value2
# (Optional) gs_initdb custom options
# gs_initdb_opts:
# - --encoding=UTF-8
# - --dbcompatibility=A
# SSH connection configuration
ssh_option:
port: 22
user: root
password: "" # ptk encrypted password
key_file: ""
passphrase: ""
- host: <replace host ip here>
role: standby
az_name: AZ1
az_priority: 1
# db_conf:
# key1: value1
# key2: value2
ssh_option:
port: 22
user: root
password: "" # ptk encrypted password
key_file: ""
passphrase: ""
[root@node1 ~]#
注:配置文件中需要填写密码的部分需使用PTK加密之后,填写密文密码,不可填写明文密码。
3.2 使用PTK检查并修复本机系统
1、使用ptk checkos -f config.yaml检查本机操作系统。检查项列表如下:
| 类别编号 | 类别 | 检查项 | 说明 |
|---|---|---|---|
| A1 | 系统版本 | Check_OS_Version | 检查系统版本 |
| A2 | 内核版本 | Check_Kernel_Version | 检查内核版本 |
| A3 | 字符集 | Check_Unicode | 检查字符集 |
| A4 | 时区 | Check_TimeZone | 检查时区 |
| A5 | 内存交换区 | Check_Swap_Memory_Configure | 检查 swap 内存配置 |
| A6 | sysctl参数 | Check_SysCtl_Parameter | 检查 sysctl 参数 |
| A7 | 文件系统 | Check_FileSystem_Configure | 检查文件系统配置 |
| A8 | 磁盘配置 | Check_Disk_Configure | 检查磁盘配置 |
| A9 | 预读块设置 | Check_BlockDev_Configure | 检查块设备配置 |
| Check_Logical_Block | 检查逻辑块 | ||
| A10 | IO调度 | Check_IO_Request | 检查 IO 请求参数 |
| Check_Asynchronous_IO_Request | 检查异步 IO 请求参数 | ||
| Check_IO_Configure | 检查 IO 配置 | ||
| A11 | 网络配置 | Check_Network_Configure | 检查网络配置 |
| A12 | 时钟一致性 | Check_Time_Consistency | 检查时钟一致性 |
| A13 | 防火墙配置 | Check_Firewall_Service | 检查防火墙配置 |
| A14 | 透明大页配置 | Check_THP_Service | 检查透明大页配置 |
| A15 | 依赖包 | Check_Dependent_Package | 检查数据库系统安装依赖 |
| A16 | CPU指令集 | Check_CPU_Instruction_Set | 检查CPU指令集 |
| A17 | 端口状态 | Check_Port | 检查数据库端口是否被占用 |
| A18 | Selinux状态 | Check_Selinux | 检查系统Selinux是否关闭 |
| A19 | 用户Ulimit状态 | Check_User_Ulimit | 检查数据库用户的 Ulimit 值是否满足数据库要求(系统用户存在时) |
2、PTK检查结果分类
PTK 的检查结果分为四个等级:
- OK:符合预期值,满足安装需求。
- Warning: 不符合预期值,但不影响安装(预期值主要针对生产环境进行的建议)。
- Abnormal: 不满足安装要求,可能会导致安装过程失败,需根据 PTK 给出的修改建议脚本,人工执行修改。
- ExecuteError: 执行错误,该等级表示 PTK 在检查时执行命令失败,可能为用户环境工具缺失或内部BUG,需根据实际错误提示进行修正。
在安装数据库之前,需确保所有的检查项都在 OK 或 Warning 级别,如果存在 Abnormal 的检查结果,在安装时会中断退出。
3、修复系统
PTK 在执行了 checkos 的命令后,如果存在 Abnormal 项目,会在当前目录下生成一个以 root_fix_os 为前缀,后面跟着时间戳的 shell 脚本文件。
该文件内容包含了 PTK 针对 Abnormal 项目给出的修复建议。可以手动执行里面的修复指令,也可以通过 PTK 自动在集群内所有机器上执行该脚本来进行系统修复。
修复的指令一般都需要超级用户权限,所以在通过 exec 指令修复时,提供的 config.yaml 中的SSH 用户需为 root 或具有 sudo 免密执行的权限。
ptk exec -f config.yaml -s <root_fix_os.xxx.sh>
注:
1、默认不输出 Warning 级别的修复建议,如果需要修复,需在 checkos 执行时,指定 --gen-warning-fix 选项。
2、集群环境下使用ptk exec执行修复脚本是可以自动修复所有节点的系统环境,直接手动执行修复脚本时需要在每个节点单独手动执行。
3.3 执行安装
使用PTK安装数据库。
- 在线安装
ptk install -f config.yaml
- 离线安装
ptk install -f config.yaml --pkg ./MogDB-5.0.3-Kylin-x86_64-all.tar.gz
注:在线安装默认会安装当前已经正式发布的 MogDB 最新版本,版本号可以在 MogDB 官网下载页面查询。安装过程中会提示用户输入数据库初始用户的密码,此密码一般为与操作系统用户名相同的数据库初始用户密码。PTK自动完成所有安装操作后,会启动数据库实例。
3.4 验证安装
安装成功后,PTK会启动数据库实例,可以通过 ptk ls 来查看安装的实例信息。使用ptk cluster -n cluster_name status 查看实例运行状态。
4 使用PTK卸载MogDB数据库
卸载时,PTK会检测集群是否处于运行状态,运行中是不允许被卸载的,需先将集群停止后再进行卸载操作。
数据库集群的卸载仅需在 PTK 所在的服务器上执行:
ptk uninstall -n cluster_name
执行卸载时需指定要卸载的集群名称,可以通过ptk ls来查看集群名称。
在卸载中,PTK 会和用户确认卸载的内容,以确认要删除的集群拓扑信息,确认是否要连带删除系统用户,以及确认是否要连带删除数据库数据。
在 PTK 执行数据库卸载操作时,如果指定了删除数据目录,PTK 仅会删除数据目录,不会删除数据目录所在的父目录,需用户手动清理父目录(即安装配置文件中的base_dir)。
参考文档
https://docs.mogdb.io/zh/mogdb/v5.0/ptk-based-installatio




