大家好,这里是公众号 DBA学习之路 ,分享一些学习国产数据库路上的知识和经验。
社群交流 为了给大家提供一些技术交流的平台,目前已成立的技术交流群:
Oracle 数据库交流群
国产数据库交流群
Linux 技术交流群
ChatGPT 4o 免费体验群
需要进群(均已超过 200 人,需要邀请 )可以添加号主微信:Lucifer-0622 ,备注对应的群名即可。
@TOC
前言 前文介绍了 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 共享集群版本需要企业版才能支持,官网直接下载即可:
崖山安装包官方下载链接:https://download.yashandb.com/download
安装前准备(所有节点) 📢注意:本章节内容均需要在所有节点执行,以节点一为例进行演示!
配置 /etc/hosts 部署 YAC 共享集群,必须配置主机名 ,服务器名称要求如下:
名称由字母、数字以及下划线组成,且必须以字母开头,长度为 [4,64] 个字符。
同一个 YashanDB 共享集群中的服务器名称不能相同。
建议每台服务器上只运行一个实例,若一台服务器需运行多个实例则要求将服务器名称设置为 [3,63] 个字符。
建议配置主机名解析:
1 2 3 4 5 [root@yac01 ~]# cat <<-EOF>>/etc/hosts 192.168.6.160 yac01 192.168.6.161 yac02 EOF
关闭防火墙 数据库安装均建议关闭防火墙:
1 2 3 4 5 [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.
创建用户和组 主机创建用户如果有密码复杂性要求,不想设置密码太复杂的话,可以取消密码复杂度:
1 2 3 [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 身份执行安装部署:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [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) [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 用户需要对该目录拥有全部权限,可执行如下命令授权:
1 2 3 4 5 [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 环境中时,为使系统达到更好的性能,建议进行下述配置调整:
1 2 3 4 5 6 7 8 9 [root@yac01 ~]# echo "vm.swappiness = 0" >>/etc/sysctl.conf [root@yac01 ~]# echo "net.ipv4.ip_local_port_range = 32768 60999" >>/etc/sysctl.conf [root@yac01 ~]# echo "vm.max_map_count=2000000" >>/etc/sysctl.conf [root@yac01 ~]# sysctl -p
资源配置 将部分资源限制值(使用 ulimit -a 可查看所有的资源限制值)调整为推荐值或以上。
1 2 3 4 5 6 7 8 9 10 11 [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 共享集群,还需在所有服务器上清理共享内存:
1 2 [root@yac01 ~]# ipcrm -a
配置软件源 Linux 系统安装软件需要配置本地软件源。
⭐️ 配置 Linux 软件源可以参考为之前写的文章:DBA 必备:Linux 软件源配置全攻略
配置本地软件源的方式需要先挂载本地 ISO 安装镜像:
1 2 3 [root@yac01 ~]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only.
一键配置 KylinV10 本地软件源:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [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 的正常安装和运行,请按如下来源及最低版本要求,在所有服务器环境中配置所需依赖项:
安装依赖包:
1 2 3 4 5 6 7 8 9 10 11 [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!
安装完成后检查是否安装成功:
1 2 3 4 5 6 7 8 [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,否则安装过程可能出错:
1 2 3 4 [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 安装包下载 ,安装步骤如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [root@yac01 soft]# yum install -y cmake openssl-devel gcc gcc-c++ unzip zlib-devel [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 .. [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 [root@yac01 build]# gmssl version GmSSL 3.1.1
monit 也需要手动编译安装:monit-5.34.2.tar.gz 安装包下载 ,安装步骤如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 [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 [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 软件
1 2 3 4 5 [root@yac01 ~]# yum install -y iscsi-initiator-utils* [root@yac01 ~]# systemctl start iscsid.service [root@yac01 ~]# systemctl enable iscsid.service
2、搜索服务端 iscsi target
1 2 3 4 [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 共享存储
1 2 3 4 5 [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、配置开机自动挂载
1 2 [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、查看挂载成功的共享盘
1 2 3 4 5 6 7 8 9 10 11 12 [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:
1 2 3 4 5 6 7 [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 绑定:
1 2 3 4 5 6 [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:
1 2 3 [root@yac01 ~]# udevadm control --reload-rules [root@yac01 ~]# udevadm trigger --type =devices --action=change
查看绑定后的盘:
1 2 3 4 5 [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 建议关闭透明大页,部分操作系统默认开启了透明大页选项,可执行以下命令确认:
1 2 3 [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:
1 2 [root@yac01 ~]# sed -i 's/quiet/quiet transparent_hugepage=never/' /etc/default/grub
通过以下指令检查当前系统的引导类型:
1 2 3 [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:
1 2 3 4 5 6 7 8 9 10 11 [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
重启操作系统,使配置永久生效:
验证透明大页已关闭:
1 2 3 [root@yac01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
结果应显示 always madvise [never]。
YAC 安装(主节点) YashanDB 安装可以使用两种方式:
由于本人喜欢使用命令行模式,所以演示也是使用命令行。共享集群安装操作均在主节点执行即可!
解压安装软件 执行安装部署前,请以安装用户(yashan)登录数据库服务器,并进入 /home/yashan/install 安装目录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [yashan@yac01 ~]$ mkdir -p /home/yashan/install [root@yac01 ~]# chown yashan:yashan /home/yashan/install/yashandb-23.2.4.100-linux-x86_64.tar.gz [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 命令生成配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [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 的所有配置参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 [yashan@yac01 install]$ cat yashandb.toml cluster = "yashandb" create_simple_schema = false uuid = "675028ea25cd37de2ae1eda1fcae7f67" yas_type = "CE" [[group]] database_role = "primary" group_type = "ce" name = "ceg1" [group.cedisk] vote = "/dev/yas/vote" ycr = "/dev/yas/ycr" [group.config] CHARACTER_SET = "utf8" ISARCHIVELOG = true REDO_FILE_NUM = 4 REDO_FILE_SIZE = "128M" [[group.diskgroup]] au_size = "1M" disk_size = "" 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" 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] 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] SHM_POOL_SIZE = "2G" SYS_AREA_SIZE = "1G" YFS_PACKET_SIZE = "1M"
安装软件 我这里是选择直接安装(由于一开始没有找到插件包下载地址):
1 2 3 4 5 6 7 8 9 10 [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...
如果有插件包的话可以使用以下命令进行安装:
插件包可以直接在官网下载:
📢 注意 :如需使用 DBLINK 功能和更丰富的内置函数(例如 LSFA_LISTAGG),需先下载 plugin 插件包并在安装命令中指定 --plugin 参数(安装完成后,无法单独安装该插件包 )。
数据库部署 1 2 3 4 5 6 7 [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 环境变量文件:
1 2 3 4 5 6 7 [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 环境变量:
1 2 3 [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
检查集群 查看集群状态:
1 2 3 4 5 6 7 8 9 10 [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
查看集群配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [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 查看。
检查数据库 检查数据库状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [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 ----------+-----------+--------+------+-----------------+-----------------+---------------+--------------------+-------------------------------- [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 ------------+-----------+--------+-------+-----------------+-----------------+---------------+--------------------+--------------------------------
查看实例状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [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
创建用户和表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 SQL > create user lucifer identified by lucifer;Succeed. SQL > grant dba to lucifer;Succeed. SQL > conn lucifer/ luciferConnected to : YashanDB Server Enterprise Edition Release 23.2 .4 .100 x86_64 - X86 64 bit 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 进程:
1 2 3 4 5 6 7 8 9 10 [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 的监控状态简略信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [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,然后再启动数据库:
1 2 3 4 5 6 [root@yac01 ~]# yasboot process yasom start -c yashandb [root@yac01 ~]# yasboot process yasagent start -c yashandb [root@yac01 ~]# yasboot cluster start -c yashandb
以上方式比较麻烦,所以建议配置开机自启,配置开机自启动,需在 yasagent 进程所在服务器(即每台服务器)中执行以下操作:
1 2 3 4 5 6 7 8 9 10 [yashan@yac01 ~]$ which monit /usr/local/bin/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
重启主机测试是否会开启:
1 2 3 4 5 6 7 8 9 10 11 [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 集群搭建实践
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」