暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

YashanDB 共享集群YAC部署实施

878

介绍

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大小对齐存储设备支持通过 pread64pwrite64 接口一次性读写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

各个组件下载地址

openssl-1.1.1l.tar.gz

GmSSL-3.1.1.tar.gz

monit-5.34.2.tar.gz

lz4-1.10.0.tar.gz

zlib-1.3.1.tar.gz

zstd-1.5.5-1.el7.x86_64.rpm

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选项(需关机调整)

clip_2.png

clip_5.png

clip_1.png

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

clip_4.png

clip_1.png

主机层面进行盘绑定。

快捷脚本
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 多活共享集群安装过程总体来说不算特别复杂,除了依赖包安装的部分,建议可把这块内容打包一个附件包,适配不同的操作系统版本,减少安装过程的复杂度,另外,官方文档关于集群安装的部分介绍非常详细,对于初学者来说,相当友好。

最后修改时间:2024-12-23 09:55:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论