PTK 安装MogDB文档
1. 介质下载
https://www.mogdb.io/downloads/mogdb/
wget -c https://cdn-mogdb.enmotech.com/mogdb-media/2.1.1/MogDB-2.1.1-CentOS-x86_64.tar
wget -c https://cdn-mogdb.enmotech.com/mogdb-media/2.1.1/MogDB-2.1.1-CentOS-64bit-om.tar.gz
2. 准备工作
2.1 环境要求
2.1.1 硬件要求
项目 | 配置描述 |
---|---|
最小内存 | 功能调试32GB以上。性能测试和商业部署时,单实例部署建议128GB以上。复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。 |
CPU | 功能调试最小1×8 核 2.0GHz。性能测试和商业部署时,单实例部署建议1×16核 2.0GHz。CPU超线程和非超线程两种模式都支持。但是,MogDB各节点的设置需保持一致。 |
硬盘 | 用于安装MogDB的硬盘需最少满足如下要求:- 至少1GB用于安装MogDB的应用程序包。- 每个主机需大约300MB用于元数据存储。- 预留70%以上的磁盘剩余空间用于数据存储。建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装MogDB。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。MogDB支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。 |
网络要求 | 300兆以上以太网。建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。MogDB网络如果配置bond,请保证bond模式一致,不一致的bond配置可能导致MogDB工作异常。 |
2.1.2 软件要求
2.2 系统配置
- 修改/etc/selinux/config文件中的“SELINUX”值为“disabled”。
vim /etc/selinux/config SELINUX=disabled
- 重新启动操作系统。
reboot
- 关闭防火墙
## 检查防火墙
systemctl status firewalld
## 关闭防火墙并禁止开机重启。
systemctl disable firewalld.service
systemctl stop firewalld.service
- 设置字符集
将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加“export LANG=XXX”(XXX为Unicode编码)。
vim /etc/profile
- 设置时区和时间
# 将各数据库节点的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件。
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 使用date -s命令将各主机的时间设置为统一时间
date -s "Sat Sep 27 16:00:07 CST 2020"
说明: 可以通过date命令查询主机时区。
- 修改swap交换内存
swappiness的值的大小对如何使用swap分区是有着很大的联系的。先前,人们建议把vm.swapiness设置为0,它意味着“除非发生内存益处,否则不要进行内存交换”。直到Linux内核3.5-rcl版本发布,这个值的意义才发生了变化。这个变化被一直到其他的发行版本上,包括RedHat企业版内核2.6.32-303。在发生变化之后,0意味着“在任何情况下都不要发生交换”。所以现在建议把这个值设置为1。swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
# 查看swapiness
cat /proc/sys/vm/swappiness
# 修改swapiness
vi /etc/sysctl.conf
vm.swappiness=1
# 重载sysctl.conf
sysctl -p
- 设置网卡MTU值
将各数据库节点的网卡MTU值设置为相同大小。对于x86,MTU值推荐1500;对于ARM,MTU值推荐8192。
ifconfig 网卡编号 mtu 值
- 关闭RemoveIPC
在各数据库节点上,关闭RemoveIPC。CentOS操作系统无该参数,可以跳过该步骤。
- 设置root用户远程登录
在MogDB安装时需要root帐户远程登录访问权限,本章介绍如何设置使用root用户远程登录。
# 修改PermitRootLogin配置,允许用户远程登录。
vim /etc/ssh/sshd_config
# 1. 注释掉“PermitRootLogin no”。
#PermitRootLogin no
# 2. 将“PermitRootLogin”改为“yes”。
PermitRootLogin yes
- 修改hostname
vim /etc/sysconfig/network
HOSTNAME=db01
vi /etc/hosts
ip db01
- 集群配置各节点时间同步
#安装ntp服务
yum install ntp -y
#修改ntp配置
vim /etc/ntp.conf
restrict 172.16.71.30 nomodify notrap nopeer noquery //当前节点IP地址
restrict 172.16.71.2 mask 255.255.255.0 nomodify notrap //集群所在网段的网关(Gateway),子网掩码(Genmask)
#选择一个主节点
在server部分添加以下部分,并注释掉server 0 ~ n
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
#在其他节点
在server部分添加如下语句,将server指向主节点。
server 172.16.71.30
Fudge 172.16.71.30 stratum 10
#启动ntp服务
systemctl start ntpd
#查看ntp状态
systemctl status ntpd
#检查时间同步
ntpq -p
clockdiff -o 172.16.71.30
#设置开机启动
systemctl enable ntpd.service
- 安装依赖
## 在所有节点以root用户执行以下命令
yum install -y bzip2 libaio-devel flex bison ncurses-devel glibc-devel libxml2-devel patch redhat-lsb-core unzip gcc gcc-c++ perl openssl-devel libffi-devel libtool zlib-devel
- 报错
[root@localhost mogdb]# python3 --version
python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
# 处理方案
cp /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib/
echo "/usr/lib" > /etc/ld.so.conf.d/python3.6.conf
# ldconfig
- 关闭transparent_hugepage
- 检查THP的启用状态:
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、[madvise]表示(只在MADV_HUGEPAGE标志的VMA中使用THP
这个状态就说明都是启用的。
- 在运行时禁用THP(Transparent HugePages)
运行以下命令即时禁用THP,该命令适用于其它Linux系统:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
- 永久禁用THP(Transparent HugePages )
编辑rc.local文件:
[root@localhost ~]# vim /etc/rc.d/rc.local
增加下列内容:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
- 保存退出,然后赋予rc.local文件执行权限:
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
- 最后重启系统,以后再检查THP应该就是被禁用了
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
6.另一种方式查看是否被禁用看是否为0
cat /proc/sys/vm/nr_hugepages
sysctl vm.nr_hugepages
# 查看使用的内存
cat /proc/meminfo && grep AnonHugePages /proc/meminfo
- 安装python3
cd ~
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
mkdir -p /usr/local/python3
tar -zxvf Python-3.6.5.tgz
cd Python-3.6.5
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC && make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
find / -name libpython3.6m.so.1.0
cp libpython3.6m.so.1.0 /usr/lib64
3. 安装
3.1 PTK方式安装
PTK (Provisioning Toolkit)是一款针对 MogDB 数据库开发的软件安装和运维工具,旨在帮助用户更便捷地安装部署MogDB数据库。
PTK 作为一个部署管理工具,并不需要和数据库实例安装到一起,我们推荐使用一个中控管理机器来安装PTK,然后通过该中控机去部署管理数据库实例到其他服务器。
注意: 命令行安装方式暂不支持 Windows 系统
3.1.1 安装PTK
- 在线安装
curl --proto '=https' --tlsv1.2 -sSf https://cdn-mogdb.enmotech.com/ptk/install.sh | sh
该指令会自动将 PTK 安装在 $HOME/.ptk 目录下,该目录以后会作为 PTK 工具的工作目录, 其产生的缓存文件、数据文件、以及集群的配置信息,备份信息等文件均会存储到该目录下。 同时,安装指令会自动将 $HOME/.ptk/bin 的路径加入到对应 SHELL Profile 文件的 PATH 环境变量中, 这样在用户登录到服务器后就可以直接使用 ptk 指令了。
- 离线安装
- 下载操作系统对应安装包,以下是不同系统架构的最新版的安装包下载链接:
- MacOS ARM64:ptk_darwin_arm64.tar.gz
- MacOS X86: ptk_darwin_x86_64.tar.gz
- Linux ARM64: ptk_linux_arm64.tar.gz
- Linux X86: ptk_linux_x86_64.tar.gz
- Windows X86: ptk_windows_x86_64.tar.gz
- 将安装包拷贝到目标服务器上并解压
## 创建目录
[root@VM_0_6_centos ~]# mkdir -p /home/ptk/bin
## 解压
tar -zxvf ptk_linux_x86_64.tar.gz -C /home/ptk/
[root@VM_0_6_centos ~]# ls -lhrt /home/ptk/
总用量 13M
-rw-r--r-- 1 501 games 26K 6月 29 17:18 README.md
-rwxr-xr-x 1 501 games 13M 7月 11 22:10 ptk
[root@VM_0_6_centos ~]# mv /home/ptk/ptk /home/ptk/bin/
## 添加环境变量
vi /etc/profile
export PATH=/home/ptk/bin/:$PATH
- 解压后即可使用
推荐 $HOME/.ptk/bin/ 目录,需手动创建,并将所在所在目录添加到 PATH 环境变量
可执行如下命令查看PTK支持安装MogDB的操作系统
[root@VM_0_6_centos ~]# ptk candidate os
id | os
-----+--------------------------------------
1 | CentOS 7 (x86_64)
2 | openEuler 20 (x86_64)
3 | openEuler 20 (arm64)
4 | openEuler 22 (x86_64)
5 | openEuler 22 (arm64)
6 | Kylin V10 (x86_64)
7 | Kylin V10 (arm64)
8 | UOS 20 (x86_64)
9 | UOS 20 (arm64)
10 | Ubuntu 18 (x86_64)
11 | Centos 8 (arm64)
12 | Centos 8 (x86_64)
13 | Red Hat Enterprise Linux 7 (x86_64)
14 | Red Hat Enterprise Linux 8 (x86_64)
15 | EulerOS 2 (x86_64)
16 | EulerOS 2 (arm64)
17 | SLES 12SP5 (arm64)
18 | SLES 12SP5 (x86_64)
19 | Oracle Linux 7 (x86_64)
20 | Oracle Linux 8 (x86_64)
21 | Rocky Linux 8 (x86_64)
22 | NeoKylin V7 (x86_64)
- PTK升级
如果是离线方式安装的,重新下载最新的安装包后替换覆盖服务器上的二进制文件即可升级到最新版。
如果是在线方式安装的,执行以下指令即可自动升级:
[root@VM_0_6_centos ~]# ptk self upgrade
INFO[2022-07-13T10:27:59.908] start download ptk_linux_x86_64.tar.gz
> download ptk_linux_x86_64.t...: 4.57 MiB / 4.57 MiB [------------------------------------------------------] 100.00% 34.10 GiB p/s 100ms
INFO[2022-07-13T10:28:00.307] download ptk_linux_x86_64.tar.gz successfully
INFO[2022-07-13T10:28:00.413] upgrade ptk successfully
3.1.2 通过PTK安装
3.1.2.1. 准备拓扑配置文件
PTK安装需要用户提供配置文件config.yaml,PTK支持单节点安装以及多节点安装。下面以单节点安装和一主一备节点安装为例。
- 单节点安装
# config.yaml
global:
cluster_name: mogdb01
user: omm
group: omm
base_dir: /opt/mogdb
db_servers:
- host: 127.0.0.1
db_port: 26001
如果全部使用默认值,则PTK 执行以下操作:
在本机安装数据库;
运行数据库的操作系统用户为omm ,用户组名称也是omm,该用户没有默认密码;
数据库安装在 /opt/mogdb目录下,在该目录下会创建4个目录:app, data, log, tool,分别用于存储数据库软件、数据文件、数据库日志和数据库相关工具;
数据库监听端口为26000;
- 主备节点安装
# config.yaml
global:
cluster_name: mogdb_cluster1
user: omm
group: omm
base_dir: /opt/mogdb
db_servers:
- host: 192.168.0.1
db_port: 26000
role: primary
ssh_option:
port: 22
user: root
password: [此处填写SSH登录密码]
- host: 192.168.0.2
db_port: 26000
role: standby
ssh_option:
port: 22
user: root
password: [此处填写SSH登录密码]
3.1.2.2. 检查本机系统
[root@VM_0_6_centos mogdb]# ptk checkos -f config.yaml
INFO[2022-07-13T15:46:17.397] local ip: 172.27.0.6
INFO[2022-07-13T15:46:17.414] prechecking dependent tools...
INFO[2022-07-13T15:46:17.447] platform: centos_7_64bit host=172.27.0.6
INFO[2022-07-13T15:46:17.448] kernel version: 3.10.0-1062.9.1.el7.x86_64 host=172.27.0.6
INFO[2022-07-13T15:46:17.487] locale: LANG=en_US.utf8 host=172.27.0.6
INFO[2022-07-13T15:46:17.491] timezone: +0800 host=172.27.0.6
INFO[2022-07-13T15:46:17.493] swap memory 0kB, total memory 1882056kB host=172.27.0.6
WARN[2022-07-13T15:46:17.496] net.ipv4.tcp_tw_reuse=0, expect 1 host=172.27.0.6
WARN[2022-07-13T15:46:17.500] net.ipv4.tcp_retries1=3, expect 5 host=172.27.0.6
WARN[2022-07-13T15:46:17.502] net.ipv4.tcp_retries2=15, expect 12 host=172.27.0.6
WARN[2022-07-13T15:46:17.508] net.core.wmem_max=212992, expect 21299200 host=172.27.0.6
WARN[2022-07-13T15:46:17.510] kernel.sem=250 32000 32 128, expect 250 6400000 1000 25600 host=172.27.0.6
WARN[2022-07-13T15:46:17.512] net.ipv4.tcp_keepalive_intvl=75, expect 30 host=172.27.0.6
WARN[2022-07-13T15:46:17.514] net.ipv4.tcp_wmem=4096 16384 4194304, expect 8192 250000 16777216 host=172.27.0.6
WARN[2022-07-13T15:46:17.518] net.core.rmem_default=212992, expect 21299200 host=172.27.0.6
WARN[2022-07-13T15:46:17.520] net.ipv4.tcp_rmem=4096 87380 6291456, expect 8192 250000 16777216 host=172.27.0.6
WARN[2022-07-13T15:46:17.521] net.ipv4.tcp_max_syn_backlog=128, expect 65535 host=172.27.0.6
WARN[2022-07-13T15:46:17.524] net.core.netdev_max_backlog=1000, expect 65535 host=172.27.0.6
WARN[2022-07-13T15:46:17.525] net.core.rmem_max=212992, expect 21299200 host=172.27.0.6
WARN[2022-07-13T15:46:17.527] net.ipv4.tcp_tw_recycle=0, expect 1 host=172.27.0.6
WARN[2022-07-13T15:46:17.535] net.ipv4.tcp_max_tw_buckets=8192, expect 10000 host=172.27.0.6
WARN[2022-07-13T15:46:17.542] vm.min_free_kbytes=45056, expect 94102 host=172.27.0.6
WARN[2022-07-13T15:46:17.546] kernel.shmmax=68719476736, expect 4398046511104 host=172.27.0.6
WARN[2022-07-13T15:46:17.548] net.ipv4.tcp_keepalive_time=7200, expect 30 host=172.27.0.6
WARN[2022-07-13T15:46:17.550] net.ipv4.tcp_syn_retries=6, expect 5 host=172.27.0.6
WARN[2022-07-13T15:46:17.552] net.core.somaxconn=128, expect 65535 host=172.27.0.6
WARN[2022-07-13T15:46:17.554] net.core.wmem_default=212992, expect 21299200 host=172.27.0.6
INFO[2022-07-13T15:46:17.554] check kernel.core_pattern host=172.27.0.6
INFO[2022-07-13T15:46:17.558] check removeIPC value host=172.27.0.6
WARN[2022-07-13T15:46:17.591] device(sr0) 'IO Request'=128, expect 512 host=172.27.0.6
WARN[2022-07-13T15:46:17.591] device(vda) 'IO Request'=256, expect 512 host=172.27.0.6
WARN[2022-07-13T15:46:17.618] invalid network card info, skip check rx/tx: 256
256 host=172.27.0.6
INFO[2022-07-13T15:46:39.130] check port 26000 host=172.27.0.6
INFO[2022-07-13T15:46:39.154] port 26000 is free host=172.27.0.6
INFO[2022-07-13T15:46:39.155] write fix os script to root_fix_os.2022.0713.154639.sh successfully
INFO[2022-07-13T15:46:39.155] all checkers finished
# 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 | Warning
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 | OK
A17.Check_Port | OK
Total count 20, abnormal count 0, warning count 3
确保输出的检查结果均为 OK 或者 Warning ,如果有 Abnormal 或 ExecuteError出现,需用户根据日志提示先修正系统参数。
如果存在Abnormal选项,会在当前目录下生成对应的修正脚本,直接执行修改脚本即可
A15.Check_Dependent_Package | Abnormal
A16.Check_CPU_Instruction_Set | OK
A17.Check_Port | OK
Total count 20, 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 see detail message
Please check root_fix_os.[TIMESTAMP].sh for commands to resolve.
[root@db01 ~]# ls -lhrt
总用量 28M
-rw-r--r--. 1 root root 28M 6月 14 04:08 postgresql-14.4.tar.gz
-rw-------. 1 root root 2.4K 7月 14 12:25 original-ks.cfg
-rw-------. 1 root root 3.1K 7月 14 12:25 anaconda-ks.cfg
-rwxr--r--. 1 root root 3.1K 7月 25 14:20 root_fix_os.2022.0725.142018.sh
[root@db01 ~]# sh root_fix_os.2022.0725.142018.sh
3.1.2.3. 执行安装
- 在线安装
ptk install -f config.yaml
默认会安装当前已经正式发布的 MogDB 最新版本,版本号可以在 MogDB 官网下载页面查询。安装过程中会提示用户输入数据库初始用户的密码,请用户自行记录并安全保存。PTK 自动完成所有安装操作后,会启动数据库实例。
- 离线安装
PTK 也支持自定义安装包,可以通过手工下载安装包,指定安装。例如执行以下命令,将使用当前目录下的该安装包进行数据库安装。
[root@db01 ~]# ptk install -f config.yaml --pkg ./MogDB-3.0.1-openEuler-x86_64.tar.gz
安装成功后,可以通过 ptk ls 来查看安装的实例信息。
ptk ls
4. 安装总结
- 因为MogDB安装过程中需要对操作系统进行很多项的配置,单独配置起来比较浪费时间;但是使用ptk安装是可以检查系统配置那些不满足安装需求,并生成对对应的shell修复脚本,执行修复脚本就可以实现操作系统的配置还是非常方便。
- ptk对整个安装过程进行了高度的集成,简化了安装流程
- ptk还集成了集群的管理命令,希望未来可以增加更多的管理命令和功能;能够通过ptk实现MogDB集群的管理对DBA就非常的友好了。