暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

YashanDB 23.2 YAC 共享集群部署安装部署

原创 飞天 2024-12-20
751

一、崖山数据库介绍

崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。
崖山数据库管理系统采用先进内核架构,高效地支持众核计算、大内存、新存储介质和网络通信框架,软件层面采用并行和向量引擎、异步并行框架、OCC动态事务调度算法、Raft协议、有界理论等技术方案和算法,通过多形态的产品架构和全面的基础设施支持能力,满足企业级核心应用对高兼容、高性能、高扩展、高可用等全生命周期数据管理诉求。

YashanDB个人版、标准版和企业版功能差异:

类目 功能项 个人版 标准版 企业版
产品形态 版本名称 Personal Edition Standard Edition Enterprise Edition
产品形态 部署形态 单机 单机部署
分布式部署
共享集群部署
单机部署
分布式部署
共享集群部署
物理规格 最大连接数 256 1024 无限制
物理规格 最大存储容量 1TB 无限制 无限制
物理规格 硬件平台 x86 ARM 龙芯 x86 ARM 龙芯 x86 ARM 龙芯
物理规格 使用时间 无限制 无限制 无限制
基础功能 单表最大行数 无限制 无限制 无限制
基础功能 单表最大列数 4096 4096 4096
基础功能 基本数据类型 支持 支持 支持
基础功能 内置高级包 支持 支持 支持
基础功能 并行查询 支持 支持 支持
基础功能 闪回查询 支持 支持 支持
基础功能 存储过程调试功能 支持 支持 支持
基础功能 外部函数扩展 支持 支持 支持
基础功能 DBLINK 支持 支持 支持
基础功能 物化视图 支持 支持 支持
基础功能 诊断包 支持 支持 支持
核心组件 驱动 支持 支持 支持
安全能力 通讯加密 支持 支持 支持
安全能力 存储加密 支持 支持 支持
安全能力 三权分立 支持 支持 支持
安全能力 审计 支持 支持 支持
高阶功能 分区表 一级分区 一级分区 二级分区
高阶功能 列存储 不支持 支持 支持
高阶功能 JSON类型 不支持 不支持 支持
高阶功能 GIS 不支持 不支持 支持
配套工具 数据迁移工具 支持 支持 支持
配套工具 运维监控工具 支持 支持 支持
配套工具 开发者工具 支持 支持 支持
产品服务 软件升级 不支持 支持 支持
产品服务 专家服务 网站 支持 支持

从上面可以看到,标准版和企业版都具备共享集群部署能力。

二、崖山共享集群YAC介绍

YashanDB共享集群(YAC)是一款单库多实例的多活数据库系统,所有节点之间以强一致性方式实现并发读写,为高端核心业务提供了应用透明的透明多写、高可用、高扩展、高性能的数据库能力。对等Oracle RAC/DB2的集群产品,基于国产中间件/芯片/服务器/存储,构建高端核心交易场景的完整全栈替代方案。具备金融级高可用能力的同时拥有优异的性能表现,4节点TPC-C性能达520w tpmC,线性扩展比高达0.7以上,无需大规模的系统改造和重构,是1:1平替国外主流数据库的高性价比解决方案。

2024年11月14日,YashanDB在2024国产数据库创新生态大会上正式发布YashanDB V23.3版本,定位为面向企业核心的通用数据库,具备1:1平替Oracle的能力。该版本提供包含单机主备、共享集群、分布式多种产品形态,所有用户均可体验。

YAC 整体架构图:
image.png

功能模块说明:
1、YashanDB共享集群依据YashanDB的数据库内核逻辑演进而来,并在共享存储的基础上引入了Cohesive Memory核心技术,用于集群数据库各实例之间协同数据页的读写访问以及各种非数据类资源的并发控制。GRC( Global Resource Catalog )负责全局资源管理,GCS( Global Cache Service )负责全局数据页管理,GLS( Global Lock Service )负责全局锁管理。
2、Inter-Communication Service,内部通讯服务,简称ICS,用于建立实例之间的连接池,并实现实例间的相互通信。
3、Yashan File System,崖山文件系统,简称YFS,崖山文件系统承担了集群文件系统的职责,直接管理裸设备,并提供强一致的文件系统服务给数据库使用。
4、Yashan Cluster Service,崖山集群服务,简称YCS,崖山集群服务是集群数据库高可用的核心部件,统一管理崖山文件系统、数据库等资源,包括配置、启停、监控等,并在各种故障场景下提供仲裁服务,维护全局统一的拓扑状态。

三、YAC 共享集群部署安装部署

3.1 安装要求

3.1.1 服务器配置要求

项目 推荐配置 最低配置
操作系统 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 -

3.1.2 共享存储配置要求

项目 推荐配置
硬盘 SSD/HDD都支持,品牌和介质不交叉组合
LUN 三块及以上:
一块YCR盘(1G)
一块投票盘(1G)
其他为数据盘(50G及以上)
接口 存储设备及操作系统支持Direct IO,支持512字节内存对齐和IO大小对齐
存储设备支持通过pread64、pwrite64接口一次性读写512字节整倍数,即支持:512字节、1024字节、1536字节、……、32M

3.1.3 软件依赖包要求

动态库名称 来源 版本要求 作用
libcrypto.so openssl 1.0.0及以上 加密
libcrypto.so.1.1 openssl 1.0.0及以上 -
libssl.so openssl 1.0.0及以上 网络通信
libssl.so.1.1 openssl 1.0.0及以上 -
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及以上 守护进程

安装依赖包

yum install -y openssl gmssl lz4 zlib zstd monit

3.2 实验环境说明

本文以两台服务器+一台共享存储为示例,搭建双实例单库的典型共享集群环境。

主机规划:

主机名 ip地址 OS版本 内存、CPU 角色
node1 192.*.*.60 Centos7.9 6G 、 1个双核 数据库实例1
node2 192.*.*.62 Centos7.9 6G 、 1个双核 数据库实例2

端口规划:

部署形态 数据库监听 yasom yasagent 服务器间通信
共享集群 1688 1675 1676 1689、1670

共享存储:(存储上已按配置要求划分三个LUN)

LUN名称 LUN路径 角色
LUN1 /dev/sdc 数据盘
LUN2 /dev/sdd 投票盘
LUN3 /dev/sde YCR盘

3.3 配置操作系统

3.3.1 设置服务器hostname

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

# 节点1 hostnamectl set-hostname node1 # 节点2 hostnamectl set-hostname node2

3.3.2 内核参数配置

#关闭交换分区
echo "vm.swappiness=0">> /etc/sysctl.conf
#调整自动分配本地端口范围
echo "net.ipv4.ip_local_port_range=32768 60999" >> /etc/sysctl.conf
#调整进程的VMA上限
echo "vm.max_map_count=2000000" >> /etc/sysctl.conf 
#参数生效
sysctl -p

3.3.3 调整资源限制值

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

cat>>/etc/security/limits.conf<<EOF * soft nofile 1048576 * hard nofile 1048576 * soft nproc 1048576 * hard nproc 1048576 * soft rss unlimited * hard rss unlimited * soft stack 8192 * hard stack 8192 EOF

3.3.4 关闭透明大页

#检查THP开启情况 cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never ##关闭THP echo never > /sys/kernel/mm/transparent_hugepage/enabled ## 设置重启后自动关闭 chmod +x /etc/rc.d/rc.local systemctl enable rc-local.service cat >> /etc/rc.d/rc.local <<EOF swapoff -a if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi EOF #再次检查THP开启情况 cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]

3.3.5 开启SSH服务

systemctl status sshd.service systemctl start sshd.service

3.3.6 关闭防火墙

systemctl stop firewalld systemctl disable firewalld

3.3.7 清理共享内存

ipcrm -a

3.3.8 创建安装用户和组

useradd -d /home/yashan -m yashan passwd yashan groupadd YASDBA usermod -a -G YASDBA yashan

3.3.9 配置sudo免密

如果其他用户需要免密连接db,需要将其他用户加入到安装用户yashan的用户组中,如果当前用户已登录,需要断开ssh连接重新登录。

# 对root用户赋权并打开/etc/sudoers文件
cd /etc
ll sudoers
chmod +w sudoers
 
vi /etc/sudoers
# 在文件的最后添加如下内容后保存退出
yashan  ALL=(ALL)NOPASSWD:ALL

按需恢复/etc/sudoers文件的属性
chmod -w sudoers

3.3.10 目录规划

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

  • HOME 目录:YashanDB 的产品目录,包含 YashanDB 所提供的命令、数据库运行所需的库及各关键组件。该目录由 yashan 用户执行安装部署时输入的 install-path 参数根据一定规则生成并创建。
  • DATA 目录:对于共享集群,所有的数据文件和 redo 文件均需保存在共享存储上,DATA 目录将只用于存储实例运行相关的配置文件、日志文件等数据。该目录由 yashan 用户执行安装部署时输入的 --data-path 参数根据一定规则生成并创建。
    HOME 目录和 DATA 目录均规划在 /data/yashan 下,yashan 用户需要对该目录拥有全部权限,可执行如下命令授权:
cd / mkdir data cd data mkdir 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参数。共享集群部署的数据文件路径默认配置在共享存储下,无法直接修改,只能通过修改共享存储的路径从而调整数据文件存储的路径。

3.3.11 绑定LUN

YashanDB要求共享存储上必须规划出下述三类磁盘:
数据盘:一块或多块,根据业务实际情况规划,其中一块数据盘的路径将作为yasboot package ce gen命令的data选项参数。
投票盘:一块,建议规划为1G及以上,该盘路径将作为yasboot package ce gen命令的vote选项参数。
YCR盘:一块,建议规划为1G及以上,该盘路径将作为yasboot package ce gen命令的YCR选项参数。

两台主机都需要操作,下面以node1节点为例:

3.3.11.1 查看添加的三块共享磁盘

[root@node1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 500G 0 disk ├─sda1 8:1 0 20G 0 part /boot └─sda2 8:2 0 385G 0 part ├─centos_node1-root 253:0 0 120G 0 lvm / ├─centos_node1-swap 253:1 0 20G 0 lvm ├─centos_node1-data 253:2 0 300G 0 lvm /data ├─centos_node1-opt 253:3 0 20G 0 lvm /opt ├─centos_node1-var 253:4 0 10G 0 lvm /var ├─centos_node1-tmp 253:5 0 10G 0 lvm /tmp └─centos_node1-home 253:6 0 5G 0 lvm /home sdb 8:16 0 100G 0 disk └─centos_node1-root 253:0 0 120G 0 lvm / sdc 8:32 0 20G 0 disk #共享磁盘1,将来用作数据盘 sdd 8:48 0 2G 0 disk #共享磁盘2,将来用作投票盘 sde 8:64 0 2G 0 disk #共享磁盘3,将来用作YCR盘 sr0 11:0 1 1024M 0 rom

3.3.11.2 查看三块共享磁盘的uuid

[root@node1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdc 36000c29391d924be7358f703bb10cb2a [root@node1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdd 36000c292bca70428f46d452c9061542d [root@node1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sde 36000c292d78ff744ec49014f0c3a740f

3.3.11.3 udev绑定共享磁盘

1、编辑genDevRuleByUUID.sh脚本

[root@node1 ~]# vi genDevRuleByUUID.sh #!/bin/bash curDir=$(cd "$(dirname "$0")"; pwd) rm -f "$curDir/yashan-device-rule.rules" for i in sdc sdd sde; do if /usr/lib/udev/scsi_id -g -u /dev/$i; then uuid=$(/usr/lib/udev/scsi_id -g -u /dev/$i) echo "KERNEL==\"sd*\", ENV{ID_SERIAL}==\"$uuid\", SYMLINK+=\"yas/$i\", OWNER=\"yashan\", GROUP=\"YASDBA\", MODE=\"0666\"" >> "$curDir/yashan-device-rule.rules" else echo "Device /dev/$i not found or has no UUID" fi done

2、执行genDevRuleByUUID.sh脚本生成绑定规则文件yashan-device-rule.rules

[root@node1 ~]# ./genDevRuleByUUID.sh 36000c29391d924be7358f703bb10cb2a 36000c292bca70428f46d452c9061542d 36000c292d78ff744ec49014f0c3a740f

3、查看生成的yashan-device-rule.rules文件

[root@node1 ~]# cat yashan-device-rule.rules KERNEL=="sd*", ENV{ID_SERIAL}=="36000c29391d924be7358f703bb10cb2a", SYMLINK+="yas/sdc", OWNER="yashan", GROUP="YASDBA", MODE="0666" KERNEL=="sd*", ENV{ID_SERIAL}=="36000c292bca70428f46d452c9061542d", SYMLINK+="yas/sdd", OWNER="yashan", GROUP="YASDBA", MODE="0666" KERNEL=="sd*", ENV{ID_SERIAL}=="36000c292d78ff744ec49014f0c3a740f", SYMLINK+="yas/sde", OWNER="yashan", GROUP="YASDBA", MODE="0666"

4、修改yashan-device-rule.rules文件
SYMLINK为绑定设备的别名,可修改为业务可理解的名称,例如修改为如下内容:

[root@node1 ~]# vi yashan-device-rule.rules KERNEL=="sd*", ENV{ID_SERIAL}=="36000c29391d924be7358f703bb10cb2a", SYMLINK+="yas/data", OWNER="yashan", GROUP="YASDBA", MODE="0666" KERNEL=="sd*", ENV{ID_SERIAL}=="36000c292bca70428f46d452c9061542d", SYMLINK+="yas/vote", OWNER="yashan", GROUP="YASDBA", MODE="0666" KERNEL=="sd*", ENV{ID_SERIAL}=="36000c292d78ff744ec49014f0c3a740f", SYMLINK+="yas/ycr", OWNER="yashan", GROUP="YASDBA", MODE="0666" [root@node1 ~]#

5、部署配置文件yashan-device-rule.rules
执行如下命令部署绑定配置文件:

[root@node1 ~]# cp yashan-device-rule.rules /etc/udev/rules.d/yashan-device-rule.rules

6、重启服务器

[root@node1 ~]# systemctl reboot

7、检查绑定结果
执行如下命令,确认/dev/yas/data、/dev/yas/vote和/dev/yas/ycr已存在,且权限位为666。

[root@node1 ~]# ls -l /dev/yas/*
lrwxrwxrwx 1 root root 6 Dec 20 19:24 /dev/yas/data -> ../sdc
lrwxrwxrwx 1 root root 6 Dec 20 19:24 /dev/yas/vote -> ../sdd
lrwxrwxrwx 1 root root 6 Dec 20 19:24 /dev/yas/ycr -> ../sde
[root@node1 ~]# 

在两台服务器上分别执行以下命令,确认两台服务器上/dev/yas/data、/dev/yas/vote和/dev/yas/ycr对应的WWID是否一致。

## 对比两台服务器上的输出结果是否对应一致 /usr/lib/udev/scsi_id --whitelisted --device=/dev/yas/data /usr/lib/udev/scsi_id --whitelisted --device=/dev/yas/vote /usr/lib/udev/scsi_id --whitelisted --device=/dev/yas/ycr

若两台服务器上同一路经所对应的WWID不一致,说明其挂载的磁阵不是同一个LUN,需联系公司网络管理员处理。

3.3.12 下载YashanDB安装包(node1节点)

下载网址:https://download.yashandb.com/download
image.png
安装包名称:yashandb-23.2.4.100-linux-x86_64.tar.gz

从本步骤开始,以及后续所有服务端安装步骤,将由数据库安装用户进行操作,请先切换至yashan用户或直接以yashan用户登录至服务器。
YashanDB支持在任一服务器上下载软件包,向其他所有服务器发起并行安装,本次安装以node1作为安装服务器,以下步骤均在node1上执行。

将软件包下载到/home/yashan/install目录下,并解压软件包:

su - yashan mkdir -p /home/yashan/install cd /home/yashan/install sudo chown -R yashan:yashan yashandb-23.2.4.100-linux-x86_64.tar.gz tar -zxf yashandb-23.2.4.100-linux-x86_64.tar.gz

YashanDB所提供的软件包中包含安装工具,位于bin目录下。如执行命令行安装需使用yasboot命令,如执行可视化安装需使用yasom命令。

[yashan@node1 install]$ ll ./bin/yasboot -rwxrwxr-x 1 yashan yashan 13486576 Sep 4 17:29 ./bin/yasboot [yashan@node1 install]$ ll ./bin/yasom -rwxrwxr-x 1 yashan yashan 23039032 Sep 4 17:29 ./bin/yasom [yashan@node1 install]$

3.4 YAC 共享集群部署

接下来将以命令行方式部署共享集群。

3.4.1 生成部署文件

1、执行yasboot package命令生成配置文件,命令详细参数可查阅yasboot。

$ ./bin/yasboot package ce gen --cluster yashandb -u yashan -p yashan --ip 192.*.*.60,192.*.*.62 --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
参数 说明
–cluster 指定数据库集群名称,该名称也将作为初始数据库的名称(database name)
–port 指定SSH服务端口
–install-path 指定数据库安装路径
–data-path 指定数据存放目录
–begin-port 指定第一个数据库实例的数据库监听端口
–data 指定绑定的数据盘路径
–vote 指定绑定的投票盘路径
–ycr 指定绑定的YCR盘路径

命令回显如下:

[yashan@node1 install]$ ./bin/yasboot package ce gen --cluster yashandb -u yashan -p yashan --ip 192.*.*.60,192.*.*.62 --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 host0002 openssl version: OpenSSL 1.0.2k-fips  26 Jan 2017
Warning: OpenSSL less than 1.1.1, it may cause installation failures, please upgrade OpenSSL to 1.1.1 or greater
host host0001 openssl version: OpenSSL 1.0.2k-fips  26 Jan 2017
Warning: OpenSSL less than 1.1.1, it may cause installation failures, please upgrade OpenSSL to 1.1.1 or greater
192.*.*.60
  ip:192.*.*.60 memory is less than 4096MB
192.*.*.62
  ip:192.*.*.62 memory is less than 4096MB
 hostid   | group | node_type | node_name | listen_addr         | inter_connect       | data_path               
----------------------------------------------------------------------------------------------------------------
 host0001 | ceg1  | ce        | 1-1       | 192.*.*.60:1688 | 192.*.*.60:1689 | /data/yashan/yasdb_data 
----------+-------+-----------+-----------+---------------------+---------------------+-------------------------
 host0002 | ceg1  | ce        | 1-2       | 192.*.*.62:1688 | 192.*.*.62:1689 | /data/yashan/yasdb_data 
----------+-------+-----------+-----------+---------------------+---------------------+-------------------------

Generate config completed

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

  • yashandb.toml:数据库集群的配置文件。
  • hosts.toml:服务器的配置文件。
[yashan@node1 install]$ ls -l *.toml
-rw------- 1 yashan yashan  831 Dec 20 20:14 hosts.toml
-rw------- 1 yashan yashan 2278 Dec 20 20:14 yashandb.toml

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

[yashan@node1 install]$ cat yashandb.toml cluster = "yashandb" # 安装后修改也不会生效,除非重新安装 create_simple_schema = false # 为true部署完会执行示例的SQL,若改为true需要在deploy时指定sys-password参数 uuid = "67655f8997a38d6b07315cf97150ef7b" # 系统自动生成,不建议修改 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.*.*.60:1689" DATA_BUFFER_SIZE = "1G" HA_ELECTION_TIMEOUT = 18 HA_HEARTBEAT_INTERVAL = 6 INTER_URL = "192.*.*.60:1788" LISTEN_ADDR = "192.*.*.60: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.*.*.62:1689" DATA_BUFFER_SIZE = "1G" HA_ELECTION_TIMEOUT = 18 HA_HEARTBEAT_INTERVAL = 6 INTER_URL = "192.*.*.62:1788" LISTEN_ADDR = "192.*.*.62: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] # YFS配置参数,不配置时采用默认值 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" [yashan@node1 install]$

3.4.2 执行安装

场景一:直接安装。

$ ./bin/yasboot package install -t hosts.toml -i yashandb-23.2.4.100-linux-x86_64.tar.gz

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

$ ./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

这里使用了场景一:直接安装方式,回显如下:

[yashan@node1 install]$ ./bin/yasboot package install -t hosts.toml -i yashandb-23.2.4.100-linux-x86_64.tar.gz host host0002 openssl version: OpenSSL 1.0.2k-fips 26 Jan 2017 Warning: OpenSSL less than 1.1.1, it may cause installation failures, please upgrade OpenSSL to 1.1.1 or greater host host0001 openssl version: OpenSSL 1.0.2k-fips 26 Jan 2017 Warning: OpenSSL less than 1.1.1, it may cause installation failures, please upgrade OpenSSL to 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... [yashan@node1 install]$

3.4.3 数据库部署

$ ./bin/yasboot cluster deploy -t yashandb.toml --yfs-force-create

命令说明:

[yashan@node1 install]$ ./bin/yasboot cluster deploy --help

Usages: yasboot cluster deploy [<flags>]

deploy yasdb cluster

Flags:
  -h,--help              Show detailed help information.
  -t,--toml              yasdb toml config, such as '<cluster>.toml'
  -w,--nowait            do not wait commands result(default: false)
  -d,--child             show task info with children task itself(default: false)
     --disable           shield running progress(default: false)
     --dump-uuid         dump task uuid in specified directory
  -p,--sys-password      database sys password
     --yfs-force-create  yfs force create diskgroup(default: false)
     --recommend-force   skip recommend param check exceed memory(default: false)

命令回显如下:

[yashan@node1 install]$ ./bin/yasboot cluster deploy -t yashandb.toml --yfs-force-create type | uuid | name | hostid | index | status | return_code | progress | cost ----------------------------------------------------------------------------------------------------------- task | 38604e9e9bdec8cc | DeployYasdbCluster | - | yashandb | FAILED | 1 | 100 | 98 ------+------------------+--------------------+--------+----------+--------+-------------+----------+------ task completed, status: FAILED retcode: 1 stdout: start log check failed stderr: start yfs failed,err:start log check failed, failed to init dynamic library OPENSSL Failed to start instance failed to init dynamic library OPENSSL Failed to start instance

解决办法:
1、参考《六、碰到的问题》章节安装openssl高版本。
2、卸载数据库:

[yashan@node1 install]$ ./bin/yasboot cluster clean --cluster yashandb --purge Are you sure you want to CLEAN cluster: [yashandb], AND ALL DATA WILL BE DELETED (-p/--purge is given)? [yes/no]: yes type | uuid | name | hostid | index | status | return_code | progress | cost ----------------------------------------------------------------------------------------------------------- task | f1b6c1410bff9cf2 | CleanYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 1 ------+------------------+-------------------+--------+----------+---------+-------------+----------+------ task completed, status: SUCCESS

3、再次部署数据库

[yashan@node1 install]$ ./bin/yasboot cluster deploy -t yashandb.toml --yfs-force-create type | uuid | name | hostid | index | status | return_code | progress | cost ------------------------------------------------------------------------------------------------------------ task | 950e6ea32aff27f8 | DeployYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 82 ------+------------------+--------------------+--------+----------+---------+-------------+----------+------ task completed, status: SUCCESS

数据库成功部署完成。

3.4.4 配置环境变量

以安装用户登录到每个服务器上,执行如下命令生效环境变量。

# 部署命令成功执行后将会在$YASDB_HOME目录下的conf文件夹中生成<<集群名称>>.bashrc环境变量文件 $ cd /data/yashan/yasdb_home/yashandb/23.2.4.100/conf [yashan@node1 conf]$ ls database_options.json monit profile.toml sqlcollect.toml sqlhtml.template yashandb.bashrc yasreport.template ycs_options.json yfs_options.json # 如~/.bashrc中已存在YashanDB相关的环境变量,将其清除 $ cat yashandb.bashrc >> ~/.bashrc $ source ~/.bashrc

3.4.5 检查安装结果

1、YashanDB不提供系统初始口令,需使用yasboot工具设置数据库sys用户的密码,以安装用户登录到服务器并执行如下命令设置密码。

$ yasboot cluster password set -n newpasswd -c yashandb

命令回显如下:

[yashan@node1 conf]$ yasboot cluster password set -n newpasswd -c yashandb type | uuid | name | hostid | index | status | return_code | progress | cost ---------------------------------------------------------------------------------------------------------- task | 34de065b10ad3f5f | YasdbPasswordSet | - | yashandb | SUCCESS | 0 | 100 | 2 ------+------------------+------------------+--------+----------+---------+-------------+----------+------ task completed, status: SUCCESS

2、执行如下命令,查看数据库状态。

$ yasboot cluster status -c yashandb -d

命令回显如下:

[yashan@node1 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  | 25008 | open            | normal          | primary       | 192.*.*.60:1688 | /data/yashan/yasdb_data/ce-1-1 
----------+-----------+--------+-------+-----------------+-----------------+---------------+---------------------+--------------------------------
 host0002 | ce        | 1-2:2  | 24285 | open            | normal          | primary       | 192.*.*.62:1688 | /data/yashan/yasdb_data/ce-1-2 
----------+-----------+--------+-------+-----------------+-----------------+---------------+---------------------+--------------------------------
[yashan@node1 conf]$ 

3、使用yasql工具连接数据库。

[yashan@node1 conf]$ yasql sys/password@192.*.*.60: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 inst_id,status from gv$instance; INST_ID STATUS ----------- ------------- 1 OPEN 2 OPEN 2 rows fetched. #查看数据库版本 SQL> select * from v$version; BANNER VERSION_NUMBER ---------------------------------------------------------------- ----------------- Enterprise Edition Release 23.2.4.100 x86_64 23.2.4.100 1 row fetched. SQL> #查看数据库信息,包括实例id,数据库名,创建时间,归档模式,数据库保护模式,数据库角色等信息 SELECT GROUP_ID,INST_ID,DATABASE_NAME,CREATE_TIME ,LOG_MODE,OPEN_MODE ,PROTECTION_MODE,DATABASE_ROLE FROM gv$database; GROUP_ID INST_ID DATABASE_NAME CREATE_TIME LOG_MODE OPEN_MODE PROTECTION_MODE DATABASE_ROLE ----------- ----------- ---------------------------------------------------------------- ------------------------------------------------ ----------------- ----------------- --------------------------------- ----------------- 0 1 yashandb 2024-12-20 ARCHIVELOG READ_WRITE MAXIMUM PERFORMANCE PRIMARY 0 2 yashandb 2024-12-20 ARCHIVELOG READ_WRITE MAXIMUM PERFORMANCE PRIMARY 2 rows fetched.

4、创建数据库用户并赋权

SQL> create user testusr identified by testusr; Succeed. SQL> grant dba to testusr; Succeed.

四、dbeaver连接yashandb

下载jdbc驱动:
image.png
菜单栏选择数据库->选择驱动管理器->选择新建->选择库->添加文件->点击找到类
image.png
image.png
image.png
菜单栏选择数据库->选择新建数据库连接->选择刚才添加的yashandb驱动
image.png
填写JDBC URL、用户名、密码
jdbc url格式:jdbc:yasdb://ip地址:port/数据库名
image.png
测试连接:
image.png

五、集群管理

#查看数据库集群的状态 [yashan@node1 ~]$ 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 | 25008 | open | normal | primary | 192.*.*.60:1688 | /data/yashan/yasdb_data/ce-1-1 ----------+-----------+--------+-------+-----------------+-----------------+---------------+---------------------+-------------------------------- host0002 | ce | 1-2:2 | 24285 | open | normal | primary | 192.*.*.62:1688 | /data/yashan/yasdb_data/ce-1-2 ----------+-----------+--------+-------+-----------------+-----------------+---------------+---------------------+-------------------------------- [yashan@node1 ~]$ #启动数据库集群 [yashan@node1 ~]$ yasboot cluster start -c yashandb -d type | uuid | name | hostid | index | status | return_code | progress | cost ------------------------------------------------------------------------------------------------------------------ task | 9c39a1c6d3826a7e | StartYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 19 -------+------------------+-------------------+----------+--------------+---------+-------------+----------+------ child | dc53214a3f9f834c | StartYasdbYasce | host0001 | yashandb.1-1 | SUCCESS | 0 | 100 | 8 +------------------+-------------------+----------+--------------+---------+-------------+----------+------ | c6e8230b3024b4d1 | StartYasdbYasce | host0002 | yashandb.1-2 | SUCCESS | 0 | 100 | 11 -------+------------------+-------------------+----------+--------------+---------+-------------+----------+------ task completed, status: SUCCESS #停止数据库集群 [yashan@node1 ~]$ yasboot cluster stop -c yashandb -d type | uuid | name | hostid | index | status | return_code | progress | cost ----------------------------------------------------------------------------------------------------------------- task | cf91f372f8ca1f27 | StopYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 17 -------+------------------+------------------+----------+--------------+---------+-------------+----------+------ child | abb118ce7a12bc96 | StopYasdbYasce | host0001 | yashandb.1-1 | SUCCESS | 0 | 100 | 11 +------------------+------------------+----------+--------------+---------+-------------+----------+------ | 5d6b82790ce60366 | StopYasdbYasce | host0002 | yashandb.1-2 | SUCCESS | 0 | 100 | 6 -------+------------------+------------------+----------+--------------+---------+-------------+----------+------ task completed, status: SUCCESS

六、碰到的问题

1、yasboot package install失败:

[yashan@node1 install]$ ./bin/yasboot package install -t hosts.toml -i yashandb-23.2.4.100-linux-x86_64.tar.gz host host0002 openssl version: OpenSSL 1.0.2k-fips 26 Jan 2017 Warning: OpenSSL less than 1.1.1, it may cause installation failures, please upgrade OpenSSL to 1.1.1 or greater host host0001 openssl version: OpenSSL 1.0.2k-fips 26 Jan 2017 Warning: OpenSSL less than 1.1.1, it may cause installation failures, please upgrade OpenSSL to 1.1.1 or greater 192.*.*.60 ip:192.*.*.60 memory is less than 4096MB 192.*.*.62 ip:192.*.*.62 memory is less than 4096MB config check failed

原因:内存<4G
解决办法:内存设置为6G
2、数据库部署时失败

[yashan@node1 install]$ ./bin/yasboot cluster deploy -t yashandb.toml --yfs-force-create type | uuid | name | hostid | index | status | return_code | progress | cost ----------------------------------------------------------------------------------------------------------- task | 38604e9e9bdec8cc | DeployYasdbCluster | - | yashandb | FAILED | 1 | 100 | 98 ------+------------------+--------------------+--------+----------+--------+-------------+----------+------ task completed, status: FAILED retcode: 1 stdout: start log check failed stderr: start yfs failed,err:start log check failed, failed to init dynamic library OPENSSL Failed to start instance failed to init dynamic library OPENSSL Failed to start instance

原因:openssl版本太低
解决办法:安装高版本的openssl,并卸载数据库
安装openssl:

#下载openssl https://openssl-library.org/source/ #备份老版本的openssl mv /usr/bin/openssl /usr/bin/openssl.old #安装openssl mkdir -p /root/openssl tar -zxvf openssl-1.1.1w.tar.gz -C /root/openssl cd /root/openssl/openssl-1.1.1w ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl make depend && make -j 2 && make install #创建软链接,将新版本的OpenSSL链接到旧版本的路径: ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl #添加新OpenSSL库到动态链接库配置文件,并更新动态链接库 echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf ldconfig -v #查看openssl版本 openssl version -a OpenSSL 1.1.1w 11 Sep 2023 built on: Fri Dec 20 14:30:43 2024 UTC platform: linux-x86_64 options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG OPENSSLDIR: "/usr/local/openssl" ENGINESDIR: "/usr/local/openssl/lib/engines-1.1" Seeding source: os-specific

卸载数据库:

[yashan@node1 install]$ ./bin/yasboot cluster clean --cluster yashandb --purge Are you sure you want to CLEAN cluster: [yashandb], AND ALL DATA WILL BE DELETED (-p/--purge is given)? [yes/no]: yes type | uuid | name | hostid | index | status | return_code | progress | cost ----------------------------------------------------------------------------------------------------------- task | f1b6c1410bff9cf2 | CleanYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 1 ------+------------------+-------------------+--------+----------+---------+-------------+----------+------ task completed, status: SUCCESS

六、总结

YashanDB 23.2 YAC 共享集群部署安装部署还是非常丝滑的~~~

关于作者:
专注于Oracle、MySQL、PG、OpenGauss和国产数据库的研究,热爱生活,热衷于分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同进步~~~

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

评论