介绍
YashanDB 多活共享集群(YashanDB for Cluster,YAC)为单库多实例架构,在共享集群部署形态下,在硬件上需依赖共享存储,在软件上也引入新的基础设施,包括崖山集群服务YCS和崖山文件系统YFS,分别提供集群管理和并行文件服务的能力。
环境信息
共享集群部署以两台服务器+一台共享存储为示例,搭建双实例单库的典型共享集群环境。
服务器版本: CentOS Linux release 7.9.2009
服务器:
| 服务器名称 | 服务器IP | 角色 |
|---|---|---|
| ysdb01 | 192.168.20.241 | 数据库实例1 |
| ysdb02 | 192.168.20.242 | 数据库实例2 |
共享存储:(存储上已按配置要求划分三个LUN并已通过多路径的方式挂载)
| LUN名称 | LUN路径 | 角色 | 大小 |
|---|---|---|---|
| LUN1 | /dev/asm-data01 | 数据盘 | 10G |
| LUN2 | /dev/asm-vote | 投票盘 | 2G |
| LUN3 | /dev/asm-ocr | YCR盘 | 2G |
实践过程
安装前准备
服务器配置
| 项目 | 推荐配置 | 最低配置 |
|---|---|---|
| 操作系统 | CentOS 7.6以上,KylinOS V10,openEuler 22.03 | 如需使用大页内存,则要求Linux内核版本为2.6及以上 |
| CPU | X86_64,ARM64超线程,非超线程 推荐4C及以上;共享集群推荐8C及以上 | CPU核数>2 |
| 内存 | 推荐16G及以上;共享集群推荐32G及以上 | >4G |
| 硬盘 | 推荐使用SSD 推荐存储空间50G及以上 | >4G |
| 文件系统 | ext4或xfs | 不能为tmpfs |
| 网络 | 千兆以上以太网,支持TCP和UDP;共享集群内部均要求10GE,不包含RDMA | - |
共享存储配置
| 项目 | 推荐配置 | 最低配置 |
|---|---|---|
| 硬盘 | SSD/HDD都支持,品牌和介质不交叉组合 | - |
| LUN | 四块或者六块以上:三块或者五块YCS盘(1G)其他为数据盘(50G及以上) | - |
| 接口 | 存储设备及操作系统支持Direct IO,支持512字节内存对齐和IO大小对齐存储设备支持通过 pread64、pwrite64 接口一次性读写512字节整倍数, 即支持一次性读写如下所有大小:512字节、1024字节、1536字节…32M |
- |
依赖项准备
为保障YashanDB的正常安装和运行,请按如下来源及最低版本要求,在所有服务器环境中配置所需依赖项:
| 动态库名称 | 来源 | 版本要求 | 作用 |
|---|---|---|---|
| libcrypto.so.1.1 | openssl | 1.1.1 | 加密 |
| libssl.so | openssl | 1.1.1 | 网络通信 |
| libssl.so.1.1 | openssl | 1.1.1 | - |
| libgmssl.so.3.1 | gmssl | 3.1.1及以上 | 加密 |
| liblz4.so | lz4 | 1.9.3及以上 | 数据压缩和解压缩 |
| liblz4.so.1 | lz4 | 1.9.3及以上 | - |
| liblz4.so.1.9.3 | lz4 | 1.9.3及以上 | - |
| libz.so | zlib | 1.2.12及以上 | 数据压缩 |
| libz.so.1 | zlib | 1.2.12及以上 | - |
| libz.so.1.2.12 | zlib | 1.2.12及以上 | - |
| libzstd.so | zstd | 1.5.2及以上 | 数据压缩和解压缩 |
| libzstd.so.1 | zstd | 1.5.2及以上 | - |
| libzstd.so.1.5.2 | zstd | 1.5.2及以上 | - |
| monit | monit | 5.28.0及以上 | 守护进程 |
目前计划安装版本
| 依赖包 | 版本要求 | 安装版本 | 作用 |
|---|---|---|---|
| openssl | 1.1.1 | 1.1.1 | — |
| gmssl | 3.1.1及以上 | 3.1.1 | — |
| lz4 | 1.9.3及以上 | 1.10.0 | — |
| zlib | 1.2.12及以上 | 1.3.1 | — |
| zstd | 1.5.2及以上 | 1.5.5 | — |
| monit | 5.28.0及以上 | 5.34.2 | — |
节点一二都需要执行
[root@ysdb01 yum.repos.d]# yum install -y openssl gmssl lz4 zlib zstd monit
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
[root@ysdb01 yum.repos.d]# rpm -q openssl gmssl lz4 zlib zstd monit
openssl-1.0.2k-26.el7_9.x86_64
package gmssl is not installed
lz4-1.8.3-1.el7.x86_64
zlib-1.2.7-21.el7_9.x86_64
package zstd is not installed
package monit is not installed
各个组件下载地址
perl 安装
注:perl 主要是为下面依赖包安装做准备,有些依赖包可能需要有perl环境
-- 1 下载介质
[root@ysdb01 openssl-1.1.1l]# mkdir /opt/perl && cd /opt/perl
[root@ysdb01 perl]# wget https://www.cpan.org/src/5.0/perl-5.36.0.tar.gz --no-check-certificate
-- 2 解压
[root@ysdb01 perl]# tar -zxvf perl-5.36.0.tar.gz && rm -rf perl-5.36.0.tar.gz
-- 3 安装配置
[root@ysdb01 perl]# cd /opt/perl/perl-5.36.0 && ./Configure -des -Dprefix=/opt/perl/perl-5.36.0
-- 4 编译
[root@ysdb01 perl]# make && make test && make install
-- 5 环境变量配置
echo "export PERL_HOME=/opt/perl/perl-5.36.0" >> /etc/profile
echo "export PATH=\$PERL_HOME/bin:\$PATH" >> /etc/profile
source /etc/profile
[root@ysdb01 ~]# perl -v
cmake 安装
注:cmake 主要是为下面依赖包安装做准备,有些依赖包可能需要有cmake环境
[root@ysdb02 opt]# wget https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2.tar.gz
[root@ysdb02 opt]# tar xvf cmake-3.31.2.tar.gz
[root@ysdb02 opt]# cd cmake-3.31.2
[root@ysdb02 cmake-3.31.2]# ./bootstrap
[root@ysdb02 cmake-3.31.2]# make&&make install
[root@ysdb01 cmake-3.31.2]# cmake --version
cmake version 3.31.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
openssl 安装
[root@ysdb01 openssl-1.1.1l]# find /usr -name openssl
/usr/bin/openssl
/usr/lib64/openssl
mv /usr/bin/openssl /usr/bin/openssl_old
mv /usr/lib64/openssl/ /usr/lib64/openssl_old
mv /usr/bin/openssl /usr/bin/openssl_old.bak
mv /usr/lib64/openssl/ /usr/lib64/openssl_old.bak
-- 解压安装包安装
[root@ysdb01 opt]# wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
[root@ysdb01 opt]# tar -xvf openssl-1.1.1l.tar.gz
[root@ysdb01 opt]# cd openssl-1.1.1l/
[root@ysdb01 openssl-1.1.1l]# ./config --prefix=/usr/local/openssl
Operating system: x86_64-whatever-linux2
You need Perl 5.
[root@ysdb01 openssl-1.1.1l]# make && make install
-- 重新链接 openssl
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl
echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf
ldconfig -v
-- 查看 openssl 版本
[root@ysdb01 openssl-1.1.1l]# openssl version
OpenSSL 1.1.1l 24 Aug 2021
gmssl 安装(安装失败)
注:通过整体安装过程知,可能此处安装失败,并不影响集群的部署
-- 1 下载介质
[root@ysdb02 opt]# cd /opt
[root@ysdb02 opt]# wget https://github.com/guanzhi/GmSSL/archive/refs/tags/v3.1.1.tar.gz]
[root@ysdb02 opt]# mv v3.1.1.tar.gz GmSSL-3.1.1.tar.gz
-- 2 安装依赖包
[root@ysdb02 opt]# yum install -y cmake openssl-devel gcc gcc-c++ unzip zlib-devel
-- 3 编译安装 gmssl
[root@ysdb01 opt]# tar -xf GmSSL-3.1.1.tar.gz
[root@ysdb02 opt]# cd GmSSL-3.1.1/
[root@ysdb02 GmSSL-3.1.1]# mkdir build && cd build
[root@ysdb02 build]# cmake ..
## 在 make install 完成后,GmSSL 会在默认安装目录中安装 gmssl 命令行工具,在头文件目录中创建 gmssl 目录,并且在库目录中安装 libgmssl.a、libgmssl.so 等库文件
[root@ysdb01 build]# make && make test && make install
mmonit 安装
[root@ysdb01 ~]# cd /opt/
[root@ysdb01 opt]# wget https://mmonit.com/monit/dist/monit-5.34.2.tar.gz
[root@ysdb01 opt]# tar -xf monit-5.34.2.tar.gz
[root@ysdb01 opt]# cd monit-5.34.2/
[root@ysdb01 monit-5.34.2]# ./configure --without-pam && make && make install
[root@ysdb01 monit-5.34.2]# monit -V
This is Monit version 5.34.2
Built with ssl, with ipv6, with compression, without pam and with large files
Copyright (C) 2001-2024 Tildeslash Ltd. All Rights Reserved.
zstd 安装
[root@ysdb02 opt]# wget https://mirrors.aliyun.com/epel/7/x86_64/Packages/z/zstd-1.5.5-1.el7.x86_64.rpm
--2024-12-18 11:02:01-- https://mirrors.aliyun.com/epel/7/x86_64/Packages/z/zstd-1.5.5-1.el7.x86_64.rpm
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 202.110.112.198, 39.91.185.207, 202.110.112.200, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|202.110.112.198|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 459964 (449K) [application/x-rpm]
Saving to: std-1.5.5-1.el7.x86_64.rpm
100%[=============================================================================================================================================================>] 459,964 --.-K/s in 0.05s
2024-12-18 11:02:01 (8.37 MB/s) - std-1.5.5-1.el7.x86_64.rpmsaved [459964/459964]
[root@ysdb02 opt]# ll
total 10056
-rw-r--r-- 1 root root 9834044 Sep 21 17:54 openssl-1.1.1l.tar.gz
-rw-r--r-- 1 root root 459964 Apr 5 2023 zstd-1.5.5-1.el7.x86_64.rpm
[root@ysdb02 opt]# rpm -ivh zstd-1.5.5-1.el7.x86_64.rpm
warning: zstd-1.5.5-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zstd-1.5.5-1.el7 ################################# [100%]
[root@ysdb02 opt]# zstd --version
*** Zstandard CLI (64-bit) v1.5.5, by Yann Collet ***
lz4 安装
[root@ysdb01 opt]# wget https://sourceforge.net/projects/lz4.mirror/files/v1.10.0/lz4-1.10.0.tar.gz
[root@ysdb01 opt]# tar zvfx lz4-1.10.0
[root@ysdb01 opt]# chown -R root.root lz4-1.10.0
[root@ysdb01 opt]# cd lz4-1.10.0
[root@ysdb01 lz4-1.10.0]# make && make install
[root@ysdb01 lz4-1.10.0]# lz4 --version
*** lz4 v1.10.0 64-bit multithread, by Yann Collet ***
zlib 安装
[root@ysdb02 opt]# wget https://zlib.net/zlib-1.3.1.tar.gz
[root@ysdb02 opt]# tar zvfx zlib-1.3.1.tar.gz
[root@ysdb02 opt]# chown -R root.root zlib-1.3.1
[root@ysdb01 opt]# cd zlib-1.3.1
[root@ysdb01 zlib-1.3.1]# ./configure
[root@ysdb01 zlib-1.3.1]# make && make install
[root@ysdb01 zlib-1.3.1]# cat /usr/lib64/pkgconfig/zlib.pc
prefix=/usr
exec_prefix=${prefix}
libdir=/usr/lib64
sharedlibdir=${libdir}
includedir=/usr/include
Name: zlib
Description: zlib compression library
Version: 1.2.7
Requires:
Libs: -L${libdir} -L${sharedlibdir} -lz
Cflags: -I${includedir}
[root@ysdb01 zlib-1.3.1]# ls /usr/local/lib|grep libz
libz.a
libz.so
libz.so.1
libz.so.1.3.1
[root@ysdb01 zlib-1.3.1]#
操作系统参数调整
设置服务器hostname
调整系统主机名
hostnamectl set-hostname ysdb01
hostnamectl set-hostname ysdb02
关闭交换分区
使用sysctl -a | grep swappiness查看当前状态,建议设置为0以减少内存交换,避免影响系统性能。
[root@ysdb01 build]# sysctl -a | grep swappiness
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens192.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
vm.swappiness = 30
[root@ysdb01 build]# sysctl -w vm.swappiness=0
vm.swappiness = 0
[root@ysdb01 build]# echo "vm.swappiness=0">> /etc/sysctl.conf
调整自动分配本地端口范围
使用cat /proc/sys/net/ipv4/ip_local_port_range查看连接可用的本地端口范围,下限值建议大于30000以减少端口冲突。
# sysctl -w net.ipv4.ip_local_port_range='32768 60999'
# echo "net.ipv4.ip_local_port_range=32768 60999" >> /etc/sysctl.conf
调整进程的VMA上限
使用sysctl -a|grep vm.max_map_count查看当前上限值,建议大于2000000以增大数据库进程可拥有的VMA大小。
# sysctl -w vm.max_map_count=2000000
# echo "vm.max_map_count=2000000" >> /etc/sysctl.conf
调整资源限制值
将部分资源限制值(使用ulimit -a可查看所有的资源限制值)调整为推荐值或以上。
| 资源项 | 推荐值 | COMMAND | 资源项说明 |
|---|---|---|---|
| open files | 1048576 | ulimit -n 1048576 | 进程打开的文件数 |
| max user processes | 1048576 | ulimit -u 1048576 | 最大用户进程数 |
| max memory size | unlimited | ulimit -m unlimited | 进程最大占用内存值 |
| stack size | 8192 | ulimit -s 8192 | 进程最大栈空间 |
echo "
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 1048576
* hard nproc 1048576
* soft rss unlimited
* hard rss unlimited
* soft stack 8192
* hard stack 8192
" >> /etc/security/limits.conf
启用大页内存
需要时配置
关闭透明大页
1、 部分操作系统默认开启了透明大页选项,可执行以下命令确认:
## Red Hat Enterprise Linux 内核
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
## 其他内核
# cat /sys/kernel/mm/transparent_hugepage/enabled
-
若显示[always] madvise never或always [madvise] never,则说明透明大页已开启。
-
若显示always madvise [never],则说明透明大页已关闭。
2、 执行vi /etc/default/grub,在GRUB_CMDLINE_LINUX中添加或修改参数transparent_hugepage=never。
[root@ysdb02 zlib-1.3.1]# vi /etc/default/grub
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"
~
3、通过以下指令检查当前系统的引导类型:
[root@ysdb01 build]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
BIOS
两种引导的启动文件路径分别为:
- BIOS:/boot/grub2/grub.cfg
- UEFI:/boot/efi/EFI/<distro_name>/grub.cfg,distro_name为系统发行版本名称,例如ubuntu、fedora、debian等。
4、执行grub2–mkconfig指令重新配置grub.cfg。
## BIOS 引导
# grub2-mkconfig -o /boot/grub2/grub.cfg
## UEFI 引导
# grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg
5、重启操作系统,使配置永久生效。
[root@ysdb02 zlib-1.3.1]# reboot
6、验证透明大页已关闭:
## Red Hat Enterprise Linux 内核
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
## 其他内核
# cat /sys/kernel/mm/transparent_hugepage/enabled
[root@ysdb01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
应显示always madvise [never]
安装初始环境调整
开放端口
默认端口号:
| 部署形态 | 数据库监听 | yasom | 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
方式二:添加白名单
查看防火墙端口开放情况:
# firewall-cmd --zone=public --list-ports
添加端口到防火墙:
以1688为例演示如何添加端口到防火墙中,其他端口操作方法相同。
## 添加(--permanent表示永久生效,没有此参数重启后失效)
# firewall-cmd --zone=public --add-port=1688/tcp --permanent
## 重新载入
# firewall-cmd --reload
## 查看
# firewall-cmd --zone=public --query-port=1688/tcp
开启SSH服务
systemctl status sshd.service
清理环境(共享集群部署)
如部署YashanDB共享集群,还需在所有服务器上清理共享内存。
# ipcrm -a
创建安装用户
所有服务器上创建YashanDB产品的安装用户,而非使用root身份执行安装部署。
1、创建安装用户
# useradd -d /home/yashan -m yashan
# echo "root123"|passwd --stdin yashan
2、配置sudo免密
## 对root用户赋权并打开/etc/sudoers文件
# cd /etc
# ll sudoers
# chmod +w sudoers
# vi /etc/sudoers
## 在文件的最后添加如下内容后保存退出
# yashan ALL=(ALL)NOPASSWD:ALL
按需恢复/etc/sudoers文件的属性。
# chmod -w sudoers
3、将安装用户加入YASDBA用户组
# groupadd YASDBA
# usermod -a -G YASDBA yashan
服务器目录规划
安装目录
YashanDB采用集群多服务器并行安装模式,只需在一台服务器上创建安装目录,用于下载和解压软件包。
本安装手册中,安装目录规划在/home/yashan下,由yashan用户执行软件包下载时自行创建。
HOME目录和DATA目录
所有YashanDB的实例节点都必须规划以下两个目录:
-
HOME目录:YashanDB的产品目录,包含YashanDB所提供的命令、数据库运行所需的库及各关键组件。该目录由yashan用户执行安装部署时输入的install-path参数根据一定规则生成并创建。
-
DATA目录:YashanDB的数据目录,包含数据库的各类系统数据文件、部分日志文件和配置文件,用户数据也缺省存储在该目录下。但对于共享集群,所有的数据文件和redo文件均需保存在共享存储上,DATA目录将只用于存储实例运行相关的配置文件、日志文件等数据。该目录由yashan用户执行安装部署时输入的–data-path参数根据一定规则生成并创建。
本安装手册中,HOME目录和DATA目录均规划在/data/yashan下,yashan用户需要对该目录拥有全部权限,可执行如下命令授权:
# cd /
# mkdir -p /data/yashan
# chmod -R 777 /data/yashan
运行日志目录
YashanDB的运行日志目录,包含数据库运行过程中产生的日志文件,该目录默认为HOME目录/yashandb/版本号/log。
Note:
为避免运行日志跟数据文件IO相互影响,建议将数据库的运行日志与数据文件路径配置到不同的物理盘上。
运行日志路径:由集群配置文件(集群名称.toml)中group.node.config配置域下的RUN_LOG_FILE_PATH参数决定。
数据文件路径:由执行安装部署时输入的--data-path参数决定,安装完成后可直接修改集群配置文件中group.node配置域下的data_path参数。共享集群部署的数据文件路径默认配置在共享存储下,无法直接修改,只能通过修改共享存储的路径从而调整数据文件存储的路径。
绑定LUN(共享集群部署)
利用虚拟机共享盘的设置,同时挂载到两个主机上,实现集群所需的共享盘。
192.168.20.241 节点,使用新建硬盘,设置如下选项,并开启虚拟机的UUID选项(需关机调整)



192.268.20.242 节点,使用现有硬盘,选择“192.168.20.241 节点”建的硬盘,设置如下选项,并开启虚拟机的UUID选项(需关机调整)



主机层面进行盘绑定。
快捷脚本
for i in b c d;
do
echo "KERNEL==\"sd$i\",SUBSYSTEM==\"block\",PROGRAM==\"/lib/udev/scsi_id -g -u -d /dev/\$name\",RESULT==\"`/lib/udev/scsi_id -g -u -d /dev/sd$i`\",SYMLINK+=\"asm-5g-xxxx-grid1\",OWNER=\"yashan\",GROUP=\"YASDBA\",MODE=\"0666\""
done
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29550275600389fc97dff3fe897",SYMLINK+="asm-5g-xxxx-grid1",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29c427790bd6b6da37f50d09661",SYMLINK+="asm-5g-xxxx-grid1",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29ce4e888c455f5f7895306d1ab",SYMLINK+="asm-5g-xxxx-grid1",OWNER="grid",GROUP="asmadmin",MODE="0660"
--调整脚本输出
vi /etc/udev/rules.d/99-yashan-asm.rules
KERNEL=="sdb",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29550275600389fc97dff3fe897",SYMLINK+="asm-ycr",OWNER="yashan",GROUP="YASDBA",MODE="0666"
KERNEL=="sdc",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29c427790bd6b6da37f50d09661",SYMLINK+="asm-vote",OWNER="yashan",GROUP="YASDBA",MODE="0666"
KERNEL=="sdd",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36000c29ce4e888c455f5f7895306d1ab",SYMLINK+="asm-data01",OWNER="yashan",GROUP="YASDBA",MODE="0666"
启动udev
[root@ysdb01 dev]# udevadm control --reload
[root@ysdb01 dev]# udevadm trigger
[root@ysdb01 dev]# ls -l /dev/asm*
lrwxrwxrwx 1 root root 3 Dec 20 14:25 /dev/asm-data01 -> sdd
lrwxrwxrwx 1 root root 3 Dec 20 14:25 /dev/asm-vote -> sdc
lrwxrwxrwx 1 root root 3 Dec 20 14:25 /dev/asm-ycr -> sdb
重启服务器
systemctl reboot
检查绑定结果
[root@ysdb01 ~]# /lib/udev/scsi_id --whitelisted --device=/dev/sdb
36000c29550275600389fc97dff3fe897
[root@ysdb01 ~]# /lib/udev/scsi_id --whitelisted --device=/dev/sdc
36000c29c427790bd6b6da37f50d09661
[root@ysdb01 ~]# /lib/udev/scsi_id --whitelisted --device=/dev/sdd
36000c29ce4e888c455f5f7895306d1ab
下载软件包
软件包清单
| 软件包名称 | 说明 |
|---|---|
| yashandb-xx.xx-linux-x86_64.tar.gz | YashanDB安装包,适用于在Linux x86_64/arm64平台下进行数据库的安装和部署 |
| yashandb-plugins-all-xx.xx-linux-x86_64.tar.gz | YashanDB插件包,适用于在Linux x86_64/arm64平台下进行数据库相关插件的安装和部署 |
软件包下载
所有服务端安装步骤,将由数据库安装用户进行操作,请先切换至yashan用户或直接以yashan用户登录至服务器。
为便于表述YashanDB的安装部署过程,统一以使用yashandb-23.2.4.100-linux-x86_64.tar.gz安装包为例
1、创建install目录
[root@ysdb01 ~]# su - yashan
[yashan@ysdb01 ~]$ mkdir install
2、下载软件包
[root@ysdb01 ~]# cd /home/yashan/install/
[root@ysdb01 install]# ll
total 198352
-rw-r--r-- 1 root root 189823431 Dec 20 2024 yashandb-23.2.4.100-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 13284930 Dec 16 17:00 yashandb-plugins-all-23.2.4.100-linux-x86_64.tar.gz
[root@ysdb01 install]# chown ^C
[root@ysdb01 install]# id yashan
uid=1000(yashan) gid=1000(yashan) groups=1000(yashan),1001(YASDBA)
[root@ysdb01 install]# chown yashan.yashan yashandb-*
3、获取安装工具
YashanDB所提供的软件包中包含安装工具,位于bin目录下。如执行命令行安装需使用yasboot命令,如执行可视化安装需使用yasom命令。
[yashan@ysdb01 install]$ tar zxf yashandb-23.2.4.100-linux-x86_64.tar.gz
[yashan@ysdb01 install]$ ll ./bin/yasboot
-rwxrwxr-x 1 yashan yashan 13486576 Sep 4 17:29 ./bin/yasboot
[yashan@ysdb01 install]$ ll ./bin/yasom
-rwxrwxr-x 1 yashan yashan 23039032 Sep 4 17:29 ./bin/yasom
共享集群部署
步骤1:生成部署文件
[yashan@ysdb01 install]$ cd /home/yashan/install
[yashan@ysdb01 install]$ ./bin/yasboot package ce gen --cluster yashandb -u yashan -p root123 --ip 192.168.20.241,192.168.20.242 --port 22 --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data --begin-port 1688 --node 2 --data /dev/asm-data01 --vote /dev/asm-vote --ycr /dev/asm-ycr
host host0002 openssl version: OpenSSL 1.1.1l 24 Aug 2021
OpenSSL version is 1.1.1 or greater
host host0001 openssl version: OpenSSL 1.1.1l 24 Aug 2021
OpenSSL version is 1.1.1 or greater
hostid | group | node_type | node_name | listen_addr | inter_connect | data_path
----------------------------------------------------------------------------------------------------------------
host0001 | ceg1 | ce | 1-1 | 192.168.20.241:1688 | 192.168.20.241:1689 | /data/yashan/yasdb_data
----------+-------+-----------+-----------+---------------------+---------------------+-------------------------
host0002 | ceg1 | ce | 1-2 | 192.168.20.242:1688 | 192.168.20.242:1689 | /data/yashan/yasdb_data
----------+-------+-----------+-----------+---------------------+---------------------+-------------------------
Generate config completed
| 参数 | 说明 |
|---|---|
| –cluster | 指定数据库集群名称,该名称也将作为初始数据库的名称(database name) |
| –port | 指定SSH服务端口 |
| –install-path | 指定数据库安装路径 |
| –data-path | 指定数据存放目录 |
| –begin-port | 指定第一个数据库实例的数据库监听端口 |
| –data | 指定绑定的数据盘路径 |
| –vote | 指定绑定的投票盘路径 |
| –ycr | 指定绑定的YCR盘路径 |
执行完毕后,当前目录下将生成yashandb.toml和hosts.toml两个配置
[yashan@ysdb01 install]$ ll
total 198392
...
-rw------- 1 yashan yashan 837 Dec 20 15:44 hosts.toml <=======服务器的配置文件
drwxrwxr-x 2 yashan yashan 64 Sep 4 17:28 include
drwxrwxr-x 3 yashan yashan 17 Sep 4 17:29 java
...
-rw------- 1 yashan yashan 2280 Dec 20 15:44 yashandb.toml <=======数据库集群的配置文件
步骤2:执行安装
本次使用–plugin参数,将插件包一同安装
方式一:如需使用DBLINK功能和更丰富的内置函数(例如LSFA_LISTAGG),需先下载plugin插件包并在安装命令中指定–plugin参数。安装完成后,无法单独安装该插件包。
[yashan@ysdb01 install]$ ./bin/yasboot package install -t hosts.toml -i yashandb-23.2.4.100-linux-x86_64.tar.gz --plugin yashandb-plugins-all-23.2.4.100-linux-x86_64.tar.gz
host host0002 openssl version: OpenSSL 1.1.1l 24 Aug 2021
OpenSSL version is 1.1.1 or greater
host host0001 openssl version: OpenSSL 1.1.1l 24 Aug 2021
OpenSSL version is 1.1.1 or greater
checking install package...
install version: yashandb 23.2.4.100
host0001 100% [====================================================================] 6s
host0002 100% [====================================================================] 3s
update host to yasom...
[yashan@ysdb01 install]$
方式二:直接安装。
$ ./bin/yasboot package install -t hosts.toml -i yashandb-23.2.1.100-linux-x86_64.tar.gz
步骤3:数据库部署
[yashan@ysdb01 install]$ ./bin/yasboot cluster deploy -t yashandb.toml --yfs-force-create
type | uuid | name | hostid | index | status | return_code | progress | cost
------------------------------------------------------------------------------------------------------------
task | e75b3a3b59bf4cf4 | DeployYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 60
------+------------------+--------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
可通过指定-d, --child参数展示任务以及子任务信息,从而了解部署进度。
步骤4:配置环境变量
以安装用户登录到每个服务器上,执行如下命令生效环境变量。
# 部署命令成功执行后将会在$YASDB_HOME目录下的conf文件夹中生成<<集群名称>>.bashrc环境变量文件
$ cd /data/yashan/yasdb_home/yashandb/23.2.4.100/conf
# 如~/.bashrc中已存在YashanDB相关的环境变量,将其清除
$ cat yashandb.bashrc >> ~/.bashrc
$ source ~/.bashrc
-- 手动调整YASCS_HOME,方便共享集群启停命令管理
[yashan@ysdb01 ~]$ vi .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
[ -f /home/yashan/.yasboot/yasboot.completion.bash ] && source /home/yashan/.yasboot/yasboot.completion.bash
export YASDB_HOME=/data/yashan/yasdb_home/yashandb/23.2.4.100
export YASCS_HOME=/data/yashan/yasdb_data/ycs/ce-1-1
export PATH=${YASDB_HOME}/bin:${YASCS_HOME}/bin:$PATH
export LD_LIBRARY_PATH=${YASDB_HOME}/lib:$LD_LIBRARY_PATH
if command -v rlwrap >/dev/null 2>&1; then
alias yasql="rlwrap yasql"
fi
export YASDB_DATA=/data/yashan/yasdb_data/ce-1-1
步骤5:检查安装结果
若连接报错或执行SQL语句报错,请根据错误提示信息检查安装步骤,或咨询我们的技术支持。
YashanDB不提供系统初始口令,需使用yasboot工具设置数据库sys用户的密码,以安装用户登录到服务器并执行如下命令设置密码。
[yashan@ysdb01 conf]$ yasboot cluster password set -n root#1234 -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | e7ce56574259c58a | YasdbPasswordSet | - | yashandb | SUCCESS | 0 | 100 | 2
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
执行如下命令,查看数据库状态。
[yashan@ysdb01 conf]$ yasboot cluster status -c yashandb -d
hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | data_path
-------------------------------------------------------------------------------------------------------------------------------------------------
host0001 | ce | 1-1:1 | 3549 | open | normal | primary | 192.168.20.241:1688 | /data/yashan/yasdb_data/ce-1-1
----------+-----------+--------+------+-----------------+-----------------+---------------+---------------------+--------------------------------
host0002 | ce | 1-2:2 | 3429 | open | normal | primary | 192.168.20.242:1688 | /data/yashan/yasdb_data/ce-1-2
----------+-----------+--------+------+-----------------+-----------------+---------------+---------------------+--------------------------------
使用yasql工具连接数据库,查看实例状态。
[yashan@ysdb01 conf]$ yasql sys/root#1234@192.168.20.241:1688
YashanDB SQL Enterprise Edition Release 23.2.4.100 x86_64
Connected to:
YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 - X86 64bit Linux
SQL> SELECT STATUS FROM V$INSTANCE;
STATUS
-------------
OPEN
1 row fetched.
SQL> SELECT database_name FROM v$database;
DATABASE_NAME
----------------------------------------------------------------
yashandb
1 row fetched.
守护进程开启
[yashan@ysdb01 conf]$ cd /home/yashan/install
[yashan@ysdb01 install]$ ./bin/yasboot monit start --cluster yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | e8a575a848f3c479 | MonitParentStart | - | yashandb | SUCCESS | 0 | 100 | 1
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
[yashan@ysdb01 install]$ ps -ef|grep yashan
root 1754 1734 0 15:40 pts/0 00:00:00 su - yashan
yashan 1755 1754 0 15:40 pts/0 00:00:00 -bash
root 2852 1807 0 15:52 pts/2 00:00:00 su - yashan
yashan 2853 2852 0 15:52 pts/2 00:00:00 -bash
yashan 2960 1 0 15:53 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.2.4.100/bin/yasagent --init -c yashandb -l 192.168.20.241:1676 --host-id host0001 -k -d
yashan 3006 1 0 15:54 ? 00:00:01 /data/yashan/yasdb_home/yashandb/23.2.4.100/bin/yasom --init -c yashandb -l 192.168.20.241:1675 -k -d
yashan 3256 2853 0 15:56 pts/2 00:00:00 tail -200f yasboot.log
yashan 3511 1 1 15:58 ? 00:00:13 yascsm -H /data/yashan/yasdb_data/ycs/ce-1-1 -F
yashan 3521 3511 5 15:58 ? 00:00:40 yascs -H /data/yashan/yasdb_data/ycs/ce-1-1 -F
yashan 3549 1 16 15:58 ? 00:01:49 /data/yashan/yasdb_home/yashandb/23.2.4.100/bin/yasdb nomount -D /data/yashan/yasdb_data/ce-1-1
yashan 4343 1 1 16:09 ? 00:00:00 monit -c /data/yashan/yasdb_home/yashandb/23.2.4.100/ext/monit/monitrc
yashan 4351 1755 0 16:10 pts/0 00:00:00 ps -ef
yashan 4352 1755 0 16:10 pts/0 00:00:00 grep --color=auto yashan
总结
YashanDB 多活共享集群安装过程总体来说不算特别复杂,除了依赖包安装的部分,建议可把这块内容打包一个附件包,适配不同的操作系统版本,减少安装过程的复杂度,另外,官方文档关于集群安装的部分介绍非常详细,对于初学者来说,相当友好。




