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

企业版 YashanDB 23.2.4 YAC 单库多实例架构多活共享集群安装部署指南

山佳数峰寻道 2025-03-08
6

一、概述

1.1 文档目标

本说明旨在指导技术人员在 CentOS 7 x86_64 操作系统上完成崖山数据库企业版 23.2 的共享集群安装与部署。通过系统架构、集群拓扑及部署需求的精确描述,帮助读者在开始安装前对崖山数据库的架构形成清晰认识。本文以高效、稳定、安全为核心目标,为后续的详细安装、配置和调试步骤提供指导,确保数据库在企业级生产环境中稳定运行并满足高可用性和性能需求

1.2 架构概览

崖山数据库通过多实例共享集群架构,为企业级业务负载提供高可用性、高扩展性与高性能的数据库服务。其多层次模块化设计使得各节点可并行访问统一的共享存储,确保在复杂的多节点部署环境中保持数据一致性、故障切换灵活性与整体处理性能的持续优化。

YashanDB推出了主备集群方案,通过在共享集群上集成主备特性,提供全面的高可用和容灾解决方案。

除了上述架构,崖山还推出了核心的自研对等集群内核架构,如下所示:

1.3 核心组件与服务

1.3.1 崖山集群内核

YCK 位于集群架构的核心层次,用于管理多节点的资源访问与调度协调。通过 Cohesive Memory 技术,YCK 整合底层存储访问与全局资源控制,确保在多节点并行读写场景下实现一致、高效的访问性能与透明的数据处理。

1.3.2 聚合内存

聚合内存是 YCK 为多实例并发访问而引入的一项关键技术。通过全局资源目录(GRC)、全局缓存服务(GCS)与全局锁服务(GLS)协同工作,聚合内存对所有实例节点提供统一的资源视图与高速缓存访问能力。

  • GRC
    :负责全局资源的注册与分配,确保每个资源在集群内有唯一标识和全局共享的访问路径。
  • GCS
    :通过分布式缓存机制,在不同节点间实现高效的数据块共享与缓存一致性维持。
  • GLS
    :负责全局资源的锁管理与并发控制,确保集群事务处理过程中数据一致性和资源安全性。

1.3.3 集群事务服务

崖山数据库在集群模式下提供对事务处理的全局视图与管理能力。每个实例都拥有专属的 Undo 空间与事务标识(XID),在通过本地事务与远程事务标识进行协调时实现跨节点的一致性事务执行。多版本并发控制(MVCC)与动态事务分配机制可在负载变化与节点扩展时稳定保持事务处理性能与数据一致性。

1.3.3 崖山集群服务

YCS 是集群运行环境中专职的管理与监控服务。它通过监控节点状态、资源分配与投票机制(Voting Disk)、集群租约(Lease)与故障检测等手段,确保集群在节点增加、移除或故障时快速进行故障恢复与资源重配置。YCS 实现了集群成员管理、资源管理与选举仲裁的核心功能。

1.3.4 崖山集群文件系统

YFS 为多节点并发访问共享存储提供高效的文件访问机制与容量管理能力。YFS 通过 FAT(File Allocation Table)结构维护文件元数据信息,支持多节点共享访问同一组数据文件。结合 YCS 提供的底层集群服务与 UDS(Unix Domain Service)等传输通道,YFS 能为数据库实例与客户端提供高可靠性、高性能的文件访问与资源管控,为上层数据库操作提供统一、透明、可扩展的数据存储基础。

1.4 部署需求

1.4.1 软件需求

  • 操作系统:本安装文档适用于 CentOS 7 x86_64 操作系统。在安装前,请确保操作系统已完成完整安装,并通过 yum 或其他官方软件包管理工具更新至最新补丁版本。这将修复已知漏洞并提升系统稳定性,确保后续操作顺利进行。
  • 数据库软件:获取崖山数据库企业版 23.2 的官方安装介质,确保安装包来源可靠且未被篡改。在获取安装包后,建议对安装包进行哈希校验(如 MD5 或 SHA - 256),以验证其完整性。
  • 依赖软件包:CentOS 7 系统需要安装一系列的依赖软件包来支持崖山数据库的运行。这些软件包包括但不限于:
    • libaio - devel:用于支持异步 I/O 操作,提高数据库的 I/O 性能。
    • numactl - devel:在支持非均匀内存访问(NUMA)架构的服务器上,优化内存分配和访问效率。
    • openssl - devel:提供加密库支持,保障数据库在网络通信和数据存储过程中的安全性。

1.4.2 硬件需求

  • CPU
    :建议采用多核心处理器,生产及性能测试环境核心数不少于 12 核,主频不低于 3.0GHz。支持超线程技术的 CPU 更适合应对高并发写入及部分读取场景,显著提升性能。
  • 内存
    :推荐配置 ≥64GB 内存,以便缓存大量数据和索引,减少磁盘 I/O 操作,从而加速响应。
  • 存储
    :采用高速固态硬盘(SSD)作为主要存储介质,存储数据库的数据文件、日志文件和临时文件、data、vote、ycr 磁盘。

网络

  • 连接类型
    :网络设备需支持高速、稳定的网络连接。对于千兆以太网,应确保线缆质量优良,网卡正常运行,无瓶颈。优先考虑万兆以太网连接,以获得更大的带宽支持。
  • 性能要求
    :网络延迟和丢包率应控制在最低水平,确保节点之间数据传输可靠、快速。

1.4.3 人员需求

  • 系统管理员

    • 具备丰富的 Linux 操作系统管理经验,包括但不限于以下方面:

    • 系统安装与配置

    • 内核参数优化

    • 用户与权限管理

    • 网络配置与存储管理

    • 技术能力

    • 硬件支持: 熟悉硬件设备的安装、调试及故障排除,能够快速定位并解决硬件问题。

    • 职责目标:确保操作系统环境的稳定性和高效运行,为数据库的部署与后续运行提供可靠的基础支持。

  • 数据库管理员

    • 数据库安装与初始化配置
    • 参数调优与性能优化
    • 数据备份与恢复策略
    • 数据库安全管理与访问控制
    • 实时性能监控与分析
    • 专业知识:
       掌握崖山数据库管理技能,覆盖以下关键领域:
    • 业务能力
      :能够结合实际业务需求,合理调整数据库参数,快速响应并解决性能瓶颈及运行故障,确保数据库高效、安全、稳定地运行。

1.4.4 时间需求

安装部署过程的时间消耗取决于多种因素,包括硬件性能、网络环境以及操作人员的熟练程度。以下为各阶段性能及生产部署时间预估:

  • 操作系统准备

    • 系统安装及初始化
    • 基础软件包安装
    • 网络配置
    • 系统安全加固
    • **内容:**从硬件设备上电到完成 CentOS 7 的安装、配置和更新,包括以下步骤:
    • **时间:**约 3 - 5 小时
  • 数据库安装

    • 安装包解压
    • 环境变量配置
    • 依赖检查
    • 执行安装脚本
    • **内容:**安装崖山数据库企业版 23.2,具体包括:
    • **时间:**约 2- 3 小时
  • 配置与测试

    • 集群配置与参数优化
    • 网络连接测试
    • 功能验证(如高可用性、读写性能等)
    • 内容
      :在数据库安装完成后进行以下工作:
    • **时间:**约 4- 6 小时

总体时间

  • 从操作系统准备到数据库集群完成初步测试与配置,预计总耗时为 9 - 14 小时。

建议

  • 预留额外时间以应对意外情况,并进行全面的测试、优化与问题排查。
  • 确保数据库集群的性能、稳定性与可靠性达到生产环境的要求,避免因仓促上线导致的潜在问题。

二、安装环境设置

集群环境各服务器应具有相同体系架构

  • 64bit 和 32bit 不能同一集群
  • ARM 和 x86 两类系统不能同一集群

2.1 硬件环境要求

部署 YashanDB 23.2 共享集群各服务器应满足以下最低硬件需求,生产环境应根据业务需求适时调整硬件配置。

项目名称
最低配置
推荐配置
服务器数量
2(台)

内存
>4(GB)
推荐16G及以上;共享集群推荐32G及以上,测试环境不低于 4(GB)
CPU
CPU核数>2
X86_64,ARM64
超线程,非超线程
推荐4C及以上;共享集群推荐8C及以上
硬盘
> 4(GB)
系统盘建议配置RAID1
数据盘建议配置RAID5(规划4组RAID5数据盘安装
推荐使用SSD
data、vote、ycr 盘不低于 1 G
文件系统
不能为tmpfs
ext4或xfs
网络

生产环境建议设置双网卡冗余bond、千兆以上以太网,支持TCP和UDP

2.2 操作系统要求

2.2.1 软件环境要求

软件类型
最低配置
推荐配置
操作系统
如需使用大页内存,Linux内核版本为2.6及以上
CentOS 7.6以上,KylinOS V10,openEuler 22.03
inode个数

剩余inode个数>15(亿)

2.2.2 软件依赖要求

为保障 YashanDB 顺利安装与稳定运行,请依下述来源及最低版本要求,于所有服务器环境中配置必备依赖项。

动态库名称
来源
版本要求
作用
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及以上
守护进程

三、集群规划

3.1 主机名称规划

主机名称
描述说明
yashandb01
主节点一服务器名称
yashandb02
主节点二服务器名称

3.2 主机地址规划

IP地址
描述说明
192.168.10.101
主节点一 IP 地址
192.168.10.102
主节点二 IP 地址

3.3 端口号规划

端口号
参数名称
描述说明
1675
yasom
yasom 默认端口号
1676
CN - Cordinator Node
计算节点 CN 端口号

3.4 用户及组规划

项目名称
名称
所属类型
规划建议
用户名
yashan
操作系统
建议集群各节点密码及 ID 相同
组名
YASDBA
操作系统
建议集群各节点组 ID 相同

3.5 软件目录规划

注:崖山共享集群可使用 裸盘作为 data、vote、ycr 共享盘。

目录名称
对应名称
目录作用
/data/yashan/yasdb_home
HOME目录
YashanDB 产品目录涵盖其命令集、运行库以及关键组件
/data/yashan/yasdb_data
数据目录
含数据库系统数据文件、部分日志文件、配置文件以及默认存储的用户数据
/dev/sdb
data
指定绑定的数据盘路径
/dev/sdc
vote
指定绑定的投票盘路径
/dev/sdd
ycr
指定绑定的YCR盘路径
-- 如何划分共享存储,本内容略:可参照相关资料
-- 共享盘要求权限不低于 666,为保证启动后能正常识别到盘。
sudo bash -c 'cat <<EOF >> etc/rc.d/rc.local
chmod 666 dev/sdb
chmod 666 dev/sdc
chmod 666 dev/sdd
EOF'

复制

四、环境准备

4.1 操作系统参数调整

注:部署生产分布式集群时建议关闭生成 core 文件开关

-- 开发测试环境为方便定位问题可打开生成 core 文件开关
-- 查看当前是否开启系统 core 文件开关
# ulimit -c   [0 表示禁用核心转储]
-- 开启核心转储文件生成
# ulimit -c unlimited [ core 文件大小无限制,ulimit -c 100000 表示限制大小为 100000kb ]

# vi etc/security/limits.conf

## 添加以下信息并保存:
  - soft core unlimited
  - hard core unlimited

复制

4.2 关闭交换分区

注:为避免内存交换影响性能,建议关闭交换分区

-- 查看当前系统交换分区状态
# sysctl -a | grep swappiness 
-- 关闭系统交换分区
# sysctl -w vm.swappiness=0
# echo "vm.swappiness=0">> etc/sysctl.conf

复制

4.3 调整自动分配本地端口范围

注:为减少端口冲突,建议调整本地端口范围

-- 查看当前系统本地端口范围
# 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

复制

4.4 调整进程虚拟内存地址上限

注:生产环境建议调整虚拟内存地址上线

-- [VMA(Virtual Memory Address)虚拟内存地址 ]
-- 查看当前 VMA 上限
# sysctl -a|grep vm.max_map_count
-- 调整系统 VMA 上限,建议生产环境不低于 2000000
# sysctl -w vm.max_map_count=2000000
# echo "vm.max_map_count=2000000" >> etc/sysctl.conf 

复制

4.5 调整资源限制值

注:调整部分资源限制,生产环境应不低于推荐值

资源项
推荐值
配置文件命令
注释说明
open files
1048576
ulimit -n 1048576
调整打开文件的最大数量
max user processes
1048576
ulimit -u 1048576
设置允许的最大进程数量
max memory size
无限制
ulimit -m unlimited
设置最大内存使用量为无限制
stack size
8192
ulimit -s 8192
设置堆栈大小

注:可通过如下命令写入

-- 使用 root 用户执行
sudo bash -c 'cat <<EOF >> etc/security/limits.conf
* 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'

复制

4.6 配置大页内存

注:生产环境建议 启用大页内存、关闭透明大页

-- 查看当前大页内存配置
# grep -i huge proc/meminfo
-- 查看当前透明大页配置
# cat sys/kernel/mm/transparent_hugepage/enabled [若显示 always madvise [never],表明透明大页已禁用]

-- BIOS 系统可通过如下脚本 启用大页内存和关闭透明大页
cat << 'EOF' > configure-hugepages-thp.sh
#!/bin/bash

# 确保脚本以root权限运行
if [ "$(id -u)" != "0" ]; then
   echo "此脚本必须以root权限运行" 1>&2
   exit 1
fi

# 配置大页数量
REQUIRED_HUGEPAGES=<required_hugepages>  # 替换为实际计算值
echo "配置 $REQUIRED_HUGEPAGES 大页内存..."
echo "vm.nr_hugepages=$REQUIRED_HUGEPAGES" | tee -a etc/sysctl.conf
sysctl -p

# 禁用透明大页
echo "正在修改GRUB配置以禁用透明大页..."
GRUB_CMDLINE="transparent_hugepage=never"
if grep -q '^GRUB_CMDLINE_LINUX' etc/default/grub; then
   sed -i "s/^\(GRUB_CMDLINE_LINUX=\".*\)\"/\1 $GRUB_CMDLINE\"/" etc/default/grub
else
   echo "GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE\"" | tee -a etc/default/grub
fi

# 更新GRUB配置
echo "更新GRUB配置..."
grub2-mkconfig -o boot/grub2/grub.cfg

# 重启系统
echo "准备重启系统以应用更改..."
read -p "是否现在重启系统?(y/n): " answer
if [[ $answer =~ ^[Yy]$ ]]
then
    reboot
else
    echo "更改将在下次重启后生效。"
fi
EOF

--设置权限
# chmod +x configure-hugepages-thp.sh
-- 执行脚本
# sh configure-hugepages-thp.sh
-- 根据提示重启操作系统,输入 y

复制

注:为优化YashanDB性能,建议配置适量大页内存以减少页表开销并提高内存效率。以下是配置示例。

计算总内存需求

1)基本内存配置:

  • DATA_BUFFER_SIZE: 32 MB
  • REDO_BUFFER_SIZE: 8 MB
  • VM_BUFFER_SIZE: 16 MB
  • SHARE_POOL_SIZE: 64 MB
  • LARGE_POOL_SIZE: 8 MB
  • DBWR_BUFFER_SIZE: 4 MB
  • WORK_AREA_POOL_SIZE: 16 MB
  • AUDIT_QUEUE_SIZE: 16 MB

总计基本内存需求(UserSize): 164 MB

2)额外内存需求:

  • 额外的内存需求(如MMS表空间)应该预先评估(MMSSize)。

计算大页所需空间

  • 根据公式 LargePageSize = (UserSize + MMSSize + 额外64 MB) * 1.2 【计算所需调整后的内存总量】
  • 假设MMSSize为100 MB,调整后的总内存需求为:(164+100+64)∗1.2=394.8(MB)

配置大页

  • 以2 MB为单个大页尺寸计算,所需大页数为:Ceil(394.8/2)=198
  • 配置大页内存需预留198个大页。

4.7 关闭SELinux

注意:建议关闭所有数据库服务器 SELinux

-- 临时关闭 SELinux
# setenforce 0
-- 永久关闭SELinux
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" etc/selinux/config
-- 检查 SELinux 状态
# getenforce
-- 状态为Disabled表明SELinux已关闭

复制

4.8 关闭防火墙

注意:建议关闭所有数据库服务器防火墙

-- 停止 firewalld 服务
# systemctl stop firewalld.service
-- 禁用 firewalld 服务
# systemctl disable firewalld.service
-- 查看 firewalld 服务状态 [ Active: inactive (dead) 表示已关闭防火墙 ]
# systemctl status firewalld  

-- 若防火墙不能关闭,可通过添加白名单方式将相关端口添加到白名单中
-- 以下演示将 1688 端口添加至防火墙白名单
-- 添加(--permanent表示永久生效,没有此参数重启后失效)
# firewall-cmd --zone=public --add-port=1688/tcp --permanent
-- 重新载入
# firewall-cmd --reload
-- 查看规则生效情况
# firewall-cmd --zone=public --query-port=1688/tcp

复制

4.9 开启 SSH 服务

-- 禁用 SSH 登录时的横幅(Banner)
# sed -i '/Banner/s/^/#/' etc/ssh/sshd_config
-- 目的是禁用允许以 root 用户登录的配置选项
# sed -i '/PermitRootLogin/s/^/#/' etc/ssh/sshd_config
# echo -e "\n" >> etc/ssh/sshd_config
# echo "Banner none " >> etc/ssh/sshd_config
# 修改Banner配置,去掉连接到系统时,系统提示的欢迎信息。欢迎信息会干扰安装时远程操作的返回结果,影响安装正常执行
# echo "PermitRootLogin yes" >> etc/ssh/sshd_config
# cat etc/ssh/sshd_config |grep -v ^#|grep -E 'PermitRootLogin|Banner'
-- 重启 SSH 服务生效
# systemctl restart sshd.service
-- 查看 SSH 服务状态
# systemctl status sshd.service

复制

4.10 设置时区和时间

注:建议安装配置 chrony 设置时钟同步

-- 可使用如下脚本安装配置 chrony 服务
cat << 'EOF' > setup_chrony.sh
#!/bin/bash

# 检查是否具有 root 权限
if [ "$EUID" -ne 0 ]; then
    echo "请以 root 用户或使用 sudo 执行此脚本。"
    exit 1
fi

# 安装 chrony
echo "安装 chrony..."
yum install -y chrony

# 配置 chrony(修改 etc/chrony.conf)
echo "配置 chrony..."
cat > etc/chrony.conf <<EOL
# 默认公共 NTP 服务器
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

# 允许本地网络同步
allow 192.168.0.0/16

# 日志记录
logdir var/log/chrony
EOL

# 启动并启用 chrony 服务
echo "启动并设置 chrony 服务开机自启..."
systemctl start chronyd
systemctl enable chronyd

# 检查服务状态
echo "检查 chrony 服务状态..."
systemctl status chronyd

# 验证同步状态
echo "验证时钟同步状态..."
chronyc tracking

# 设置硬件时钟同步
echo "同步硬件时钟..."
hwclock --systohc

# 输出完成信息
echo "Chrony 安装与配置完成。"
EOF

--设置权限
# chmod +x setup_chrony.sh
-- 执行脚本
# sh setup_chrony.sh

复制

4.11 配置硬件时钟

注:硬件时钟(RTC,Real-Time Clock)在集群环境中是时间管理的关键,其准确性直接影响多节点间的协作效率、数据一致性和系统稳定性。建议生产环境配置硬件时钟同步。

-- 确认硬件时钟当前状态
# hwclock --show
-- 确保系统时钟与硬件时钟同步
# hwclock --systohc
-- 选择硬件时钟的时间基准
-- 设置为 UTC 时间(推荐,尤其是服务器和集群环境)
# timedatectl set-local-rtc 0
-- 验证时钟同步
# timedatectl
-- 配置自动同步硬件时钟 [示例]
0 * * * * sbin/hwclock --systohc 

复制

4.12 修改字符集

注:为避免操作系统因字符集异常,建议前期设置为所需字符集

-- 此处已修改字符集为 en_US.UTF-8 为例
-- 设置字符集到 etc/profile
# echo "export LANG=en_US.UTF-8" >> etc/profile
-- 重新加载配置文件
# source etc/profile
-- 检查字符集
# env | grep -i lang

复制

4.13 安装软件依赖包

-- 安装 tar、gz、openssl 依赖包
-- 通过如下脚本安装以上依赖包
cat << 'EOF' > install_openssl.sh
#!/bin/bash

# 检查是否具有 root 权限
if [ "$EUID" -ne 0 ]; then
    echo "请以 root 用户或使用 sudo 执行此脚本。"
    exit 1
fi

# 定义变量
OPENSSL_VERSION="1.1.1w"
OPENSSL_TAR="openssl-${OPENSSL_VERSION}.tar.gz"
OPENSSL_SHA256="openssl-${OPENSSL_VERSION}.tar.gz.sha256"
INSTALL_DIR="/usr/local/openssl"
SOURCE_DIR="/root/soft"

# 安装解压工具
echo "检查并安装必要的解压工具..."
yum install -y tar gzip

# 安装开发工具(如 gcc)
echo "检查并安装开发工具..."
yum groupinstall -y "Development Tools"
yum install -y gcc

# 检查安装包和校验文件是否存在
if [ ! -f "${SOURCE_DIR}/${OPENSSL_TAR}" ]; then
    echo "未找到 ${SOURCE_DIR}/${OPENSSL_TAR},请确认文件路径正确。"
    exit 1
fi

if [ ! -f "${SOURCE_DIR}/${OPENSSL_SHA256}" ]; then
    echo "未找到 ${SOURCE_DIR}/${OPENSSL_SHA256},请确认文件路径正确。"
    exit 1
fi

# 进入文件目录
cd "${SOURCE_DIR}" || exit

# 校验文件格式修复
if ! grep -q "${OPENSSL_TAR}" "${OPENSSL_SHA256}"; then
    echo "修复校验文件格式..."
    SHA256_VALUE=$(cat "${OPENSSL_SHA256}" | awk '{print $1}')
    echo "${SHA256_VALUE} ${OPENSSL_TAR}" > "${OPENSSL_SHA256}"
fi

# 校验文件完整性
echo "校验文件完整性..."
sha256sum -c "${OPENSSL_SHA256}"
if [ $? -ne 0 ]; then
    echo "校验失败,请检查安装包是否损坏或下载是否完整。"
    exit 1
fi

# 解压安装包
echo "解压安装包..."
tar xzf "${OPENSSL_TAR}"

# 进入解压后的目录
cd "openssl-${OPENSSL_VERSION}" || exit

# 编译安装 OpenSSL
echo "开始编译和安装 OpenSSL..."
./config --prefix="${INSTALL_DIR}"
make -j$(nproc) && make install

if [ $? -ne 0 ]; then
    echo "OpenSSL 编译或安装失败,请检查日志。"
    exit 1
fi

# 配置系统路径
echo "配置系统路径..."
ln -sf "${INSTALL_DIR}/bin/openssl" usr/bin/openssl
ln -sf "${INSTALL_DIR}/include/openssl" usr/include/openssl
echo "${INSTALL_DIR}/lib" >> etc/ld.so.conf
ldconfig -v

# 验证安装
echo "验证 OpenSSL 版本..."
openssl version -a

# 清理临时文件
cd ..
rm -rf "openssl-${OPENSSL_VERSION}"

echo "OpenSSL ${OPENSSL_VERSION} 安装和配置完成!"
EOF

--设置权限
# chmod +x install_openssl.sh
-- 执行脚本
# sh install_openssl.sh

复制

4.14 创建用户

-- 通过如下脚本方式创建 yashan 用户并设置 sudo 免密
cat << 'EOF' > setup_user.sh
#!/bin/bash

# 检查是否具有 root 权限
if [ "$EUID" -ne 0 ]; then
    echo "请以 root 用户或使用 sudo 执行此脚本。"
    exit 1
fi

# 定义变量
USERNAME="yashan"
HOMEDIR="/home/${USERNAME}"
USERGROUP="YASDBA"
PASSWORD="yashan!1234"  # 定义密码变量

# 创建用户及设置密码
echo "创建用户 ${USERNAME}..."
if ! id -u "${USERNAME}" >/dev/null 2>&1; then
    useradd -m -d "${HOMEDIR}" -s bin/bash "${USERNAME}"
    echo "${USERNAME}:${PASSWORD}" | chpasswd
    echo "用户 ${USERNAME} 已创建,密码设置为 '${PASSWORD}'。"
else
    echo "用户 ${USERNAME} 已存在,跳过创建步骤。"
fi

# 配置 sudo 免密权限
echo "配置 sudo 免密权限..."
if ! grep -q "^${USERNAME} ALL=(ALL) NOPASSWD: ALL" etc/sudoers; then
    echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> etc/sudoers
    echo "已为用户 ${USERNAME} 配置 sudo 免密权限。"
else
    echo "用户 ${USERNAME} 已配置 sudo 免密权限,跳过。"
fi

# 确保 etc/sudoers 文件属性恢复为只读
echo "恢复 etc/sudoers 文件为只读属性..."
chmod 440 etc/sudoers

# 创建用户组并将用户加入组
echo "创建用户组 ${USERGROUP} 并将用户加入组..."
if ! grep -q "^${USERGROUP}:" etc/group; then
    groupadd "${USERGROUP}"
    echo "用户组 ${USERGROUP} 已创建。"
else
    echo "用户组 ${USERGROUP} 已存在,跳过创建。"
fi

usermod -aG "${USERGROUP}" "${USERNAME}"
echo "用户 ${USERNAME} 已加入用户组 ${USERGROUP}。"

echo "所有操作已完成。"

EOF

--设置权限
# chmod +x setup_user.sh
-- 执行脚本
# sh setup_user.sh

复制

4.15 创建目录

-- 每个节点数据库服务器都要创建相同目录
# mkdir -p data/yashan
# chmod 777 data/yashan
# chown yashan:yashan data/yashan

复制

4.16 下载软件安装包

4.16.1 下载安装包

方式一:

登录崖山数据库官网 https://download.yashandb.com/download 下载页面,下载 YashanDB 企业版,截止到 2024年12月-11日,当前官网可供下载的最新企业版为 YashanDB 23.2.4 版本,并选择对应的 Linux X86 数据库版本进行下载,然后将下载的数据库软件上传到数据库服务器指定目录下。

方式二:

如果服务器可以连接外网,可以在数据库服务器上通过如下方式进行下载。

-- 下载数据库软件
$ cd home/yashan/install
$ wget https://linked.yashandb.com/upload1010/yashandb-23.2.4.100-linux-x86_64.tar.gz

复制

4.16.2 解压安装包

$ cd home/yashan/install
$ tar zxf yashandb-23.2.4.100-linux-x86_64.tar.gz

复制

五、数据库软件安装

5.1 生成部署文件

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

-- 使用 yashan 用户在其中节点执行
# su - yashan
$ cd install
$ ./bin/yasboot package ce gen --cluster yashandb -u yashan -p 'yashan!1234' --ip 192.168.10.101,192.168.10.102 --port 22 --install-path data/yashan/yasdb_home --data-path data/yashan/yasdb_data --begin-port 1688 --node 2 --data dev/sdb --vote dev/sdc  --ycr dev/sdd

-- 参数说明
--cluster 指定数据库集群名称,该名称也将作为初始数据库的名称(database name)
--port 指定SSH服务端口
--install-path 指定数据库安装路径
--data-path 指定数据存放目录
--begin-port 指定第一个数据库实例的数据库监听端口
--data 指定绑定的数据盘路径
--vote 指定绑定的投票盘路径
--ycr 指定绑定的 YCR 盘路径

-- 上述命令执行后会在 install 目录下生成 yashandb.toml 和 hosts.toml 两个配置文件
-- yashandb.toml:数据库集群配置文件。
-- hosts.toml:服务器配置文件
-- toml 配置文件如附件

复制

5.1.1 配置文件及含义介绍

注:执行 yasboot package 安装部署时,会生成 hosts.toml 和 yashandb.toml 两个配置文件,两个配置文件的内容及含义如下:

1)hosts.toml 配置文件

uuid = "67623aae42555d4f02bf13b06b22197c"    #系统自动生成,不建议修改
cluster = "yashandb"       #安装后修改也不会生效,除非重新安装
yas_type = "CE"       #部署模式,安装后修改也不会生效,除非重新安装   
secret_key = "77050acd15a2a09b"   #系统自动生成,不建议修改
add_yasdba = true  # 表示是否添加yasdba相关的配置或功能,true 表示启用

[om]
  hostid = "host0001"   # 主机唯一标识符,用于在集群中区分不同的主机
  [om.config]      
    LISTEN_ADDR = "192.168.10.101:1675"  # om模块监听地址和端口

[[host]]
  hostid = "host0001"   # 主机唯一标识符,每个主机的hostid都不同
  group = "yashan"   #主机所属组名
  user = "yashan"
  password = "yashan!1234"
  ip = "192.168.10.101"
  port = 22   # 登录主机 SSH 端口
  path = "/data/yashan/yasdb_home" # 产品安装路径,安装后修改也不会生效,除非重新安装
  disks = ["/dev/sdb", "/dev/sdc", "/dev/sdd"] # 安装过程设置的 data、vote、ycr 盘
  [host.yasagent]
    [host.yasagent.config]
      LISTEN_ADDR = "192.168.10.101:1676"  # yasagent 侦听地址和端口

[[host]]
  hostid = "host0002"
  group = "yashan"
  user = "yashan"
  password = "yashan!1234"
  ip = "192.168.10.102"
  port = 22
  path = "/data/yashan/yasdb_home"
  disks = ["/dev/sdb", "/dev/sdc", "/dev/sdd"]
  [host.yasagent]
    [host.yasagent.config]
      LISTEN_ADDR = "192.168.10.102:1676"

复制

2)yashandb.toml 配置文件

# ------------------------------------------------------------------------------
# YashanDB 共享集群配置文件示例 (yashandb.toml)
# ------------------------------------------------------------------------------

cluster = "yashandb"               # 集群名称,不建议修改,修改后不生效
create_simple_schema = false       # 是否自动创建简单 Schema (true/false)
uuid = "67623aae42555d4f02bf13b06b22197c"   # 集群唯一标识符
yas_type = "CE"                    # YashanDB 版本类型 (CE: 社区版, EE: 企业版)

[[group]]
  database_role = "primary"        # 数据库组角色 (primary/standby 等)
  group_type = "ce"                # 数据库组类型 (ce/ee 等)
  name = "ceg1"                    # 数据库组名称

  [group.cedisk]
    vote = "/dev/sdc"             # 投票磁盘(Voting Disk)路径
    ycr = "/dev/sdd"              # YCR日志磁盘路径 (类似 OCR/Voting Disk 作用)

  [group.config]
    CHARACTER_SET = "utf8"        # 数据库字符集 (utf8/gbk 等)
    ISARCHIVELOG = true           # 是否启用归档日志模式 (true/false)
    REDO_FILE_NUM = 4             # REDO 文件组数量
    REDO_FILE_SIZE = "128M"       # 每组 REDO 文件大小

  [[group.diskgroup]]
    au_size = "1M"                # Allocation Unit 大小
    disk_size = ""                # 磁盘组期望大小 (留空表示自动获取)
    name = "DG0"                  # 磁盘组名称
    redundancy = "EXTERNAL"       # 冗余级别 (EXTERNAL/NORMAL/HIGH)
    yfs_force_create = false      # 是否强制创建 (true/false)

    [[group.diskgroup.failgroup]]
      disk = ["/dev/sdb"]         # 故障组内包含的物理磁盘路径
      name = "DG0_0"              # 故障组名称

  [[group.node]]
    data_path = "/data/yashan/yasdb_data"    # 数据文件存放路径
    hostid = "host0001"                     # 主机 ID/名称
    role = 1      # 节点角色编号 (共享集群的节点没有主备概念,不支持修改)
    [group.node.config]
      CLUSTER_DATABASE = "TRUE"             # 是否参与集群数据库 (TRUE/FALSE)
      CLUSTER_INTERCONNECT = "192.168.10.101:1689"   # 集群内部通信地址/端口
      DATA_BUFFER_SIZE = "1G"               # 数据缓冲区大小
      HA_ELECTION_TIMEOUT = 18              # HA 选举超时时间 (秒)
      HA_HEARTBEAT_INTERVAL = 6             # HA 心跳间隔 (秒)
      INTER_URL = "192.168.10.101:1788"     # 节点对外/对内服务 URL
      LISTEN_ADDR = "192.168.10.101:1688"   # 数据库监听地址/端口
      REDO_BUFFER_PARTS = 8                 # REDO 缓冲区分区数量
      REDO_BUFFER_SIZE = "64M"              # REDO 缓冲区大小
      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                    # SQL 池分区数量

  [[group.node]]
    data_path = "/data/yashan/yasdb_data"    # 数据文件存放路径
    hostid = "host0002"                     # 主机 ID/名称
    role = 2                                # 节点角色编号 (1: 主节点, 2: 备节点等)
    [group.node.config]
      CLUSTER_DATABASE = "TRUE"             # 是否参与集群数据库 (TRUE/FALSE)
      CLUSTER_INTERCONNECT = "192.168.10.102:1689"   # 集群内部通信地址/端口
      DATA_BUFFER_SIZE = "1G"               # 数据缓冲区大小
      HA_ELECTION_TIMEOUT = 18              # HA 选举超时时间 (秒)
      HA_HEARTBEAT_INTERVAL = 6             # HA 心跳间隔 (秒)
      INTER_URL = "192.168.10.102:1788"     # 节点对外/对内服务 URL
      LISTEN_ADDR = "192.168.10.102:1688"   # 数据库监听地址/端口
      REDO_BUFFER_PARTS = 8                 # REDO 缓冲区分区数量
      REDO_BUFFER_SIZE = "64M"              # REDO 缓冲区大小
      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                    # SQL 池分区数量

  [group.ycsconfig]
    DISK_HB_KEEP_ALIVE = 30   # 磁盘心跳保活时间(秒)
    LOG_LEVEL = "DEBUG"       # 日志等级 (DEBUG/INFO/WARN/ERROR 等)
    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"    # YFS 数据包大小


复制

5.2 执行安装

场景一:直接安装

-- 使用 yashan 用户在生成 toml 配置文件的服务器上进行安装
$ cd install
$ ./bin/yasboot package install -t hosts.toml -i yashandb-23.2.4.100-linux-x86_64.tar.gz

复制

场景二:扩展插件安装

注:如需使用DBLINK功能和更丰富的内置函数,可借助 plugin 插件包进行安装,若前期采用了直接安装,安装后,无法再单独安装插件包

-- 本次采用了扩展插件安装
-- 首先登录官网下载并上传 yashandb-plugins-all-23.2.4.100-linux-x86_64.tar.gz 插件到 home/yashan/install 目录
-- 执行安装命令
$ cd 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

复制

5.3 数据库部署

-- 使用 yashan 用户执行
-- 使用参数 “-d” 或 “--child”,可展示任务及其子任务信息,便于查看部署进度。
$ cd install
$ ./bin/yasboot cluster deploy -t yashandb.toml --yfs-force-create -d 
-- 执行结果出现 task completed, status: SUCCESS 提示安装部署成功
-- 执行过程可查看 data/yashan/yasdb_home/yashandb/23.2.4.100/om/yashandb/log 目录下 yasom.log 和 yasagent.log 查看安装过程日志

复制

5.4 配置环境变量

注:为确保 YashanDB 相关命令正常执行,需将生成的环境变量配置文件加入当前用户环境,请参照如下步骤配置环境变量。

登录到每台服务器执行如下相同操作

1)定位环境变量文件

-- 部署完成后,环境变量文件存于 $YASDB_HOME/conf 目录,示例路径:
-- yashan 用户操作
$ cd data/yashan/yasdb_home/yashandb/23.2.4.100/conf

复制

2)更新用户环境变量

-- 将文件内容追加至 ~/.bashrc:
-- yashan 用户操作
$ cat yashandb.bashrc >> ~/.bashrc

复制

3)立即生效

-- 执行以下命令生效:
$ source ~/.bashrc

复制

以上操作可通过如下脚本实现:

-- 使用 yashan 用户,每个节点执行
#!/bin/bash

# 定义变量
CONF_DIR="/data/yashan/yasdb_home/yashandb/23.2.4.100/conf"
ENV_FILE="yashandb.bashrc"
BASHRC="$HOME/.bashrc"
TEST_VAR="YASDB_HOME"  # 用于验证的环境变量名
YASHAN_CMD="yasboot --help"  # 用于验证的 YashanDB 命令
BIN_DIR="bin"  # 假设 yasboot 在 $YASDB_HOME/bin 下

# 检查环境变量文件是否存在
if [[ ! -f "$CONF_DIR/$ENV_FILE" ]]; then
    echo "环境变量文件不存在:$CONF_DIR/$ENV_FILE"
    exit 1
fi

# 备份原有的 .bashrc 文件
echo "备份当前 .bashrc 文件为 .bashrc.bak"
cp "$BASHRC" "$BASHRC.bak"

# 删除已有的 YashanDB 环境变量
echo "清除旧的 YashanDB 环境变量配置"
sed -i '/# YashanDB 环境变量配置开始/,/# YashanDB 环境变量配置结束/d' "$BASHRC"

# 添加新环境变量配置
echo "添加新的 YashanDB 环境变量配置"
echo -e "\n# YashanDB 环境变量配置开始" >> "$BASHRC"
cat "$CONF_DIR/$ENV_FILE" >> "$BASHRC"
echo "export PATH=\$YASDB_HOME/$BIN_DIR:\$PATH" >> "$BASHRC"  # 添加 bin 目录到 PATH
echo "# YashanDB 环境变量配置结束" >> "$BASHRC"

# 使环境变量立即生效
echo "使环境变量立即生效"
source "$BASHRC"
export PATH=$YASDB_HOME/$BIN_DIR:$PATH  # 确保当前会话生效

# 检查环境变量是否配置成功
if [[ -z "${!TEST_VAR}" ]]; then
    echo "环境变量未生效,请检查配置!"
    exit 1
else
    echo "环境变量已成功配置,$TEST_VAR=${!TEST_VAR}"
fi

# 测试 YashanDB 命令
echo "执行 YashanDB 测试命令:$YASHAN_CMD"
if command -v yasboot >/dev/null 2>&1; then
    if $YASHAN_CMD >/dev/null 2>&1; then
        echo "YashanDB 命令执行成功,环境变量已正确配置!"
    else
        echo "YashanDB 命令执行失败,请检查数据库状态!"
        exit 1
    fi
else
    echo "yasboot 未找到,请检查 PATH 配置或 yasboot 是否存在!"
    exit 1
fi

echo "所有配置完成!"
source $HOME/.bashrc

--设置权限
# chmod +x setup_env.sh 
-- 执行脚本
# sh setup_env.sh 

复制

5.4 修改初始口令

注:YashanDB 无初始系统口令,可通过安装用户使用 yasboot 工具设置 sys 用户密码。

-- 使用如下命令初始 sys 密码
-- yasboot cluster password set -n newpasswd -c yashandb
-- 注意:如果密码有特殊字符要加 '' 符号
$ yasboot cluster password set -n 'yashan!a1357' -c yashandb

复制

5.5 查看集群状态

5.5.1 查看数据库状态

-- 通过 yasboot 命令查看集群和数据库状态  
$ yasboot cluster status -c yashandb -d

复制

注:

表格列解析

  • hostid

    每个节点的主机名或标识符。
  • node_type

    节点类型,通常包括:
    • ce:计算节点(Compute Node)。
  • nodeid

    节点唯一标识符,格式 x-y-z,表示集群逻辑分区。
  • pid

    每个节点对应进程 ID,用于标识该节点进程。
  • instance_status

    节点实例运行状态为 open,表示节点正常运行。
  • database_status

    数据库状态,通常包括:
    • normal:数据库运行正常。
    • abnormal:数据库运行异常。
  • database_role

    数据库角色,包括:
    • primary :主节点,负责处理读写请求。
    • standby:备用节点,负责故障切换或备份。
  • listen_address

    节点的监听地址,用于通信和连接。
  • data_path

    节点数据存储路径指向该节点在磁盘上的数据目录。

5.5.2 查看实例状态

注:使用 yasql 工具连接数据库,查看实例状态。

-- 如密码包含特殊字符,请对特殊字符进行转义处理。
-- 使用如下命令登录数据库
-- yasql sys/sys_password@cn_hostname:port
$ yasql sys/'yashan!a1357'@192.168.10.102:1688

复制

5.5.3 集群启停测试

-- 停止集群
[yashan@yashandb01 ~]$ yasboot cluster stop -c yashandb -d
-- 查看集群状态
[yashan@yashandb01 ~]$ yasboot cluster status -c yashandb -d
-- 启动集群
[yashan@yashandb01 ~]$ yasboot cluster start -c yashandb -d

复制

5.6 配置守护进程

注:通过命令行安装的 YashanDB 默认不支持 monit 守护进程功能,需安装配置。

5.6.1 检查 monit 是否安装

-- 使用 yashan 用户
$ cd home/yashan/install
-- 执行如下命令检查 monit 状态
yasboot monit status --cluster cluster_name
$ ./bin/yasboot monit status --cluster yashandb
-- 以下表示未启动 monit

复制

5.6.2 启动守护进程

-- 使用 yashan 用户
$ cd home/yashan/install
$ ./bin/yasboot monit start --cluster yashandb

复制

5.6.3 查看守护进程状态

-- 使用 yashan 用户
$ cd home/yashan/install
$ ./bin/yasboot monit status --cluster yashandb

复制

5.6.4 配置开机自启动[可选]

注:可通过如下脚本实现

#!/bin/bash

# 检查 monit 是否已安装
MONIT_PATH=$(which monit)
if [ -z "$MONIT_PATH" ]; then
  echo "[ERROR] monit 未安装,请先安装 monit。"
  exit 1
fi

echo "[INFO] monit 安装路径为: $MONIT_PATH"

# 检查 monit 是否运行
if ! pgrep -x "monit" > dev/null; then
  echo "[INFO] monit 服务未运行,正在启动..."
  $MONIT_PATH
  if [ $? -ne 0 ]; then
    echo "[ERROR] monit 服务启动失败,请检查配置。"
    exit 1
  fi
else
  echo "[INFO] monit 服务已运行。"
fi

# 启动守护进程
cd home/yashan/install || exit 1
./bin/yasboot monit start --cluster yashandb
if [ $? -ne 0 ]; then
  echo "[ERROR] 无法启动守护进程,请检查配置。"
  exit 1
fi

echo "[INFO] 守护进程已成功启动。"

# 打印服务信息
./bin/yasboot monit status --cluster yashandb
if [ $? -ne 0 ]; then
  echo "[ERROR] 无法获取守护进程状态,请检查配置。"
  exit 1
fi

echo "[INFO] 服务信息已打印。"

# 配置开机启动
RC_LOCAL="/etc/rc.local"
START_COMMAND="su yashan -c '$MONIT_PATH -c data/yashan/yasdb_home/yashandb/23.2.4.100/ext/monit/monitrc'"

if [ -f "$RC_LOCAL" ]; then
  sudo chmod +x "$RC_LOCAL"
  grep -q "$START_COMMAND" "$RC_LOCAL" || echo "$START_COMMAND" | sudo tee -a "$RC_LOCAL" > dev/null
  echo "[INFO] 开机启动配置完成。"
else
  echo "[ERROR] $RC_LOCAL 文件不存在,请检查系统。"
  exit 1
fi

exit 0

--设置权限
# chmod +x setup_yashandb_autostart.sh
-- 执行脚本
# sh setup_yashandb_autostart.sh

复制

六、附录

6.1 主机名名称不能有特殊符号

注:使用主机名为 yashandb-01、yashandb-02 安装共享集群时,报 YAS-05721 Invalid input parameter 错误,后跟官方技术人员反馈是数据库标记的node名字格式冲突导致,是一个 BUG,目前已条件开发人员解决处理。

6.2 用户锁定解锁问题

注:验证测试时遇到 sys 用户因异常登录锁定导致无法登录该节点,后通过 yasql 登录另一个节点,使用 alter user xxx account unlock 解锁,解锁后可使用该账户重新登录原节点。


6.3 不支持 AUTO_INCREMENT

注:当前 23.2.4 版本不支持 AUTO_INCREMENT 自增模式,Oracle 和 MySQL 当前均不支持,已将该问题反馈给研发人员。

[yashan@yashandb01 ~]$ yasql sys/'yashan!a1357'@192.168.10.101:1688
YashanDB SQL Enterprise Edition Release23.2.4.100 x86_64

Connected to:
YashanDB ServerEnterpriseEditionRelease23.2.4.100 x86_64 - X86 64bit Linux

SQLSHOW PARAMETER SQL_PLUGIN;

NAME                                                             VALUE                                                            
---------------------------------------------------------------- ---------------------------------------------------------------- 
SQL_PLUGIN                                                       NONE                                                            

1 row fetched.

SQL> CREATETABLE employees (
   2     employee_id INT AUTO_INCREMENT PRIMARY KEY,
   3     employee_name VARCHAR(50NOTNULL,
   4     gender ENUM('M''F'NOTNULL,
   5     hire_date DATENOTNULL,
   6     salary DECIMAL(102NOTNULL
   7 );

[2:21]YAS-04209 unexpected word AUTO_INCREMENT

SQL> -- 开启MySQL兼容
SQL> ALTERSYSTEMSET SQL_PLUGIN = 'MYSQL'SCOPE = MEMORY;

Succeed.

SQL> CREATETABLE employees (
   2     employee_id INT AUTO_INCREMENT PRIMARY KEY,
   3     employee_name VARCHAR(50NOTNULL,
   4     gender ENUM('M''F'NOTNULL,
   5     hire_date DATENOTNULL,
   6     salary DECIMAL(102NOTNULL
   7 );

[2:21]YAS-04209 unexpected word AUTO_INCREMENT

SQL> 

复制

6.4 集群模式不支持 sid =’*’

注:当前集群模式下希望修改参数保证集群所有节点生效,使用 sid=’*’,YAS-00207 end of text expected but S found,当前数据库版本不支持 sid = * 这种模式,已将该问题反馈给研发人员。

[yashan@yashandb01 ~]$ yasql sys/'yashan!a1357'@192.168.10.101: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> SHOW PARAMETER SQL_PLUGIN;

NAME                                                             VALUE                                                            
---------------------------------------------------------------- ---------------------------------------------------------------- 
SQL_PLUGIN                                                       MYSQL                                                           

1 row fetched.

SQL> ALTER SYSTEM SET SQL_PLUGIN = 'MYSQL' SCOPE = MEMORY SID='*';

[1:54]YAS-00207 end of text expected but S found

SQL> ALTER SYSTEM SET SQL_PLUGIN = 'MYSQL' SCOPE = SPFILE SID='*';

[1:54]YAS-00207 end of text expected but S found

SQL> 
Disconnected from:
YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 - X86 64bit Linux


复制

6.5 数据库部署遇到 ping 失败报错

注:在部署数据库时遇到 stdout:start node with ping failed 报错,最后通过 yashan 用户配置两个节点的互信解决。

6.6 服务器内存不能小于 4G

注:部署测试环境时,服务器内存设置为 4G,安装时报 memory is less than 4096MB。

最后将服务器内存调整为大于 4G,重新安装部署通过。

6.7 dial tcp xxx:1675: connect: connection refused

注:集群停止后启动时报 failed to dial server: dial tcp 192.168.10.101:1675: connect: connection refused 错误

注:解决办法,需要先启动 yasom 进程 ,再启动 yasagent ,然后再启动集群

-- 启动 yasom
yasboot process yasom start -c yashandb
-- 启动 yasagent 
yasboot process yasagent start -c yashandb
-- 等所有节点 yasom 和 yasagent 都启动,然后启动集群
yasboot cluster start -c yashandb -d

复制

6.8 openssl 提示版本低

注:当在 CentOS 7.9 操作系统执行安装部署时,会提示默认版本 openssl 较低,输出信息为 OpenSSL version is 1.1.1 or greater,需要较高版本,当 openssl 版本升级到 较高版本,比如 1.1.1w,但执行安装时仍然会输出 OpenSSL version is 1.1.1 or greater,但可以正常安装,此问题已反馈给崖山研发,后续会进行修正。

七、总结

曾经在安装测试过崖山个人版数据库的安装部署,相对于个人版,企业版拥有更多的功能,可以让数据库爱好者体验崖山共享集群数据库、崖山分布式数据库,虽然在企业版安装部署过程中也遇到一些问题,但整体都非常流畅,相对于 Oracle RAC 的安装部署也更简单,特别适合很多 Oracle DBA 转型学习。


文章转载自山佳数峰寻道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论