本文为基于银河麒麟v10操作系统部署崖山数据库的实战记录
包含【单节点】部署、【一主一备】部署、【节点扩缩容】到【一主两备】
初识崖山数据库是6月份在深圳某次数据库国产化适配沟通会议中,当时崖山官网还没有开放下载个人版,联系官方进行对接试用的是企业版,崖山的售前和技术专家老师支持相当专业。11月份在崖山数据库认证群里看到对个人版免费开放下载:https://download.yashandb.com/download ,迅速在数据库圈热度高涨。本文基于YashanDB个人版 YashanDB Personal 23.1 (Linux X86) 做一个实践分享。
产品简介
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。
YashanDB基于原创内核架构,全面支持众核、RDMA、智能计算、云基础设施等面向未来的软硬件技术,采用异步并行、基于代价的事务调度、Raft、有界计算等创新技术和算法,满足企业级核心应用对高兼容、高性能、高扩展、高可用等全生命周期数据管理诉求。
为什么叫崖山数据库?
崖山数据库系统命名源于发生在广东省江门市的历史著名战役——崖山海战。战役中十万南宋军民舍生取义,宁死不降。以“崖山”为名,意在赓续崖山的民族气节,以全自研的技术和系统,破解数据库领域“卡脖子”问题,在国际IT界重铸华夏辉煌。
1 安装前准备
1.1 服务器配置
主机名称 | 主机ip | 角色 | 服务器 | 配置 |
---|---|---|---|---|
trexdb01 | 192.168.7.21 | 主库(单节点和主备用) | Kylin V10sp3 x86_64 | 2核cpu,5G内存,500G磁盘 |
trexdb02 | 192.168.7.22 | 备库 (一主一备用) | Kylin V10sp3 x86_64 | 2核cpu,5G内存,500G磁盘 |
trexdb03 | 192.168.7.23 | 备库(节点扩容至一主两备用) | Kylin V10sp3 x86_64 | 2核cpu,5G内存,500G磁盘 |
本文基于YashanDB 23.1.1.100个人版搭建。
1.2 关闭交换分区
使用sysctl -a | grep swappiness
查看当前状态。
sysctl -w vm.swappiness=0
echo "vm.swappiness = 0">> /etc/sysctl.conf
1.3 调整自动分配本地端口范围
下限值建议大于30000。
sysctl -w net.ipv4.ip_local_port_range='32768 60999'
echo "net.ipv4.ip_local_port_range = 32768 60999" >> /etc/sysctl.conf
本调整对ipv6同样生效。
1.4 调整进程的VMA上限
使用sysctl -a|grep vm.max_map_count
查看当前上限值,建议大于2000000。
sysctl -w vm.max_map_count=2000000 echo "vm.max_map_count=2000000" >> /etc/sysctl.conf
1.5 调整资源限制值
将一些内核参数所定义的资源限制值(使用ulimit -a可查看所有的资源限制值)调整为大于或等于最小要求的某个值,具体如下:
配置参数永久生效
执行如下命令将参数写入/etc/security/limits.conf
文件,重启后参数永久生效:
echo "
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft rss unlimited
* hard rss unlimited
* soft stack 8192
* hard stack 8192
" >> /etc/security/limits.conf
1.6 关闭透明大页
标准大页内存会在系统启动时预分配,而透明大页会在运行时动态分配大页内存,可能产生运行时错误,造成 YashanDB 被终止。我们建议您在安装时,关闭操作系统透明大页(Transparent HugePages)选项。
1.6.1 查看透明大页是否开启
在一些系统的内核中默认开启了透明大页选项。您可以通过以下指令确认:
## Red Hat Enterprise Linux 内核
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
## 其他内核 (kylinV10用这个)
cat /sys/kernel/mm/transparent_hugepage/enabled
若显示[always] madvise never
,则说明透明大页开启。
若显示always madvise [never]
,则说明透明大页关闭。
1.6.2 关闭透明大页
- 请
vi /etc/default/grub
,在GRUB_CMDLINE_LINUX
中添加或修改参数transparent_hugepage=never
。
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never" GRUB_DISABLE_RECOVERY="true"
1.6.3 刷新配置 grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg
1.6.4 重启操作系统,使配置永久生效。
2 安装初始环境调整
2.1 开放端口
运行YashanDB产品需要占用一系列端口(通信矩阵中已列示这些端口的作用及相关信息)。YashanDB制订了一套端口划分规则,并据此规则给出了安装部署过程中需要指定的端口号默认值。用户可根据自身网络状况修改这些端口号,但应该遵循这套规则,以避免出现端口冲突错误。
端口划分规则:
- 一个实例需要配多个监听端口,给一个初始值,后面端口缺省+1。
- 一个物理机需要配多个实例,给一个初始值,后面实例缺省+10。
- 按照MN、CN、DN的顺序生成端口号。
- 单机实例或分布式CN的监听端口初始值默认为1688,对应后续安装中的beging-port参数。
安装默认端口号:
部署形态 | 数据库监听 | om | yasagent | 主机间通信 |
---|---|---|---|---|
单机部署 | 1688 | 1675 | 1676 | 1689 |
分布式 | MN:1678 CN:1688 DN:1698 | 1675 | 1676 | MN:1679、1680 CN:1689、1690 DN:1699、1700 |
共享集群 | 1688 | 1675 | 1676 | 1689、1670 |
建议在所有服务器上开放上表所列示端口。
此外,对启用可视化部署web服务的主机,还需开放9001端口。
方式一:关闭防火墙
在所有主机上执行如下命令关闭防火墙:
##关闭防火墙
systemctl stop firewalld
##关闭开机自启
systemctl disable firewalld
##查看状态
systemctl status firewalld
方式二:添加白名单
如果防火墙不能关闭,则必须按如下步骤添加端口到白名单中:
1.查看防火墙端口开放情况:
# firewall-cmd --zone=public --list-ports
2.添加端口到防火墙(Firewall):
这里以1688为例演示如何添加端口到防火墙中,其他端口操作方法相同。
##添加(--permanent 永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=1688/tcp --permanent
##重新载入
firewall-cmd --reload
##查看
firewall-cmd --zone=public --query-port=1688/tcp
如需从白名单中删除已添加的端口,使用如下命令:
##删除已添加的端口
firewall-cmd --zone=public --remove-port=1688/tcp --permanent
2.2 开启SSH服务
首先,请在所有服务器上检查ssh服务是否已打开:
systemctl status sshd.service
如输出信息中无active (running)
内容,请参照如下命令开启ssh服务:
systemctl start sshd.service
2.3 创建安装用户
建议创建一个新用户安装YashanDB数据库。
-
切换至root用户,并执行如下命令创建新用户yashan:
useradd -d /home/yashan -m yashan
-
执行如下命令为用户yashan指定密码:
passwd yashan
-
配置sudo免密
首先,请打开/etc/sudoers文件,通常情况下,即使root用户都无该文件的编辑权限,此时需要先对root授权。
cd /etc ll sudoers chmod +w sudoers vim /etc/sudoers
在文件的最后添加如下内容后保存退出:
yashan ALL=(ALL)NOPASSWD:ALL
最后,如该文件初始为只读,恢复其属性:
chmod -w sudoers
将yashan用户加入到YASDBA用户组
groupadd YASDBA usermod -a -G YASDBA yashan
3 目录划分
主机目录规划
1.安装目录
YashanDB采用集群多节点并行安装模式,只需在一台主机上创建安装目录,用于下载和解压软件包。
本安装手册中,安装目录规划在/home/yashan下,由yashan用户执行软件包下载时自行创建。
2.HOME目录和DATA目录
所有安装YashanDB的实例节点(一台服务器对应一个实例节点,或者一台服务器包含多个实例节点)上必须规划的两个目录为:
- HOME目录:YashanDB的产品目录,包含YashanDB所提供的命令、数据库运行所需的库及各关键组件。该目录由yashan用户执行安装部署时输入的install-path参数根据一定规则生成并创建。
- DATA目录:YashanDB的数据目录,包含数据库的各类系统数据文件、日志文件和配置文件,用户数据也缺省存储在该目录下。但对于共享集群,所有的数据文件和redo文件均需保存在共享存储上,DATA目录将只用于存储实例运行相关的配置文件、日志文件等数据。该目录由yashan用户执行安装部署时输入的data-path参数根据一定规则生成并创建。
本安装手册中,HOME目录和DATA目录均规划在/data/yashan下,yashan用户需要对该目录拥有全部权限,可执行如下命令授权:
cd / mkdir data cd data mkdir yashan chmod -R 777 /data/yashan
4 软件包准备
进入官网下载页面
https://download.yashandb.com/download
5 单节点部署(单机)
为了方便某些朋友的部署需求,这里增加了单节点部署(单机),如果你需要部署高可用(一主一备),请直接略过此章节,进行下一步操作。
执行安装部署前,请以yashan用户登录192.168.7.21服务器,并进入/home/yashan/install安装目录。
cd /home/yashan/install
5.1 生成部署文件
- 执行yasboot package命令生成配置文件,命令详细参数可查阅[yasboot](https://doc.yashandb.com/yashandb/23.1/zh/工具手册/yasboot/yasboot命令介绍/yasboot package)。
其中
-
–cluster指定为要部署的数据库集群名称,该名称也将作为集群中所有节点上初始创建数据库的名称(database name)
-
–port指定SSH服务端口
-
–install-path指定数据库安装路径
-
–data-path指定数据存放目录
-
–begin-port指定数据库监听端口
./bin/yasboot package se gen --cluster yashandb -u yashan -p 'Trex@123' --ip 192.168.7.21 --port 22 --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data --begin-port 1688
上一步骤执行完毕后,当前目录下将生成yashandb.toml和hosts.toml两个配置文件,yashandb.toml为数据库集群的配置文件,hosts.toml为主机的配置文件,可手动修改,但不建议删除文件中任何行,否则可能导致后续安装过程报错,或者所搭建的环境后续无法进行扩展配置。
-rw------- 1 yashan yashan 491 12月 1 17:55 hosts.toml -rw------- 1 yashan yashan 723 12月 1 17:55 yashandb.toml
5.2 执行安装
./bin/yasboot package install -t hosts.toml -i yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
5.3 数据库部署
- 执行部署命令。
$ ./bin/yasboot cluster deploy -t yashandb.toml
-
生效环境变量(此步骤需以yashan用户登录到每个节点上执行)。
如果**~/.bashrc**中已存在YashanDB相关的环境变量,将其清除
部署命令成功执行后将会在$YASDB_HOME目录下的conf文件夹中生成<<集群名称>>.bashrc环境变量文件
cd /data/yashan/yasdb_home/yashandb/23.1.1.100/conf/
cat yashandb.bashrc >> ~/.bashrc source ~/.bashrc
5.4 修改sys用户口令
YashanDB不提供系统初始口令,请通过yasboot工具设置集群内所有节点sys用户的密码。
yasboot cluster password set -n 'Trex@123' -c yashandb
5.5 验证安装是否成功
-
执行查看数据库状态命令。
yasboot cluster status -c yashandb -d
-
使用yasboot工具连接数据库,查看实例状态。
# 示例: yasboot sql -d sys/password@192.168.7.21:1688
如果密码含有特殊字符,请参考如下方式连接
yasboot sql -d 'sys/"Trex@123"'@192.168.7.21:1688 yasql 'sys/"Trex@123"'@192.168.7.21:1688
SQL> SELECT STATUS FROM V$INSTANCE;
SQL> SELECT database_name FROM v$database;
5.6 创建数据库用户
使用yasql工具连接数据库并创建sales用户。
yasql 'sys/"Trex@123"'@192.168.7.21:1688
SQL> CREATE USER trex IDENTIFIED BY trex;
SQL> GRANT CONNECT TO trex;
yasql trex/trex@192.168.7.21:1688
6 高可用部署(一主一备)
单机主备部署将以2台主机,分别作为主、备角色作为示例,搭建一主一备的高可用环境。
主机名称 | 主机ip | 角色 |
---|---|---|
trexdb01 | 192.168.7.21 | 主库 |
trexdb02 | 192.168.7.22 | 备库 |
6.1 生成部署文件
-
执行yasboot package命令生成配置文件,命令详细参数可查阅[yasboot](https://doc.yashandb.com/yashandb/23.1/zh/工具手册/yasboot/yasboot命令介绍/yasboot package)。
其中
- –cluster指定为要部署的数据库集群名称,该名称也将作为集群中所有节点上初始创建数据库的名称(database name)
- -u 数据库安装用户
- -p 数据库安装用户对应的密码
- –ip 节点ip,如192.168.7.21,192.168.7.22
- –port指定SSH服务端口
- –install-path指定数据库安装路径
- –data-path指定数据存放目录
- –begin-port指定数据库监听端口
- –node指定主备节点总数量
su - yashan cd /home/yashan/install/ ./bin/yasboot package se gen --cluster trexdb -u yashan -p 'Trex@123' --ip 192.168.7.21,192.168.7.22 --port 22 --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data --begin-port 1688 --node 2
-
上一步骤执行完毕后,当前目录下将生成yashandb.toml和hosts.toml两个配置文件,yashandb.toml为数据库集群的配置文件,hosts.toml为主机的配置文件,可手动修改,但不建议删除文件中任何行,否则可能导致后续安装过程报错,或者所搭建的环境后续无法进行扩展配置。
ll hosts.toml ll trexdb.toml
[yashan@trexdb01 install]$ ll hosts.toml -rw------- 1 yashan yashan 771 12月 2 11:46 hosts.toml [yashan@trexdb01 install]$ ll trexdb.toml -rw------- 1 yashan yashan 1142 12月 2 11:46 trexdb.toml
6.2 执行安装
./bin/yasboot package install -t hosts.toml -i yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
6.3 数据库部署
- 执行部署命令。
./bin/yasboot cluster deploy -t trexdb.toml
-
生效环境变量
在trexdb01和trexdb02上都执行
#部署命令成功执行后将会在$YASDB_HOME目录下的conf文件夹中生成<<集群名称>>.bashrc环境变量文件
cd /data/yashan/yasdb_home/yashandb/23.1.1.100/conf/
# 如~/.bashrc中已存在YashanDB相关的环境变量,将其清除
cat ~/.bashrc
cat trexdb.bashrc >> ~/.bashrc
source ~/.bashrc
查看trexdb01配置
cat ~/.bashrc
查看trexdb02配置
cat ~/.bashrc
6.4 修改sys用户口令
YashanDB不提供系统初始口令,请通过yasboot工具设置集群内所有节点sys用户的密码。
在trexdb01执行
yasboot cluster password set -n 'Trex@456' -c trexdb
6.5 验证安装是否成功
- 执行查看数据库状态命令。
yasboot cluster status -c trexdb -d
- 连接数据库
-
使用yasboot工具
yasboot sql -d 'sys/"Trex@456"'@192.168.7.21:1688
-
使用yasql
yasql 'sys/"Trex@456"' 或 yasql 'sys/"Trex@456"'@192.168.7.21:1688
查看实例状态
SQL> SELECT STATUS FROM V$INSTANCE;
SQL> SELECT database_name FROM v$database;
CREATE TABLE trexinfo
(id INTEGER NOT NULL PRIMARY KEY,
info VARCHAR2(128)
);
INSERT INTO trexinfo VALUES ('01','霸王龙的日常');
commit;
备库查询
yasql 'sys/"Trex@456"'
SQL> select * from trexinfo;
6.6 仲裁选举故障切换
与基于RAFT协议的自动选举不同,本模式是通过yasom仲裁,在主库故障的情况下,将备库切换为新的主库。
YashanDB仅支持在一主一备单机部署下进行仲裁选举。
注意:
- 须保证yasom和备库的yasagent进程正常在线。
- 主备状态正常,并且主备保护模式相同(非零丢失模式下,仅支持最大性能和最大可用模式)。
- 开启仲裁选举会修改数据库心跳间隔和心跳超时参数,如果是零丢失模式,将设置主备为最大保护模式。
- 开启仲裁选举后,主库每次启动都会确认实际角色,如果需要降备,会直接启动为备库。确认实际角色需要连接到yasom,或者连接到备库,否则主库将启动失败
6.6.1 启用基于yasom的仲裁选举
trex01上执行
yasboot election enable on -c trexdb
6.6.2 查看仲裁选举的参数设置和运行状态。
trex01和trex02上执行均可
yasboot election config show -c trexdb
其中:
-
Protection Mode:yasom记录的主库保护模式。
-
Members:表示节点信息。包括节点状态,节点角色,备库传输延迟,回放延迟和回放速率等。
-
Properties:当前生效的参数值。
-
Automatic Failover:仲裁选举状态。
-
DISABLED:选举关闭。
-
Enabled in Potential Data Loss Mode:选举开启,并且切换可能丢失数据。
-
Enabled in Zero Data Loss Mode:选举开启,并且不会丢失数据。
-
Enabled in Zero Data Loss Mode (NOT ALLOWED):选举开启,但不是最大保护模式,可能有数据丢失风险,禁止自动切换
-
仲裁选举的参数如下:
参数名 | 默认值 | 取值范围 | 含义 |
---|---|---|---|
FailoverThreshold | 9 | [2, 1000] | 备机心跳超时时间,到达该时间后,yasom将执行failover切换流程 |
FailoverAutoReinstate | false | true/false | 是否启用自动脑裂修复。 启用后,如果备机发生脑裂,处于NEED REPAIR状态,yasom将尝试自动修复 |
ZeroDataLossMode | true | true/false | 是否启用零丢失模式。 启用后,将设置主备为最大保护模式,当主库宕机时,备库可自动failover;当备库异常时,主库将由yasom降级为最大可用模式,并禁止自动failover,直到备库恢复同步后,yasom重新将主库升级为最大保护模式后,使能自动failover |
注意:
- 仅允许在仲裁选举未启用的情况下设置选举参数。
- FailoverThreshold太小,可能会因为网络抖动而发生不必要的切换,请根据网络状态设置合理的超时时间。
- FailoverAutoReinstate启用后,会自动修复备库脑裂问题,会使备库与主库有分歧的部分数据丢失,请谨慎使用。
- ZeroDataLossMode启用后,优先使用最大保护模式,在最大保护模式下,主库宕机,备库自动failover后,不会丢失数据。当备库异常后,主库会降级为最大可用模式,此时备库有丢失数据的风险,所以自动failover将禁用,直到主库再次恢复最大保护模式。因此零丢失模式的切换条件更严格,但是能保证数据不丢失。
#示例,这里不执行 yasboot election config set -k FailoverThreshold -v 5 -c yashandb
6.6.3 查看仲裁选举相关的事件
包括事件名,发生时间,处理时间,处理是否成功等。
yasboot election event show -c trexdb
仲裁选举的事件如下:
事件名 | 含义 |
---|---|
failover | 备库无法连接主库,并且心跳超时后,向yasom上报,通知yasom将进行仲裁选举 |
confirm role | 主库重启的时候,需要确认自己的角色,向yasom上报,通知yasom确认该节点的实际角色。如果旧主库需要降备,将直接启动为备库 |
need repair | 备库状态为NEED REPAIR,可能是非零丢失模式下,产生脑裂现象,旧主库降备后无法继续接收日志数据,需要通知yasom修复该备库 |
protection demote | 零丢失模式下,当备库异常,导致主库事务阻塞时,主库向yasom上报,通知yasom将主库的保护模式降级为最大可用模式,并禁止自动切换 |
protection promote | 零丢失模式下,当备库恢复同步后,主库向yasom上报,通知yasom将主库的保护模式升级为最大保护模式,并恢复自动切换 |
Note:
- 同一种事件最多保存5条,超出将淘汰老的事件。
- 在1分钟内,下发SQL处理失败3次后,将不再处理failover和need repair事件,后续的相同事件会被忽略,并在最近一次事件记录里增加Ignore字段的值。
6.6.4 故障切换验证
验证1,正常关闭主库
[yashan@trexdb01 ~]$ yasboot node stop -c trexdb -n 1-1
查看集群状态
[yashan@trexdb01 ~]$ yasboot cluster status -c trexdb -d
此时查看仲裁选举相关的事件
yasboot election event show -c trexdb
结论:正常关机,备库并不会自动升主。
验证2,模拟异常关闭,kill主库(trexdb01)进程
因为刚才关闭了trexdb01,这里先启动起来
yasboot node start -c trexdb -n 1-1
查看集群状态
yasboot cluster status -c trexdb -d
直接kill进程,模拟异常现象
ps -ef | grep "/bin/yasdb" | awk '{print $2}' | xargs kill -9 2>/dev/null
再次查看集群状态
yasboot cluster status -c trexdb -d
可以看到备库已经自动升为主库
查看仲裁事件
yasboot election event show -c trexdb
查看数据库启动模式
SQL> SELECT database_name,log_mode,open_mode,database_role FROM V$DATABASE;
创建测试表
# trexdb02
SQL> create table trex_test01 as select * from trexinfo;
SQL> select * from trex_test01;
结论:模拟异常关闭主库,备库自动升主。
验证3 主库异常关闭后恢复启动
如果trexdb01启动,会发生什么情况???
启动trexdb01节点数据库
yasboot node start -c trexdb -n 1-1
查看集群状态
yasboot cluster status -c trexdb -d
可以看到trexdb01启动后,已自动以备库身份加入集群
查看仲裁信息
yasboot election event show -c trexdb
查看trexdb01数据库启动模式,并检查前面在trexdb02中创建的表trex_test01是否会同步到trexdb01。
# trexdb01
SQL> SELECT database_name,log_mode,open_mode,database_role FROM V$DATABASE;
SQL> select * from trex_test01;
可以看到此时,trexdb01已经降级为备库。并且已经同步trexdb02的数据。
验证4 模拟异常关闭,kill主库(trexdb02)进程
kill主库(trexdb02)进程
# trexdb02
ps -ef | grep "/bin/yasdb" | awk '{print $2}' | xargs kill -9 2>/dev/null
查看集群状态
yasboot cluster status -c trexdb -d
此时,trexdb01又自动切换为主库
验证5 再次启动trexdb02节点数据库
# trexdb01或者trexdb02均可
yasboot node start -c trexdb -n 1-2
查看节点状态
# trexdb01或者trexdb02均可
yasboot cluster status -c trexdb -d
可看到trexdb02又切换为备库了。
下面验证数据同步情况
# trexdb01执行
yasql 'sys/"Trex@456"'
SQL> create table trex_test02 as select * from trexinfo;
trexdb02执行
yasql 'sys/"Trex@456"'
SQL> select * from trex_test02;
数据库同步正常
7 备机扩缩容(扩容到一主两备)
OM扩缩容
在扩缩容过程中请不要通过OM对节点进行强制重启/停止节点的操作,否则可能会造成扩缩容失败后无法执行node remove --clean命令。如果不可避免地造成了这种情况,可以通过OM对扩容失败/缩容失败的节点进行强制操作(如yasboot node stop -f)后,通过node remove --node-ids的方式删除失败的节点。 备机扩缩容不能和表空间等数据文件增删、RESIZE操作并发,所以需等待任一事件完成之后才可进行下个操作。
7.1 记录当前主备状态
先关闭之前的仲裁切换
yasboot election enable off -c trexdb
7.2 在线增加备机节点
7.2.1 生成配置文件
在新增主机上增加备机节点,会生成hosts_add.toml和trexdb_add.toml两个配置文件。
cd /home/yashan/install/ yasboot config node gen -c trexdb -u yashan -p 'Trex@123' --ip 192.168.7.23 --port 22 --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data -g 1 --node 1
注意路径
–install-path /data/yashan/yasdb_home
–data-path /data/yashan/yasdb_data
注意生成的hosts_add.toml和trexdb_add.toml两个配置文件中的路径是否正确
修改路径和之前主备环境一致
sed -i 's#/data/yashan/yasdb_home/yashandb/log/trexdb/db-1-3#/data/yashan/yasdb_home/yashandb/23.1.1.100#' trexdb_add.toml
7.2.2 部署新主机
yasboot host add -c trexdb -i yashandb-personal-23.1.1.100-linux-x86_64.tar.gz -t hosts_add.toml
7.2.3 扩容
yasboot node add -c trexdb -t trexdb_add.toml
任务显示成功并不代表着扩容任务成功,因为仍有后台任务在完成数据的同步等操作。
7.2.4 查看扩容是否成功
可以通过task list
命令查看和扩容相关的任务是否都成功。
yasboot task list -c trexdb --search type=NodeAdd
yasboot cluster status -c trexdb -d
可以看到目前是一主两备状态。
在线删除备机节点
yasboot node remove --node-ids 1-3 --purge --force -c trexdb
再次查看集群状态
yasboot cluster status -c trexdb -d
可以看到又回到了一主一备状态。
8 问题汇总及解决方法
8.1 依赖包问题
在重启操作系统后,再次启动yasom 和 yasagent 时出现如下警告和报错。
注:
安装过程无警告或报错,只是重启操作后出现了该问题。
yasboot process yasom start -c trexdb
yasboot process yasagent start -c trexdb
warning: watch yasom error: monitor failed, stdout: , stderr: /data/yashan/yasdb_home/yashandb/23.1.1.100/ext/monit/monit: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory warning: watch yasagent error: monitor failed, stdout: , stderr: /data/yashan/yasdb_home/yashandb/23.1.1.100/ext/monit/monit: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
缺少依赖包libnsl。
解决方法:
在各个节点安装libnsl包即可。
yum install -y libnsl
体验总结
- 在部署方面,文档详细,崖山的脚本化部署安装很方便,不管是单机还是一主多从高可用,非常容易上手。
- 故障切换方面,一主一备方面通过yasom仲裁,在主库故障的情况下,将备库切换为新的主库,经过几轮测试验证,在故障切换方面也十分稳健。
- 节点扩缩容方面,支持在线对备机进行在线扩缩,且不影响原主机的使用,包括在线增加备机节点和在线删除节点。简单几条命令就可以实现节点扩缩容,在实际体验当中也相当的丝滑。
可以看到崖山的研发团队在产品上还是下了很大的功夫在做产品,同时也期待崖山企业版开放个人试用,生产上用的话,还是要基于企业版的进行开发测试验证。后续我也会实践崖山数据库的其他功能进行验证,希望崖山数据库继续精心打磨产品,在国产数据库行列里扛一面大旗!
本文为原创,如需转载请在文章前注明出处。
https://www.modb.pro/knowledge?id=1731226172397281280
如果该文章有帮助到您,请 点赞 支持,谢谢!
有任何疑问,欢迎在评论中留言。