大家好,这里是公众号 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.toml 和 hosts.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 集群搭建实践
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」