Linux 安装
本节描述分布式数据库在 Linux 操作系统的命令行安装过程。
支持 Centos,openEuler,麒麟,统信,Ubuntu。暂不支持 OpenSSH_8.8p1 版本
注意事项
redhat/centos 系列建议选择7.5及以上版本,不支持7.2版本
关闭 SELINUX、NUMA,放行 分布式所有节点 之间所有端口
准备独立的数据磁盘挂载到
/data目录建议使用lvm可扩展分区类型
如需使用数据压缩,数据盘的文件系统需要配置为
ZFS建议配置内部专用高速网络(10Gb)用于分布式节点之间通信
硬件要求
| 用途 | CPU(核) | 内存(GB) | SSD数据盘(GB) | 网络(Gb) | 最小数量 | 推荐数量 |
|---|---|---|---|---|---|---|
| 管理节点 | 8 | 16 | 100 | 10 | 1 | 2 |
| 协调节点 | 16 | 32 | 100 | 1,10 | 1 | 2 |
| 事务节点 | 32 | 64 | 100 | 10 | 1 | 2 |
| 数据节点 | 64 | 128 | 实际数据量的5倍以上 | 10Gb | 2 | 4 |
安装准备
添加用户(所有节点执行)
export INSTALL_DIR=/data
mkdir -p $INSTALL_DIR &&\
useradd unvdb -d $INSTALL_DIR/dt &&\
mkdir $INSTALL_DIR/dt/.ssh &&\
touch $INSTALL_DIR/dt/.ssh/authorized_keys &&\
chmod 600 $INSTALL_DIR/dt/.ssh/authorized_keys &&\
chmod 700 $INSTALL_DIR/dt/.ssh &&\
chown -R unvdb.unvdb $INSTALL_DIR/dt/.ssh
修改limits.conf(所有节点执行)
编辑 /etc/security/limits.conf,追加以下行
unvdb soft nproc 65536
unvdb hard nproc 65536
unvdb soft nofile 278528
unvdb hard nofile 278528
unvdb soft stack unlimited
unvdb soft core unlimited
unvdb hard core unlimited
unvdb soft memlock 250000000
unvdb hard memlock 250000000
保存文件后,执行su - unvdb,执行ulimit -a 检查是否生效。
配置管理节点到其它所有节点免密登录
su - unvdb 在管理节点切换到 unvdb 用户
ssh-keygen 在管理节点生成密钥
cat $INSTALL_DIR/dt/.ssh/id_rsa.pub 在管理节点查看公钥
echo "上面的公钥" >> $INSTALL_DIR/dt/.ssh/authorized_keys 将公钥配置到所有节点(在所有节点上执行)
ssh 192.168.2.31 在管理节点登录其它节点,检查免密是否成功
交互式安装
解压安装包
unzip udbtx-dt-22.4.1-linux-aarch64.zip
cd udbtx-dt-22.4
执行安装程序
[unvdb@ecs-8a29 udbtx-dt-22.4]$ ./udb_tool
--------------------------------------------------------------------------
本程序引导您完成UDB-TX 分布式版本的安装、卸载、升级等操作
节点名称说明:
-------------
Mgr : 管理节点
GTM : 全局事务节点
Coordinator: 协调节点
Datanode : 数据节点
Slave : 备节点
安装说明:
----------
安装过程步骤输入'y'、'yes'、'ok'或回车键表示接受默认值
功能菜单为:
----------
1. 创建Demo集群 (在当前主机部署所有节点,仅用于测试使用)
2. 创建集群 (部署UDB-TX分布式集群,要求主机数必须大于2台)
3. 重置集群 (重新初始化集群,所有数据将被清除请谨慎使用)
4. 卸载集群 (卸载集群所有节点并删除数据目录)
5. 升级集群 (将集群升级到指定版本,操作前请参考九有数据库公司官网对应版本升级的注意事项)
6. 管理集群 (登录管理节点,可执行集群的启停、状态查看、扩容等操作)
7. 显示安装参数(显示集群安装时生成的配置信息)
--------------------------------------------------------------------------
请选择菜单项:2
输入配置信息
请输入Mgr节点端口号, 默认(8888):
请输入Coordinator节点端口号, 默认(5678):
请输入Bin安装路径, 默认(/data/dt/udbtx-dt):
请输入数据目录路径, 默认(/data/dt/udbtx-dt/data):
请输入您拥有的主机台数:3
------------
Host 1:
------------
主机名称 :host1
IP地址 :192.168.0.81
SSH端口(22):22
------------
Host 2:
------------
主机名称 :host2
IP地址 :192.168.0.91
SSH端口(22):22
------------
Host 3:
------------
主机名称 :host3
IP地址 :192.168.0.211
SSH端口(22):22
请选择安装方式
1.快速安装 :根据主机数自动规划节点,副本交叉部署
2.自定义安装:自定义规划节点,指定副本数
输入序号:
快速安装
选择快速安装方式,只需要输入要安装的副本数或按回车键接受默认值即可,安装程序将根据主机数自动规划节点。而选择自定义安装方式,你将可以根据实际需要及主机硬件配置情况灵活自主规划节点。
请选择安装方式
1.快速安装 :根据主机数自动规划节点,副本交叉部署
2.自定义安装:自定义规划节点,指定副本数
输入序号:1
输入您要安装的GTM Salve节点数。范围(0-2),默认(1): 1
输入您要安装的Coordinator节点数。范围(0-2),默认(0): 1
--------------------------------------------------------------------------
Ready To Install
----------------
[Base Info]
User :unvdb
Bin Path:/data/dt/udbtx-dt/
Data Path:/data/dt/udbtx-dt/data/
Coord Port:5678
Gtm Port:6678
Mgr Port:8888
Agent Port:9888
Data Port:10888
[Hosts Info]
HostName IP SSH Port
host1 192.168.0.81 22
host2 192.168.0.91 22
host3 192.168.0.211 22
[Nodes Info]
NodeType NodeName MasterHost Port SlaveHosts
Mgr mgr host1 8888 host2
GTM gc1 host1 6678 host2
Coordinator cn1 host3 5678
Datanode dn1 host2 10888 host3
Datanode dn2 host3 10888 host2
--------------------------------------------------------------------------
是否继续安装?确认请输入'y',取消输入'n':
完成安装
看到以下提示表示已经安装成功。如安装失败请根据输出的错误信息定位问题。
安装成功! 现在您可以通过以下节点操作数据库:
gc1: host1 192.168.0.81 6678
cn1: host3 192.168.0.211 5678
通过以下命令连接数据库:
/data/dt/udbtx-dt/bin/ud_sql [-h addr] -p 5678 -d unvdb [-U user]
添加环境变量
#管理节点,安装完成后安装包目录下会生成mgr_env.sh文件,请将xxx部分替换成实际路径
echo "source /xxx/mgr_env.sh" >> ~/.bashrc
#其他节点,Bin安装路径下会生成对应的udb_env.sh文件,请将xxx部分替换成实际路径,一般可不设置,通过管理节点机器操作即可
echo "source /xxx/udb_env.sh" >> ~/.bashrc
验证数据库是否正常运行
#连接管理节点查看集群状态
[unvdb@ecs-8a29 udbtx-dt-22.4]$ source ./mgr_env.sh
[unvdb@ecs-8a29 udbtx-dt-22.4]$ ud_sql -p8888 -dunvdb
ud_sql (22.4 9c8dc02 based on udb-tx)
Type "help" for help.
unvdb=# monitor all;
nodename | nodetype | status | description | host | port | recovery | boot time | nodezone
----------+--------------------+--------+-------------+---------------+-------+----------+-------------------------------+----------
gc1 | gtmcoord master | t | running | 192.168.0.81 | 6678 | false | 2023-12-19 16:14:57.632171+08 | local
gc1_1 | gtmcoord slave | t | running | 192.168.0.91 | 6679 | true | 2023-12-19 16:14:59.419653+08 | local
cn1 | coordinator master | t | running | 192.168.0.211 | 5678 | false | 2023-12-19 16:15:00.396161+08 | local
dn1 | datanode master | t | running | 192.168.0.91 | 10888 | false | 2023-12-19 16:15:03.05147+08 | local
dn2 | datanode master | t | running | 192.168.0.211 | 10888 | false | 2023-12-19 16:15:03.062892+08 | local
dn1_1 | datanode slave | t | running | 192.168.0.211 | 10889 | true | 2023-12-19 16:15:04.487593+08 | local
dn2_1 | datanode slave | t | running | 192.168.0.91 | 10899 | true | 2023-12-19 16:15:04.998033+08 | local
(7 rows)
#连接协调节点操作数据库
[unvdb@ecs-8a29 udbtx-dt-22.4]$ ud_sql -h192.168.0.211 -p5678 -dunvdb
ud_sql (22.4 9c8dc02 based on udb-tx)
Type "help" for help.
unvdb=# create table test(id int, name text);
CREATE TABLE
unvdb=# \dt
public | test | table | unvdb
注册服务
切换到 root 用户,执行以下命令
cat << EOF > /lib/systemd/system/udbtx-dt.service
[Unit]
Description = udbtx-dt Service
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=unvdb
Group=unvdb
WorkingDirectory = $INSTALL_DIR/dt/udbtx-dt/bin
Environment = "LD_LIBRARY_PATH=$INSTALL_DIR/dt/udbtx-dt/lib:$LD_LIBRARY_PATH"
Environment = "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$INSTALL_DIR/dt/udbtx-dt/bin"
ExecStart = $INSTALL_DIR/dt/udbtx-dt/bin/mgr_ctl start -D $INSTALL_DIR/dt/udbtx-dt/data/mgr
ExecReload = $INSTALL_DIR/dt/udbtx-dt/bin/mgr_ctl restart -D $INSTALL_DIR/dt/udbtx-dt/data/mgr
ExecStop = $INSTALL_DIR/dt/udbtx-dt/bin/mgr_ctl stop -D $INSTALL_DIR/dt/udbtx-dt/data/mgr
TimeoutSec=30
[Install]
WantedBy = multi-user.target
EOF
启动服务
systemctl daemon-reload && systemctl start udbtx-dt && systemctl enable udbtx-dt
管理集群
登录管理节点
[unvdb@ecs-8a29 udbtx-dt-22.4]$ python3 udb_tool.py
--------------------------------------------------------------------------
功能菜单为:
----------
1. 创建Demo集群 (在当前主机部署所有节点,仅用于测试使用)
2. 创建集群 (部署UDB-TX分布式集群,要求主机数必须大于2台)
3. 重置集群 (重新初始化集群,所有数据将被清除请谨慎使用)
4. 卸载集群 (卸载集群所有节点并删除数据目录)
5. 升级集群 (将集群升级到指定版本,操作前请参考九有数据库公司官网对应版本升级的注意事项)
6. 管理集群 (登录管理节点,可执行集群的启停、状态查看、扩容等操作)
7. 显示安装参数(显示集群安装时生成的配置信息)
--------------------------------------------------------------------------
请选择菜单项:6
/data/dt/udbtx-dt/bin/ud_sql -p 8888 -d unvdb -U unvdb
ud_sql (22.4 9c8dc02 based on udb-tx)
Type "help" for help.
unvdb=#
查看节点状态
unvdb=# monitor all;
nodename | nodetype | status | description | host | port | recovery | boot time | nodezone
----------+--------------------+--------+-------------+---------------+-------+----------+-------------------------------+----------
gc1 | gtmcoord master | t | running | 192.168.0.81 | 6678 | false | 2023-12-19 16:14:57.632171+08 | local
gc1_1 | gtmcoord slave | t | running | 192.168.0.91 | 6679 | true | 2023-12-19 16:14:59.419653+08 | local
cn1 | coordinator master | t | running | 192.168.0.211 | 5678 | false | 2023-12-19 16:15:00.396161+08 | local
dn1 | datanode master | t | running | 192.168.0.91 | 10888 | false | 2023-12-19 16:15:03.05147+08 | local
dn2 | datanode master | t | running | 192.168.0.211 | 10888 | false | 2023-12-19 16:15:03.062892+08 | local
dn1_1 | datanode slave | t | running | 192.168.0.211 | 10889 | true | 2023-12-19 16:15:04.487593+08 | local
dn2_1 | datanode slave | t | running | 192.168.0.91 | 10899 | true | 2023-12-19 16:15:04.998033+08 | local
(7 rows)
查看主机列表
unvdb=# list host;
name | user | port | protocol | agentport | address | udbhome
-------+------------+------+----------+-----------+---------------+----------------------------
host1 | shiqianwei | 22 | ssh | 9888 | 192.168.0.81 | /data/dt/udbtx-dt/
host2 | shiqianwei | 22 | ssh | 9888 | 192.168.0.91 | /data/dt/udbtx-dt/
host3 | shiqianwei | 22 | ssh | 9888 | 192.168.0.211 | /data/dt/udbtx-dt/
(3 rows)
查看节点列表
unvdb=# list node;
name | host | type | mastername | port | sync_state | path | initialized | incluster | zone
-------+-------+--------------------+------------+-------+------------+--------------------------------------+-------------+-----------+-------
gc1 | host1 | gtmcoord master | | 6678 | | /data/dt/udbtx-dt/data/gc1 | t | t | local
gc1_1 | host2 | gtmcoord slave | gc1 | 6679 | sync | /data/dt/udbtx-dt/data/gc1_1 | t | t | local
cn1 | host3 | coordinator master | | 5678 | | /data/dt/udbtx-dt/data/cn1 | t | t | local
dn1 | host2 | datanode master | | 10888 | | /data/dt/udbtx-dt/data/dn1 | t | t | local
dn2 | host3 | datanode master | | 10888 | | /data/dt/udbtx-dt/data/dn2 | t | t | local
dn1_1 | host3 | datanode slave | dn1 | 10889 | sync | /data/dt/udbtx-dt/data/dn1_1 | t | t | local
dn2_1 | host2 | datanode slave | dn2 | 10899 | sync | /data/dt/udbtx-dt/data/dn2_1 | t | t | local
(7 rows)
集群启停
start all;
stop all;