暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

PTK一键快速部署MogDB

原创 董宏伟 云和恩墨 2023-06-13
387

1、PTK 简介

PTK (Provisioning Toolkit)是一款针对 MogDB 数据库开发的软件安装和运维工具,旨在帮助用户更便捷地安装部署MogDB数据库。
如果用户想要运行 MogDB 或者 MogDB 的相关组件时,仅需要执行一行命令即可实现。

PTK官方文档地址

2、使用场景

  • 开发人员快速启动多个本地MogDB环境
  • 用户通过PTK快速安装部署MogDB
  • DBA日常运维使用
  • 第三方运维平台集成

3、开始安装

3.1、安装准备

有关环境要求和操作系统配置详情,请参见环境要求和操作系统配置。
MogDB安装环境要求

3.2、下载安装 PTK

3.2.1、在线安装PTK

curl --proto '=https' --tlsv1.2 -sSf https://cdn-mogdb.enmotech.com/ptk/install.sh | sh
source ~/.bash_profile
ptk --version
复制
该指令会自动将 PTK 安装在用户的家目录 $HOME/.ptk 目录下,该目录以后会作为 PTK 工具的工作目录, 其产生的缓存文件、数据文件以及集群的配置信息,备份信息等文件均会存储到该目录下。 同时,安装指令会自动将 $HOME/.ptk/bin 的路径加入到对应 SHELL Profile 文件的 PATH 环境变量中, 这样在用户登录到服务器后就可以直接使用 ptk 指令了。

安装完成后会提示如下信息(根据运行 PTK 的 SHELL 类型不同,信息会有所差异),输出结果如下:

[root@mogdb01 ~]# curl --proto '=https' --tlsv1.2 -sSf https://cdn-mogdb.enmotech.com/ptk/install.sh | sh
Downloading ptk package...
Detected shell: bash
Shell profile:  /root/.bash_profile
ptk has been added to PATH in /root/.bash_profile
open a new terminal or source /root/.bash_profile to active it
Installed path: /root/.ptk/bin/ptk
[root@mogdb01 ~]# source ~/.bash_profile
[root@mogdb01 ~]# ptk --version
PTK Version:    v0.8.3 release
Go Version:     go1.19.4
Build Date:     2023-06-05T16:19:02
Git Hash:       048219f
OS/Arch:        linux/amd64
[root@mogdb01 ~]#
复制

3.2.2、PTK生成配置文件

[root@mogdb01 ~]# ptk template >config.yaml
[root@mogdb01 ~]# cat config.yaml |grep -v '#'
global:
  cluster_name: bose
  user: omm
  group: omm
  db_port: 26000
  base_dir: /opt/mogdb

db_servers:
  - host: <replace host ip here>
    role: primary
    az_name: AZ1
    az_priority: 1
    ssh_option:
      port: 22
      user: root
      key_file: ""
      passphrase: ""
  - host: <replace host ip here>
    role: standby
    az_name: AZ1
    az_priority: 1
    ssh_option:
      port: 22
      user: root
      key_file: ""
      passphrase: ""
[root@mogdb01 ~]# 

复制

最终配置文件如下:

# config.yaml
global:
    cluster_name: mogdb1
    user: omm
    group: omm
    base_dir: /opt/mogdb
db_servers:
    - host: 127.0.0.1
      db_port: 26000
复制

如果全部使用默认值,则PTK 执行以下操作:

  • 在本机安装数据库;
  • 运行数据库的操作系统用户为omm ,用户组名称也是omm,该用户没有默认密码;
  • 数据库安装在 /opt/mogdb目录下,在该目录下会创建4个目录:app, data, log, tool,分别用于存储数据库软件、数据文件、数据库日志和数据库相关工具;
  • 数据库监听端口为26000;

3.3、检查本机系统

ptk checkos -f config.yaml
ptk checkos -f config.yaml --detail
复制

确保输出的检查结果均为 OK 或者 Warning ,如果有 Abnormal 或 ExecuteError出现,需用户根据日志提示先修正系统参数。

如果有 Abnormal 检查项,ptk 会自动生成一个 root_fix_***.sh 文件,可用于快速修正系统参数;如果有 ExecuteError 检查项,代表 ptk 执行失败,需要用户根据错误信息调整系统环境。

[root@mogdb01 ~]# ptk checkos -f config.yaml
INFO[2023-06-13T20:24:58.083] prechecking dependent tools...               
WARN[2023-06-13T20:24:58.156] [192.168.31.55][omm] net.ipv4.tcp_tw_recycle=0, expect 1 
WARN[2023-06-13T20:24:58.174] [192.168.31.55][omm] net.ipv4.tcp_keepalive_time=7200, expect 30 
WARN[2023-06-13T20:24:58.186] [192.168.31.55][omm] net.ipv4.tcp_max_syn_backlog=256, expect 65535 
WARN[2023-06-13T20:24:58.210] [192.168.31.55][omm] net.ipv4.tcp_keepalive_intvl=75, expect 30 
WARN[2023-06-13T20:24:58.218] [192.168.31.55][omm] net.ipv4.tcp_retries2=15, expect 12 
WARN[2023-06-13T20:24:58.230] [192.168.31.55][omm] net.ipv4.tcp_rmem=4096       87380   6291456, expect 8192 250000 16777216 
ERRO[2023-06-13T20:24:58.236] [192.168.31.55][omm] net.core.rmem_max=212992, expect 1048576 
ERRO[2023-06-13T20:24:58.242] [192.168.31.55][omm] kernel.sem=250       32000   32      128, expect 250 6400000 1000 25600 
WARN[2023-06-13T20:24:58.253] [192.168.31.55][omm] net.core.netdev_max_backlog=1000, expect 65535 
WARN[2023-06-13T20:24:58.267] [192.168.31.55][omm] net.ipv4.tcp_tw_reuse=0, expect 1 
WARN[2023-06-13T20:24:58.273] [192.168.31.55][omm] net.ipv4.tcp_retries1=3, expect 5 
WARN[2023-06-13T20:24:58.279] [192.168.31.55][omm] net.ipv4.tcp_wmem=4096       16384   4194304, expect 8192 250000 16777216 
ERRO[2023-06-13T20:24:58.286] [192.168.31.55][omm] net.core.wmem_max=212992, expect 1048576 
ERRO[2023-06-13T20:24:58.292] [192.168.31.55][omm] net.core.wmem_default=212992, expect 262144 
WARN[2023-06-13T20:24:58.306] [192.168.31.55][omm] vm.min_free_kbytes=67584, expect 407757 
WARN[2023-06-13T20:24:58.327] [192.168.31.55][omm] net.ipv4.tcp_syn_retries=6, expect 5 
WARN[2023-06-13T20:24:58.333] [192.168.31.55][omm] net.core.somaxconn=128, expect 65535 
ERRO[2023-06-13T20:24:58.339] [192.168.31.55][omm] net.core.rmem_default=212992, expect 262144 
INFO[2023-06-13T20:24:58.345] [192.168.31.55][omm] check kernel.core_pattern 
INFO[2023-06-13T20:24:58.360] [192.168.31.55][omm] check removeIPC value   
INFO[2023-06-13T20:24:58.438] [192.168.31.55][omm] check port 26000        
INFO[2023-06-13T20:24:58.454] [192.168.31.55][omm] port 26000 is free      
INFO[2023-06-13T20:24:58.461] [192.168.31.55][omm] locale: LANG=en_US.UTF-8 
INFO[2023-06-13T20:24:58.467] [192.168.31.55][omm] timezone: +0800         
INFO[2023-06-13T20:24:58.474] [192.168.31.55][omm] swap memory 8257532kB, total memory 8155140kB 
INFO[2023-06-13T20:24:58.507] [192.168.31.55][omm] platform: centos_7_64bit 
WARN[2023-06-13T20:24:58.526] [192.168.31.55][omm] device(/dev/sda) readahead value=8192, expect 16384. 
WARN[2023-06-13T20:24:58.572] [192.168.31.55][omm] device(sda) 'IO Request'=128, expect 256 
WARN[2023-06-13T20:24:58.572] [192.168.31.55][omm] device(sr0) 'IO Request'=128, expect 256 
WARN[2023-06-13T20:24:58.572] [192.168.31.55][omm] device(dm-0) 'IO Request'=128, expect 256 
WARN[2023-06-13T20:24:58.572] [192.168.31.55][omm] device(dm-1) 'IO Request'=128, expect 256 
WARN[2023-06-13T20:24:58.572] [192.168.31.55][omm] device(dm-2) 'IO Request'=128, expect 256 
INFO[2023-06-13T20:24:58.592] [192.168.31.55][omm] kernel version: 3.10.0-957.el7.x86_64 
ERRO[2023-06-13T20:25:03.985] [192.168.31.55][omm] not found package: numactl 
INFO[2023-06-13T20:25:03.985] all checkers finished                        
INFO[2023-06-13T20:25:03.985] write fix os script to root_fix_os.2023.0613.202503.sh success 
INFO[2023-06-13T20:25:03.985] time elapsed: 6s                             
# 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         | Abnormal  
  A7.Check_FileSystem_Configure     | OK        
  A8.Check_Disk_Configure           | OK        
  A9.Check_BlockDev_Configure       | Warning   
  A9.Check_Logical_Block            | OK        
  A10.Check_Asynchronous_IO_Request | OK        
  A10.Check_IO_Configure            | OK        
  A10.Check_IO_Request              | Warning   
  A11.Check_Network_Configure       | OK        
  A12.Check_Time_Consistency        | OK        
  A13.Check_Firewall_Status         | OK        
  A14.Check_THP_Status              | OK        
  A15.Check_Dependent_Package       | Abnormal  
  A16.Check_CPU_Instruction_Set     | OK        
  A17.Check_Port                    | OK        
  A18.Check_Selinux                 | OK        
  A19.Check_User_Ulimit             | OK        
Total count 22, abnormal count 2, warning count 3
Failed to check os, can’t perform installation unless fix all the abnormal items.
You can use 'ptk checkos -i ITEM --detail' to get detail message
Please check root_fix_os.[TIMESTAMP].sh for commands to resolve.

-- 执行修复脚本
[root@mogdb01 ~]# sh root_fix_os.2023.0613.202503.sh 
net.core.rmem_max = 1048576
kernel.sem = 250 6400000 1000 25600
net.core.wmem_max = 1048576
net.core.wmem_default = 262144
net.core.rmem_default = 262144
kernel.core_pattern = /var/log/coredump/%e.%p.%u.%t.core
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package numactl.x86_64 0:2.0.12-5.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================
 Package                                     Arch                                       Version                                           Repository                                Size
=========================================================================================================================================================================================
Installing:
 numactl                                     x86_64                                     2.0.12-5.el7                                      base                                      66 k

Transaction Summary
=========================================================================================================================================================================================
Install  1 Package

Total download size: 66 k
Installed size: 141 k
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/numactl-2.0.12-5.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for numactl-2.0.12-5.el7.x86_64.rpm is not installed
numactl-2.0.12-5.el7.x86_64.rpm                                                                                                                                   |  66 kB  00:00:00     
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-6.1810.2.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : numactl-2.0.12-5.el7.x86_64                                                                                                                                           1/1 
  Verifying  : numactl-2.0.12-5.el7.x86_64                                                                                                                                           1/1 

Installed:
  numactl.x86_64 0:2.0.12-5.el7                                                                                                                                                          

Complete!
[root@mogdb01 ~]# 

--再次检测,结果可以满足安装
# Check Results
                Item                |  Level  |                                 Message                                   
------------------------------------+---------+---------------------------------------------------------------------------
  A1.Check_OS_Version               | OK      |                                                                           
  A2.Check_Kernel_Version           | OK      |                                                                           
  A3.Check_Unicode                  | OK      |                                                                           
  A4.Check_TimeZone                 | OK      |                                                                           
  A5.Check_Swap_Memory_Configure    | Warning | [192.168.31.55]:                                                          
                                    |         | swap memory (8257532 KB) is lager than total memory (8155140 KB)          
  A6.Check_SysCtl_Parameter         | Warning | [192.168.31.55]:                                                          
                                    |         | Warning: net.ipv4.tcp_keepalive_time=7200, expect 30                      
                                    |         | Warning: net.ipv4.tcp_rmem=4096 87380   6291456, expect 8192 250000 16777216  
                                    |         | Warning: net.ipv4.tcp_retries2=15, expect 12                              
                                    |         | Warning: net.ipv4.tcp_wmem=4096 16384   4194304, expect 8192 250000 16777216  
                                    |         | Warning: net.ipv4.tcp_tw_reuse=0, expect 1                                
                                    |         | Warning: net.ipv4.tcp_keepalive_intvl=75, expect 30                       
                                    |         | Warning: net.ipv4.tcp_max_syn_backlog=256, expect 65535                   
                                    |         | Warning: net.ipv4.tcp_syn_retries=6, expect 5                             
                                    |         | Warning: net.core.somaxconn=128, expect 65535                             
                                    |         | Warning: net.ipv4.tcp_retries1=3, expect 5                                
                                    |         | Warning: net.core.netdev_max_backlog=1000, expect 65535                   
                                    |         | Warning: net.ipv4.tcp_tw_recycle=0, expect 1                              
                                    |         | Warning: vm.min_free_kbytes=67584, expect 407757                          
  A7.Check_FileSystem_Configure     | OK      |                                                                           
  A8.Check_Disk_Configure           | OK      |                                                                           
  A9.Check_BlockDev_Configure       | Warning | [192.168.31.55]:                                                          
                                    |         | device(/dev/sda) readahead value=8192, expect 16384.                      
  A9.Check_Logical_Block            | OK      |                                                                           
  A10.Check_IO_Request              | Warning | [192.168.31.55]:                                                          
                                    |         | Warning: device(dm-2) 'IO Request'=128, expect 256                        
                                    |         | Warning: device(sda) 'IO Request'=128, expect 256                         
                                    |         | Warning: device(sr0) 'IO Request'=128, expect 256                         
                                    |         | Warning: device(dm-0) 'IO Request'=128, expect 256                        
                                    |         | Warning: device(dm-1) 'IO Request'=128, expect 256                        
  A10.Check_Asynchronous_IO_Request | OK      |                                                                           
  A10.Check_IO_Configure            | OK      |                                                                           
  A11.Check_Network_Configure       | OK      |                                                                           
  A12.Check_Time_Consistency        | OK      |                                                                           
  A13.Check_Firewall_Status         | OK      |                                                                           
  A14.Check_THP_Status              | OK      |                                                                           
  A15.Check_Dependent_Package       | Warning | [192.168.31.55]:                                                          
                                    |         | Warning: not found package: flex                                          
                                    |         | Warning: not found package: bison                                         
                                    |         | Warning: not found package: ncurses-devel                                 
                                    |         | Warning: not found package: glibc-devel                                   
                                    |         | Warning: not found package: patch                                         
  A16.Check_CPU_Instruction_Set     | OK      |                                                                           
  A17.Check_Port                    | OK      |                                                                           
  A18.Check_Selinux                 | OK      |                                                                           
  A19.Check_User_Ulimit             | OK      |                                                                           
Total count 22, abnormal count 0, warning count 5

复制

image.png

3.4、执行安装

ptk install -f config.yaml

ptk ls
复制
默认会安装当前已经正式发布的 MogDB 最新版本,版本号可以在 MogDB 官网下载页面查询。安装过程中会提示用户输入数据库初始用户的密码,请用户自行记录并安全保存。PTK 自动完成所有安装操作后,会启动数据库实例。

PTK 也支持自定义安装包,可以通过手工下载安装包,指定安装。例如执行以下命令,将使用当前目录下的该安装包进行数据库安装。

ptk install -f config.yaml --pkg ./MogDB-3.0.1-openEuler-arm64.tar.gz

复制

安装成功后,可以通过 ptk ls 来查看安装的实例信息。

[root@mogdb01 ~]# ptk ls
  cluster_name |  id  |        addr         | user |    data_dir     |          db_version          |     create_time     | comment  
---------------+------+---------------------+------+-----------------+------------------------------+---------------------+----------
  mogdb1       | 6001 | 192.168.31.55:26000 | omm  | /opt/mogdb/data | MogDB 3.0.4 (build cc068866) | 2023-06-13T20:40:57 |          
[root@mogdb01 ~]# 

复制

3.4、登录数据库

[root@mogdb01 ~]# su - omm
[omm@mogdb01 ~]$ gsql -d postgres -p 26000
gsql ((MogDB 3.0.4 build cc068866) compiled at 2023-03-03 17:47:05 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

MogDB=# \l
                                 List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges | Compatibility 
-----------+-------+----------+---------+-------+-------------------+---------------
 postgres  | omm   | UTF8     | C       | C     |                   | A
 template0 | omm   | UTF8     | C       | C     | =c/omm           +| A
           |       |          |         |       | omm=CTc/omm       | 
 template1 | omm   | UTF8     | C       | C     | =c/omm           +| A
           |       |          |         |       | omm=CTc/omm       | 
(3 rows)

MogDB=# \q
[omm@mogdb01 ~]$ 
复制

3.4、通过PTK卸载MogDB

注意:数据库卸载后无法恢复,请谨慎操作。

[root@mogdb01 ~]# ptk uninstall -n mogdb1    
INFO[2023-06-13T21:03:39.010] PTK Version: 0.8.3 release                   
Cluster Name: "mogdb1"
+--------------+---------------+-------------+-------+---------+-----------------+----------+
| az(priority) |      ip       | user(group) | port  |  role   |    data dir     | upstream |
+--------------+---------------+-------------+-------+---------+-----------------+----------+
| AZ1(1)       | 192.168.31.55 | omm(omm)    | 26000 | primary | /opt/mogdb/data | -        |
+--------------+---------------+-------------+-------+---------+-----------------+----------+
? Do you really want to uninstall this cluster? Please confirm carefully(default=n) Yes
? Do you want to delete db data(default=n) Yes
? Do you want to delete os user(default=n) Yes
INFO[2023-06-13T21:03:44.273] [192.168.31.55][omm] check db dirs owner     
INFO[2023-06-13T21:03:44.313] [192.168.31.55][omm] check db process status 
INFO[2023-06-13T21:03:44.359] [192.168.31.55][omm] remove files: /opt/mogdb/app,/opt/mogdb/tool,/opt/mogdb/tmp,/opt/mogdb/data,/opt/mogdb/log 
INFO[2023-06-13T21:03:44.498] [192.168.31.55][omm] clearing /etc/cron.allow 
INFO[2023-06-13T21:03:44.501] [192.168.31.55][omm] clearing /etc/security/limits.conf 
INFO[2023-06-13T21:03:44.507] [192.168.31.55][omm] remove base dir if empty: /opt/mogdb 
WARN[2023-06-13T21:03:44.515] [192.168.31.55][omm] rm: cannot remove ‘/opt/mogdb’: Device or resource busy 
WARN[2023-06-13T21:03:44.515] [192.168.31.55][omm] ignore error: exit status 1: rm: cannot remove ‘/opt/mogdb’: Device or resource busy 
INFO[2023-06-13T21:03:44.515] [192.168.31.55][omm] kill user "omm" process 
INFO[2023-06-13T21:03:44.537] [192.168.31.55][omm] delete user "omm"       
INFO[2023-06-13T21:03:44.597] uninstall successfully                       
[root@mogdb01 ~]#

[root@mogdb01 mogdb]# ptk ls
  cluster_name | id | addr | user | data_dir | db_version | create_time | comment  
---------------+----+------+------+----------+------------+-------------+----------
[root@mogdb01 mogdb]# 
复制

订阅号:DongDB手记
墨天轮:https://www.modb.pro/u/231198
image.png

最后修改时间:2023-06-13 21:07:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
2人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论