YashanDB 23.2 YAC 共享集群部署实战:轻松上手!

大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。

社群交流

为了给大家提供一些技术交流的平台,目前已成立的技术交流群:

  • Oracle 数据库交流群
  • 国产数据库交流群
  • Linux 技术交流群
  • ChatGPT 4o 免费体验群

需要进群(均已超过 200 人,需要邀请 )可以添加号主微信:Lucifer-0622,备注对应的群名即可。

前言

前文介绍了 YashanDB YAC 入门指南与技术详解,这两天正好有时间,体验了一把崖山的共享集群(YAC)部署,据说 YAC 和 Oracle RAC 的相似性很高,在国产数据库中是绝无仅有的。

本来看崖山官网最新发布了个人版 v23.3 ,想测测最新版,但是个人版暂不支持共享集群,所以退而求其次选择了目前最新的企业版 v23.2.4 进行测试。

环境准备

本文以经典架构(2 台服务器,1 共享存储且包含 3 个及以上 LUN)为例,搭建双实例单库的共享集群环境。

主机名 IP 版本 CPU 内存 硬盘
yac01 192.168.6.160 银河麒麟 Kylin V10 x86 8G 100G
yac02 192.168.6.161 银河麒麟 Kylin V10 x86 8G 100G

服务器规划

服务器配置必须大于最低配置:

共享存储规划

YashanDB v23.2 共享集群要求共享存储规划 3 类磁盘(在 v23.3 有所改动,变为 2 类):

  • 数据盘 :一块或多块,根据业务实际情况规划,其中一块数据盘的路径将作为 yasboot package ce gen 命令的 data 选项参数。
  • 投票盘 :一块,建议规划为 1G 及以上,该盘路径将作为 yasboot package ce gen 命令的 vote 选项参数。
  • YCR 盘 :一块,建议规划为 1G 及以上,该盘路径将作为 yasboot package ce gen 命令的 YCR 选项参数。

既定共享存储上已划分 3 块盘:

  • 数据盘 :规划绑定至 /dev/yasdata 路径。
  • 投票盘 :规划绑定至 /dev/yasvote 路径。
  • YCR盘 :规划绑定至 /dev/yasycr 路径。

绑定目录(/dev/yfs)与磁盘名称(yasdata、yasvote、yasycr等)均为示例值,请根据实际业务需求调整,但命名时需注意:

  • 绑定后磁盘的绝对路径(例如/dev/yfs/sys0)长度不得超过 31 字节。
  • 绑定目录和磁盘的绝对路径均将作为 yasboot package ce gen 命令的参数值,如有修改,请在执行 yasboot package ce gen 时使用实际参数。

端口划分

运行 YashanDB 产品需要占用一系列端口:

部署形态 数据库监听 yasom yasagent 服务器间通信
单机部署 1688 1675 1676 1689、1670

建议在所有服务器上开放上述端口,或者关闭防火墙。此外,需启用可视化部署 Web 服务的服务器,还需开放 9001 端口。

安装包下载

崖山 v23.2 共享集群版本需要企业版才能支持,官网直接下载即可:

崖山安装包官方下载链接:download.yashandb.com/download

安装前准备(所有节点)

📢注意:本章节内容均需要在所有节点执行,以节点一为例进行演示!

配置 /etc/hosts

部署 YAC 共享集群,必须配置主机名,服务器名称要求如下:

  • 名称由字母、数字以及下划线组成,且必须以字母开头,长度为 [4,64] 个字符。
  • 同一个 YashanDB 共享集群中的服务器名称不能相同。
  • 建议每台服务器上只运行一个实例,若一台服务器需运行多个实例则要求将服务器名称设置为 [3,63] 个字符。

建议配置主机名解析:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# cat<<-EOF>>/etc/hosts
192.168.6.160	yac01
192.168.6.161	yac02
EOF

关闭防火墙

数据库安装均建议关闭防火墙:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# systemctl stop firewalld
[root@yac01 ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

创建用户和组

主机创建用户如果有密码复杂性要求,不想设置密码太复杂的话,可以取消密码复杂度:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# sed -i 's/^password\+[[:space:]]\+requisite[[:space:]]\+pam_pwquality.so/#&/g' /etc/pam.d/system-auth
[root@yac01 ~]# sed -i 's/use_authtok$//' /etc/pam.d/system-auth

建议在所有服务器上创建 YashanDB 产品的安装用户,而非使用 root 身份执行安装部署:

bash 复制代码
## 以节点一为例
## 这里增加 YASDBA 组是为了后续配置支持:yasql / as sysdba 系统认证
[root@yac01 ~]# groupadd YASDBA
[root@yac01 ~]# useradd -d /home/yashan -m yashan
[root@yac01 ~]# usermod -a -G YASDBA yashan
[root@yac01 ~]# echo "yashan:yashan" | chpasswd
[root@yac01 ~]# id yashan
用户id=1000(yashan) 组id=1001(yashan) 组=1001(yashan),1000(YASDBA)

## 配置 sudo 免密
## 对 root 用户赋权并打开 /etc/sudoers 文件
[root@yac01 ~]# chmod +w /etc/sudoers
## 在文件的最后添加如下内容
[root@yac01 ~]# cat<<-EOF>>/etc/sudoers
yashan ALL=(ALL)NOPASSWD:ALL
EOF
[root@yac01 ~]# chmod -w /etc/sudoers

创建目录

所有 YashanDB 的实例节点都必须规划以下两个目录:

  • HOME 目录:YashanDB 的产品目录,包含 YashanDB 所提供的命令、数据库运行所需的库及各关键组件。该目录由 yashan 用户执行安装部署时输入的 install-path 参数根据一定规则生成并创建。
  • DATA 目录:对于共享集群,所有的数据文件和 redo 文件均需保存在共享存储上,DATA 目录将只用于存储实例运行相关的配置文件、日志文件等数据。该目录由 yashan 用户执行安装部署时输入的 --data-path 参数根据一定规则生成并创建。

HOME 目录和 DATA 目录均规划在 /data/yashan 下,yashan 用户需要对该目录拥有全部权限,可执行如下命令授权:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# mkdir /soft
[root@yac01 ~]# mkdir -p /data/yashan
[root@yac01 ~]# chown -R yashan:yashan /data/yashan
[root@yac01 ~]# chmod -R 777 /data/yashan

系统参数配置

当 YashanDB 安装在 Linux 环境中时,为使系统达到更好的性能,建议进行下述配置调整:

bash 复制代码
## 以节点一为例
## 关闭交换分区
[root@yac01 ~]# echo "vm.swappiness = 0" >>/etc/sysctl.conf
## 调整自动分配本地端口范围
[root@yac01 ~]# echo "net.ipv4.ip_local_port_range = 32768 60999" >>/etc/sysctl.conf
## 调整进程的VMA上限
[root@yac01 ~]# echo "vm.max_map_count=2000000" >>/etc/sysctl.conf
## 生效配置
[root@yac01 ~]# sysctl -p

资源配置

将部分资源限制值(使用 ulimit -a 可查看所有的资源限制值)调整为推荐值或以上。

bash 复制代码
## 以节点一为例
[root@yac01 ~]# cat<<-EOF>>/etc/security/limits.conf
yashan soft nofile 1048576
yashan hard nofile 1048576
yashan soft nproc 1048576
yashan hard nproc 1048576
yashan soft rss unlimited
yashan hard rss unlimited
yashan soft stack 8192
yashan hard stack 8192
EOF

清理共享内存

部署 YashanDB 共享集群,还需在所有服务器上清理共享内存:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# ipcrm -a

配置软件源

Linux 系统安装软件需要配置本地软件源。

⭐️ 配置 Linux 软件源可以参考为之前写的文章:DBA 必备:Linux 软件源配置全攻略

配置本地软件源的方式需要先挂载本地 ISO 安装镜像:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.

一键配置 KylinV10 本地软件源:

bash 复制代码
## 以节点一为例
## 备份软件源初始配置
[root@yac01 ~]# mkdir -p /etc/yum.repos.d/bak
[root@yac01 ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
mv: 无法将目录'/etc/yum.repos.d/bak' 移动至自身的子目录'/etc/yum.repos.d/bak/bak' 下
## 配置软件源
[root@yac01 ~]# cat<<-EOF>/etc/yum.repos.d/local.repo
[server]
name=server
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOF
## 查看软件源内容
[root@yac01 ~]# cat /etc/yum.repos.d/local.repo
[server]
name=server
baseurl=file:///mnt
enabled=1
gpgcheck=0

确保软件源配置完成,就可以安装软件了。

安装依赖包

为保障 YashanDB 的正常安装和运行,请按如下来源及最低版本要求,在所有服务器环境中配置所需依赖项:

安装依赖包:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# dnf install -y openssl gmssl lz4 zlib zstd monit --skip-broken
Package openssl-1:1.1.1f-31.p23.ky10.x86_64 is already installed.
No match for argument: gmssl
Package lz4-1.9.2-4.ky10.x86_64 is already installed.
Package zlib-1.2.11-23.ky10.x86_64 is already installed.
Package zstd-1.4.5-2.ky10.x86_64 is already installed.
No match for argument: monit
Dependencies resolved.
Nothing to do.
Complete!

安装完成后检查是否安装成功:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# rpm -q openssl gmssl lz4 zlib zstd monit
openssl-1.1.1f-31.p23.ky10.x86_64
未安装软件包 gmssl 
lz4-1.9.2-4.ky10.x86_64
zlib-1.2.11-23.ky10.x86_64
zstd-1.4.5-2.ky10.x86_64
未安装软件包 monit 

YashanDB 在 23.2 版本开始增加了一个 openssl 的限制,要求版本必须为 1.1.1,否则安装过程可能出错:

bash 复制代码
## 以节点一为例
## 需要大于 1.1.1
[root@yac01 ~]# openssl version
OpenSSL 1.1.1f  31 Mar 2020

麒麟 V10 系统是符合要求的,如果低于 1.1.1 版本则需要升级 openssl 版本了,可参考我写的 openssl 升级步骤:YashanDB openssl 版本过低升级过程

gmssl 需要手动编译安装,GmSSL-3.1.1.tar.gz 安装包下载,安装步骤如下:

bash 复制代码
## 以节点一为例
## 使用 cmake 安装需要先安装以下依赖包
[root@yac01 soft]# yum install -y cmake openssl-devel gcc gcc-c++ unzip zlib-devel

## 编译安装 gmssl
[root@yac01 soft]# tar -xf GmSSL-3.1.1.tar.gz 
[root@yac01 soft]# cd GmSSL-3.1.1/
[root@yac01 GmSSL-3.1.1]# ls
cmake  CMakeLists.txt  demos  docs  include  INSTALL.md  LICENSE  README.md  src  tests  tools
[root@yac01 GmSSL-3.1.1]# mkdir build && cd build
[root@yac01 build]# cmake ..
## 在 make install 完成后,GmSSL 会在默认安装目录中安装 gmssl 命令行工具,在头文件目录中创建 gmssl 目录,并且在库目录中安装 libgmssl.a、libgmssl.so 等库文件
[root@yac01 build]# make && make test && make install

## 编译出来的动态库需要指定路径,配置环境变量
[root@yac01 build]# cat<<-EOF>>/etc/profile
export PATH=\$PATH:/usr/local/bin
EOF
[root@yac01 build]# source /etc/profile
[root@yac01 build]# echo /usr/local/lib > /etc/ld.so.conf.d/gmssl.conf
[root@yac01 build]# ldconfig

## 查看 gmssl 版本,安装成功
[root@yac01 build]# gmssl version
GmSSL 3.1.1

monit 也需要手动编译安装:monit-5.34.2.tar.gz 安装包下载,安装步骤如下:

bash 复制代码
## 以节点一为例
## 编译安装 monit
[root@yac01 soft]# tar -xf monit-5.34.2.tar.gz 
[root@yac01 soft]# cd monit-5.34.2/
[root@yac01 monit-5.34.2]# ls
aclocal.m4  bootstrap  CHANGES  config  configure  configure.ac  CONTRIBUTORS  COPYING  doc  libmonit  m4  Makefile.am  Makefile.in  monit.1  monitrc  src  system
[root@yac01 monit-5.34.2]# ./configure && make && make install

## 查看 monit 版本,安装成功
[root@yac01 monit-5.34.2]# monit -V
This is Monit version 5.34.2
Built with ssl, with ipv6, with compression, with pam and with large files
Copyright (C) 2001-2024 Tildeslash Ltd. All Rights Reserved.

依赖包全部安装完成。

挂载共享盘

本文通过 iscsi 共享存储作为数据库存储文件系统。

⭐️ 配置 iscsi 共享盘可以参考为之前写的文章:实战篇:使用 StarWind 配置 ISCSI 共享存储

1、Linux 客户端安装 iscsi 软件

bash 复制代码
## 以节点一为例
## 如果遇到报错 -bash: iscsiadm:未找到命令,就需要安装 iscsi 软件
[root@yac01 ~]# yum install -y iscsi-initiator-utils*
[root@yac01 ~]# systemctl start iscsid.service
[root@yac01 ~]# systemctl enable iscsid.service

2、搜索服务端 iscsi target

bash 复制代码
## 以节点一为例
## 192.168.6.43 为 iscsi 服务端 IP 地址
[root@yac01 ~]# iscsiadm -m discovery -t st -p 192.168.6.43
192.168.6.43:3260,-1 iqn.2008-08.com.starwindsoftware:lpc-matebook-yashandb

3、连接服务端 iscsi 共享存储

bash 复制代码
## 以节点一为例
## iqn.2008-08.com.starwindsoftware:lpc-matebook-yashandb 为上一步搜索出的 target 名称
[root@yac01 ~]# iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:lpc-matebook-yashandb -p 192.168.6.43 -l
Logging in to [iface: default, target: iqn.2008-08.com.starwindsoftware:lpc-matebook-yashandb, portal: 192.168.6.43,3260]
Login to [iface: default, target: iqn.2008-08.com.starwindsoftware:lpc-matebook-yashandb, portal: 192.168.6.43,3260] successful.

4、配置开机自动挂载

bash 复制代码
## 以节点一为例
[root@yac01 ~]# iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:lpc-matebook-yashandb -p 192.168.6.43 --op update -n node.startup -v automatic

5、查看挂载成功的共享盘

bash 复制代码
## 以节点一为例,sdb、sdc、sdd 为挂载的共享盘
[root@yac01 ~]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0  100G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   99G  0 part 
  ├─klas-root 253:0    0 91.1G  0 lvm  /
  └─klas-swap 253:1    0  7.9G  0 lvm  [SWAP]
sdb             8:16   0   20G  0 disk 
sdc             8:32   0    5G  0 disk 
sdd             8:48   0    5G  0 disk 
sr0            11:0    1  4.4G  0 rom  /mnt

挂载好共享盘之后就可以配置 UDEV 绑盘了。

UDEV 绑盘

如果共享盘是多路径,建议可以先使用 multipath 进行绑盘,便于管理。

我这里只有一条路径,查看节点磁盘 wwid:

bash 复制代码
## 以节点一为例
[root@yac01 rules.d]# /usr/lib/udev/scsi_id -g -u /dev/sdb
2aed2b7c393099358
[root@yac01 rules.d]# /usr/lib/udev/scsi_id -g -u /dev/sdc
2d87df1589c241e74
[root@yac01 rules.d]# /usr/lib/udev/scsi_id -g -u /dev/sdd
2bc79e1ce9dc0fae8

执行 udev 绑定:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# cat<<-EOF>/etc/udev/rules.d/yashan-device-rule.rules
KERNEL=="sd*",ENV{ID_SERIAL}=="2aed2b7c393099358",SYMLINK+="yas/data",OWNER="yashan",GROUP="YASDBA",MODE="0666",RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yas/data'"
KERNEL=="sd*",ENV{ID_SERIAL}=="2d87df1589c241e74",SYMLINK+="yas/vote",OWNER="yashan",GROUP="YASDBA",MODE="0666",RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yas/vote'"
KERNEL=="sd*",ENV{ID_SERIAL}=="2bc79e1ce9dc0fae8",SYMLINK+="yas/ycr",OWNER="yashan",GROUP="YASDBA",MODE="0666",RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yas/ycr'"
EOF

生效 udev:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# udevadm control --reload-rules
[root@yac01 ~]# udevadm trigger --type=devices --action=change

查看绑定后的盘:

bash 复制代码
## 以节点一为例
[root@yac01 soft]# ll /dev/yas/*
lrwxrwxrwx 1 yashan yashan 6 12月  4 17:55 /dev/yas/data -> ../sdb
lrwxrwxrwx 1 yashan yashan 6 12月  4 17:55 /dev/yas/vote -> ../sdc
lrwxrwxrwx 1 yashan yashan 6 12月  4 17:55 /dev/yas/ycr -> ../sdd

确保两个节点都绑定成功。

关闭透明大页

YashanDB 建议关闭透明大页,部分操作系统默认开启了透明大页选项,可执行以下命令确认:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

显示结果:

  • [always] madvise never:透明大页已开启。
  • always [madvise] never:透明大页已开启。
  • always madvise [never]:透明大页已关闭。

修改 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX 中添加或修改参数 transparent_hugepage=never:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# sed -i 's/quiet/quiet transparent_hugepage=never/' /etc/default/grub

通过以下指令检查当前系统的引导类型:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# [ -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 等。

执行 grub2--mkconfig 指令重新配置 grub.cfg:

bash 复制代码
## 以节点一为例
## BIOS 引导
[root@yac01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.19.90-89.11.v2401.ky10.x86_64
Found initrd image: /boot/initramfs-4.19.90-89.11.v2401.ky10.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3a1c3f06e89644e5b9b560f2ba64fd98
Found initrd image: /boot/initramfs-0-rescue-3a1c3f06e89644e5b9b560f2ba64fd98.img
done
## UEFI 引导
# grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg

重启操作系统,使配置永久生效:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# reboot

验证透明大页已关闭:

bash 复制代码
## 以节点一为例
[root@yac01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

结果应显示 always madvise [never]。

YAC 安装(主节点)

YashanDB 安装可以使用两种方式:

  • 命令行安装
  • 可视化安装

由于本人喜欢使用命令行模式,所以演示也是使用命令行。共享集群安装操作均在主节点执行即可!

解压安装软件

执行安装部署前,请以安装用户(yashan)登录数据库服务器,并进入 /home/yashan/install 安装目录:

bash 复制代码
## 在 yashan 用户下创建 install 安装目录
[yashan@yac01 ~]$ mkdir -p /home/yashan/install
## 上传并授权 yashan 用户权限
[root@yac01 ~]# chown yashan:yashan /home/yashan/install/yashandb-23.2.4.100-linux-x86_64.tar.gz 
## 使用 yashan 用户解压安装包
[root@yac01 ~]# su - yashan
[yashan@yac01 ~]$ cd install/
[yashan@yac01 install]$ tar -zxf /home/yashan/install/yashandb-23.2.4.100-linux-x86_64.tar.gz 
[yashan@yac01 install]$ ll
drwxr-xr-x 6 yashan yashan        70  9月  4 17:29 admin
drwxr-xr-x 2 yashan yashan       243  9月  4 17:29 bin
drwxr-xr-x 2 yashan yashan       176  9月  4 17:28 conf
drwxr-xr-x 4 yashan yashan        33  9月  4 17:28 ext
-rw-r--r-- 1 yashan yashan     10701  9月  4 17:28 gitmoduleversion.dat
drwxr-xr-x 2 yashan yashan        64  9月  4 17:28 include
drwxr-xr-x 3 yashan yashan        17  9月  4 17:29 java
drwxr-xr-x 2 yashan yashan      4096  9月  4 17:29 lib
-rw-r----- 1 yashan yashan     14989  9月  4 17:28 LICENSE
drwxr-xr-x 3 yashan yashan        21  9月  4 17:29 plug-in
drwxr-xr-x 2 yashan yashan        61  9月  4 17:29 scripts
-rwxr-xr-x 1 yashan yashan 189823431 12月  4 17:58 yashandb-23.2.4.100-linux-x86_64.tar.gz

生成部署文件

执行 yasboot package 命令生成配置文件:

bash 复制代码
## 注意这里的 yashan 用户密码需要根据自己的环境进行配置,如果安装教程走的话,可以不用修改,密码就是 yashan
[yashan@yac01 install]$ ./bin/yasboot package ce gen --cluster yashandb -u yashan -p yashan --ip 192.168.6.160,192.168.6.161 --port 22 --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data --begin-port 1688 --node 2 --data /dev/yas/data --vote /dev/yas/vote  --ycr /dev/yas/ycr
host host0001 openssl version: OpenSSL 1.1.1f  31 Mar 2020
OpenSSL version is 1.1.1 or greater
host host0002 openssl version: OpenSSL 1.1.1f  31 Mar 2020
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.6.160:1688 | 192.168.6.160:1689 | /data/yashan/yasdb_data 
----------+-------+-----------+-----------+--------------------+--------------------+-------------------------
 host0002 | ceg1  | ce        | 1-2       | 192.168.6.161:1688 | 192.168.6.161:1689 | /data/yashan/yasdb_data 
----------+-------+-----------+-----------+--------------------+--------------------+-------------------------

Generate config completed

参数说明:

执行完毕后,当前目录下将生成 yashandb.tomlhosts.toml 两个配置文件,可手动修改,但不建议删除文件中任何行,否则可能导致后续安装过程报错,或所搭建的环境后续无法进行扩展配置。

  • yashandb.toml:数据库集群的配置文件。
  • hosts.toml:服务器的配置文件。

根据实际需要调整 yashandb.toml 配置文件中的安装参数,可在 group 级别设置 YashanDB 的所有建库参数,可在 node 级别设置 YashanDB 的所有配置参数:

bash 复制代码
[yashan@yac01 install]$ cat yashandb.toml 
cluster = "yashandb" # 安装后修改也不会生效,除非重新安装
create_simple_schema = false # 为 true 部署完会执行示例的 SQL,若改为 true 需要在 deploy 时指定 sys-password 参数
uuid = "675028ea25cd37de2ae1eda1fcae7f67" # 系统自动生成,不建议修改
yas_type = "CE" # 部署模式,安装后修改也不会生效,除非重新安装

[[group]]
  database_role = "primary"
  group_type = "ce" # 节点组类型,安装后修改也不会生效,除非重新安装
  name = "ceg1" # 节点组名称,安装后修改也不会生效,除非重新安装
  [group.cedisk]
    vote = "/dev/yas/vote" # 投票盘,安装后不可修改,除非重新安装
    ycr = "/dev/yas/ycr" # ycr 盘,安装后不可修改,除非重新安装
  [group.config] # 可配置所有建库参数,不配置时采用默认值
    CHARACTER_SET = "utf8"
    ISARCHIVELOG = true
    REDO_FILE_NUM = 4
    REDO_FILE_SIZE = "128M"

  [[group.diskgroup]] # 磁盘组信息
    au_size = "1M" # 分配磁盘空间时的 AU 大小
    disk_size = "" # 指定可以由 diskgroup 进行管理的 disk 大小,可省略,则默认为该 disk 的总大小
    name = "DG0" # 磁盘组的名称
    redundancy = "EXTERNAL" # 磁盘组的冗余度
    yfs_force_create = false # 强制格式化磁盘

    [[group.diskgroup.failgroup]]
      disk = ["/dev/yas/data"]
      name = "DG0_0"

  [[group.node]] # 节点配置
    data_path = "/data/yashan/yasdb_data" # 为 DATA 目录,安装后修改也不会生效,除非重新安装
    hostid = "host0001" # 服务器标识,安装后修改也不会生效,除非重新安装
    role = 1 # 数据库主备角色,共享集群的实例没有主备概念,不支持修改
    [group.node.config] # 可配置所有数据库参数,不配置时采用默认值,安装后修改也不会生效,除非重新安装
      CLUSTER_DATABASE = "TRUE"
      CLUSTER_INTERCONNECT = "192.168.6.160:1689"
      DATA_BUFFER_SIZE = "1G"
      HA_ELECTION_TIMEOUT = 18
      HA_HEARTBEAT_INTERVAL = 6
      INTER_URL = "192.168.6.160:1788"
      LISTEN_ADDR = "192.168.6.160:1688"
      REDO_BUFFER_PARTS = 8
      REDO_BUFFER_SIZE = "64M"
      RUN_LOG_FILE_PATH = "/data/yashan/yasdb_home/yashandb/23.2.4.100/log/yashandb/ce-1-1/run"
      SHARE_POOL_SIZE = "1G"
      SLOW_LOG_FILE_PATH = "/data/yashan/yasdb_home/yashandb/23.2.4.100/log/yashandb/ce-1-1/slow"
      SQL_POOL_PARTS = 8

  [[group.node]]
    data_path = "/data/yashan/yasdb_data"
    hostid = "host0002"
    role = 2
    [group.node.config]
      CLUSTER_DATABASE = "TRUE"
      CLUSTER_INTERCONNECT = "192.168.6.161:1689"
      DATA_BUFFER_SIZE = "1G"
      HA_ELECTION_TIMEOUT = 18
      HA_HEARTBEAT_INTERVAL = 6
      INTER_URL = "192.168.6.161:1788"
      LISTEN_ADDR = "192.168.6.161:1688"
      REDO_BUFFER_PARTS = 8
      REDO_BUFFER_SIZE = "64M"
      RUN_LOG_FILE_PATH = "/data/yashan/yasdb_home/yashandb/23.2.4.100/log/yashandb/ce-1-2/run"
      SHARE_POOL_SIZE = "1G"
      SLOW_LOG_FILE_PATH = "/data/yashan/yasdb_home/yashandb/23.2.4.100/log/yashandb/ce-1-2/slow"
      SQL_POOL_PARTS = 8
  [group.ycsconfig] # YCS 配置参数,不配置时使用默认值
    DISK_HB_KEEP_ALIVE = 30
    LOG_LEVEL = "DEBUG"
    LOG_NUMBER = 10
    LOG_SIZE = "20M"
    NETWORK_HB_TIMEOUT = 30
    RESTART_INTERVAL = 30
    RESTART_TIMES = 3
    WAIT_STOP_FIN_TIME = 90
  [group.yfsconfig] # YFS 配置参数,不配置时采用默认值
    SHM_POOL_SIZE = "2G"
    SYS_AREA_SIZE = "1G"
    YFS_PACKET_SIZE = "1M"

安装软件

我这里是选择直接安装(由于一开始没有找到插件包下载地址):

bash 复制代码
[yashan@yac01 install]$ ./bin/yasboot package install -t hosts.toml -i /home/yashan/install/yashandb-23.2.4.100-linux-x86_64.tar.gz
host host0002 openssl version: OpenSSL 1.1.1f  31 Mar 2020
OpenSSL version is 1.1.1 or greater
host host0001 openssl version: OpenSSL 1.1.1f  31 Mar 2020
OpenSSL version is 1.1.1 or greater
checking install package...
install version: yashandb 23.2.4.100
host0001 100% [====================================================================]    3s
host0002 100% [====================================================================]    3s
update host to yasom...

如果有插件包的话可以使用以下命令进行安装:

bash 复制代码
## ./bin/yasboot package install -t hosts.toml -i yashandb-23.2.1.100-linux-x86_64.tar.gz --plugin yashandb-plugins-all-23.2.1.100-linux-x86_64.tar.gz

插件包可以直接在官网下载:

📢 注意 :如需使用 DBLINK 功能和更丰富的内置函数(例如 LSFA_LISTAGG),需先下载 plugin 插件包并在安装命令中指定 --plugin 参数(安装完成后,无法单独安装该插件包)。

数据库部署

bash 复制代码
## 安装部署 yasdb,-p 指定的是 sys 用户密码;通过指定 [ -d, --child ] 参数展示任务以及子任务信息,从而了解部署进度。
[yashan@yac01 install]$ ./bin/yasboot cluster deploy -t yashandb.toml -p yasdb_123 -d --yfs-force-create
 type | uuid             | name               | hostid | index    | status  | return_code | progress | cost 
------------------------------------------------------------------------------------------------------------
 task | a01e25b0a3a9366f | DeployYasdbCluster | -      | yashandb | RUNNING | -           | 0        | -    
------+------------------+--------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS

返回以上信息表示已成功部署。

安装后检查

配置环境变量(所有节点)

部署命令成功执行后将会在 $YASDB_HOME 目录下的 conf 文件夹中生成 <<集群名称>>.bashrc 环境变量文件:

bash 复制代码
## 以节点一为例
[yashan@yac01 ~]$ cd /data/yashan/yasdb_home/yashandb/23.2.4.100/conf/
[yashan@yac01 conf]$ ls yashandb.bashrc
yashandb.bashrc
[yashan@yac01 conf]$ cat yashandb.bashrc >>~/.bashrc
[yashan@yac01 conf]$ echo "alias ys='yasql / as sysdba'" >> ~/.bashrc
[yashan@yac01 conf]$ source ~/.bashrc

ycsctl 是 YashanDB 的 YCS 管理工具,用户可使用本工具实现对共享集群的管理操作,包括集群级别的管理和节点级别的管理。

其中,节点级别的 ycsctl 命令要求节点上的 YCS 启动后才能执行,并配置 $YASCS_HOME 环境变量:

bash 复制代码
# 如下路径需更换为实际的节点路径
[yashan@yac01 ~]$ echo "export YASCS_HOME=/data/yashan/yasdb_data/ycs/ce-1-1" >> ~/.bashrc
[yashan@yac02 ~]$ echo "export YASCS_HOME=/data/yashan/yasdb_data/ycs/ce-1-2" >> ~/.bashrc

检查集群

查看集群状态:

bash 复制代码
[yashan@yac01 ce-1-1]$ ycsctl status
---------------------------------------------------------------------------------------------
Self Host ID|Cluster Master ID|YasFS Master ID|YasDB Master ID|Active Host Count
---------------------------------------------------------------------------------------------
1            1                 1               1               2
---------------------------------------------------------------------------------------------
Host ID   |Target    |State     |YasFS     |YasDB
---------------------------------------------------------------------------------------------
1          online     online     online     online
2          online     online     online     online

查看集群配置:

bash 复制代码
[yashan@yac01 ce-1-1]$ ycsctl show config
    Cluster name: yashandb, config version: 4
    Cluster id: 675028ea25cd37de2ae1eda1fcae7f67
    Voting disk: /dev/yas/vote
    Network timeout: 30s
    Disk heartbeat keep alive: 30s
    Default resource yasfs: enabled
    Shell in cluster:
      Start shell:   start.sh
      Stop shell:    stop.sh
      Monitor shell: monitor.sh
    Nodes in cluster:
      Node name: yac01, yascs/yasfs inter connect URL: 192.168.6.160:1788, Node ID: 1
        yasdb instance name:yasdb, yasdb instance id:1
      Node name: yac02, yascs/yasfs inter connect URL: 192.168.6.161:1788, Node ID: 2
        yasdb instance name:yasdb, yasdb instance id:1

更多 ycsctl 用法可使用 ycsctl -H 查看。

检查数据库

检查数据库状态:

bash 复制代码
[yashan@yac01 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  | 7855 | open            | normal          | primary       | 192.168.6.160:1688 | /data/yashan/yasdb_data/ce-1-1
----------+-----------+--------+------+-----------------+-----------------+---------------+--------------------+--------------------------------
 host0002 | ce        | 1-2:2  | 7659 | open            | normal          | primary       | 192.168.6.161:1688 | /data/yashan/yasdb_data/ce-1-2
----------+-----------+--------+------+-----------------+-----------------+---------------+--------------------+--------------------------------

## 以 host 或组为索引展示,默认为 host
[yashan@yac01 ~]$ yasboot cluster status -b group -c yashandb -d
 group_name | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address     | data_path
---------------------------------------------------------------------------------------------------------------------------------------------------
 ceg1       | ce        | 1-1:1  | 13299 | open            | normal          | primary       | 192.168.6.160:1688 | /data/yashan/yasdb_data/ce-1-1
            +-----------+--------+-------+-----------------+-----------------+---------------+--------------------+--------------------------------
            | ce        | 1-2:2  | 7659  | open            | normal          | primary       | 192.168.6.161:1688 | /data/yashan/yasdb_data/ce-1-2
------------+-----------+--------+-------+-----------------+-----------------+---------------+--------------------+--------------------------------

查看实例状态:

bash 复制代码
## 系统认证方式登录,可以直接使用 ys 别名:yasql / as sysdba 方式连接
[yashan@yac01 ~]$ ys
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>

## 也可以使用简单连接方式连接
[yashan@yac02 conf]$ yasql sys/yasdb_123@192.168.6.160: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 instance_number,instance_name from gv$instance;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------------------------------------------------------
              1 yasdb
              2 yasdb

创建用户和表

sql 复制代码
-- 创建用户
SQL> create user lucifer identified by lucifer;

Succeed.
-- 授予 DBA 权限
SQL> grant dba to lucifer;

Succeed.
-- 连接用户
SQL> conn lucifer/lucifer

Connected to:
YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 - X86 64bit Linux
-- 创建表
SQL> create table test(id number,name varchar2(20));

Succeed.
-- 插入数据
SQL> insert into test values (1,'lucifer');

1 row affected.
-- 提交
SQL> commit;

Succeed.
-- 查询数据
SQL> select * from test;

         ID NAME
----------- ---------------------
          1 lucifer

1 row fetched.
-- 创建索引
SQL> create index idx_lucifer_id on test(id);

Succeed.

配置 monit

启动所有服务器上的 monit 进程:

bash 复制代码
[yashan@yac01 ~]$ yasboot monit start -c yashandb -d
 type  | uuid             | name             | hostid   | index             | status  | return_code | progress | cost
----------------------------------------------------------------------------------------------------------------------
 task  | b4fa7935681f5cd1 | MonitParentStart | -        | yashandb          | SUCCESS | 0           | 100      | 1
-------+------------------+------------------+----------+-------------------+---------+-------------+----------+------
 child | 17af5d919ccfe339 | MonitStart       | host0001 | yashandb-host0001 | SUCCESS | 0           | 100      | 1
       +------------------+------------------+----------+-------------------+---------+-------------+----------+------
       | 41341535c051a0f7 | MonitStart       | host0002 | yashandb-host0002 | SUCCESS | 0           | 100      | 1
-------+------------------+------------------+----------+-------------------+---------+-------------+----------+------
task completed, status: SUCCESS

查看 monit 的监控状态简略信息:

bash 复制代码
[yashan@yac01 ~]$ yasboot monit summary -c yashandb
--------------------------------------------------------------------------------
HostID: host0001, ManageIP: 192.168.6.160
--------------------------------------------------------------------------------
Monit 5.34.2 uptime: 2m
 Service Name                     Status                      Type
 yac01                            OK                          System
 yasom                            OK                          Process
 yashandb-ce-1-1                  OK                          Process
 yasagent                         OK                          Process

--------------------------------------------------------------------------------
HostID: host0002, ManageIP: 192.168.6.161
--------------------------------------------------------------------------------
Monit 5.34.2 uptime: 2m
 Service Name                     Status                      Type
 yac02                            OK                          System
 yashandb-ce-1-2                  OK                          Process
 yasagent                         OK                          Process

配置开机自启(所有节点)

由于每次开机都需要启动 yasom 和 yasagent,然后再启动数据库:

bash 复制代码
## 手动启动 yasom 和 yasagent 进程
[root@yac01 ~]# yasboot process yasom start -c yashandb
[root@yac01 ~]# yasboot process yasagent start -c yashandb

## 待 yasom 和 yasagent 进程启动后,才能启动数据库
[root@yac01 ~]# yasboot cluster start -c yashandb

以上方式比较麻烦,所以建议配置开机自启,配置开机自启动,需在 yasagent 进程所在服务器(即每台服务器)中执行以下操作:

bash 复制代码
## 获取 monit 命令位置
[yashan@yac01 ~]$ which monit
/usr/local/bin/monit

## monit 的安装路径需更换为实际获取到的内容
[root@yac01 ~]# cat<<-EOF>>/etc/rc.local
su - yashan -c '/usr/local/bin/monit -c /data/yashan/yasdb_home/yashandb/23.2.4.100/ext/monit/monitrc'
EOF

[root@yac01 ~]# chmod +x /etc/rc.d/rc.local

重启主机测试是否会开启:

bash 复制代码
[root@ymp ~]# reboot
## 重启后连接数据库,正常开启
[root@yac01 ~]# su - yashan
上一次登录: 三 12月  4 21:51:16 CST 2024 pts/0 上
[yashan@yac01 ~]$ ys
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> 

拓展

YashanDB AWR 报告一键生成:《YashanDB AWR 报告一键生成》

写在最后

本文简单记录了崖山共享集群的安装部署过程,总体来说比较简单易上手,大家感兴趣都可以玩玩!

如果有遗漏或者不足的地方,欢迎评论区补充或者投稿,感谢阅读!

往期精彩文章

达梦数据库安装最详细教程
一招教你学会达梦数据库的免密登录
一文讲透达梦数据库的大小写敏感
效率翻倍!达梦数据库 disql 使用技巧全攻略
达梦数据库参数配置与一键优化指南
达梦 AWR 报告快速上手指南
金仓数据库 KingbaseES V9 单机安装指南
KingbaseES KSQL 免密登录的几种方式
KingbaseES 控制文件冗余与恢复秘籍
金仓 KingbaseES RAC 入门指南
金仓 KDTS 初探:Oracle 到 KingbaseES 一键迁移
GBase 8a MPP 集群部署最佳实践
GBase 8a GDCA 认证课后练习题大全(题库)
南大通用 GBASE 8s V8.8 数据库最全安装指南
GBase 8s GDCA 认证课后练习题大全(题库)
GBase 8s 数据库巡检报告及一键巡检脚本
YashanDB 一键生成 AWR 报告
YashanDB 数据库安装部署
YashanDB 共享集群(YAC)入门指南与技术详解
基于 TencentOS 3 的 OpenTenBase 集群搭建实践


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」

相关推荐
唐梓航-求职中16 分钟前
缓存-Redis-常见问题-缓存击穿-永不过期+逻辑过期(全面 易理解)
数据库·redis·缓存
潜洋26 分钟前
Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别
java·大数据·数据库·spring boot
潘多编程39 分钟前
Spring Boot微服务中进行数据库连接池的优化?
数据库·spring boot·微服务
阿里云云原生1 小时前
网络分析与监控:阿里云拨测方案解密
数据库·阿里云·memcached
HelloZheQ2 小时前
Java 项目中引入阿里云 OSS SDK
java·数据库·阿里云
利刃大大2 小时前
【MySQL基础篇】十二、视图的概念与操作
数据库·mysql
rr_R_rr2 小时前
MYSQL重置密码
数据库·mysql·adb
EasyNVR2 小时前
EasyNVR平台现已支持AAC、G711A及G711U音频编码格式
数据库·安全·音视频·视频监控·aac·g711
love静思冥想2 小时前
自动化执行 SQL 脚本解决方案
java·数据库·sql·自动化
KaiwuDB2 小时前
benchANT 性能榜单技术解读 Part 1:写入吞吐
数据库·时序数据库·kaiwudb