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

YashanDB实战:YAC共享集群入门篇

原创 严少安 2024-12-31
757

Table of Contents

目录

- 关于 YashanDB
- YashanDB 共享集群
- 共享集群安装部署
- 连接 YashanDB
- 性能测试
- 总结

在诸多国产数据库产品中,支持类似 Oracle RAC 共享集群的产品屈指可数,崖山数据库 YashanDB 企业版即是其中之一。YashanDB 企业版 V23 LTS 是国内共享集群首个公开下载版本。

本文不是一篇劝退文章,而是一篇实战手记,旨在帮你快速了解、部署、访问 YAC 共享集群。

关于 YashanDB

崖山数据库系统 YashanDB 是深圳计算科学研究院自主设计研发的新型数据库管理系统,在经典数据库理论基础上,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的要求。

YashanDB 企业版,是面向大规模用户推出的商业版本,该版本包含 YashanDB 数据库完整核心能力,支持 PB 级海量数据存储和大量的并发用户,支持多模数据类型、高级安全能力,支持单机(主备)、分布式集群、共享集群部署形态,配套完整数据迁移和监控运维工具,可以满足支撑各类企业应用。

YashanDB 共享集群

YashanDB 共享集群,是基于共享存储的多活集群,所有实例均可读写,实例之间通过全局缓存实现数据交换。共享集群提供计算、存储扩展和金融级高可用能力,适用于高端核心交易场景。同时,拥有优异的性能表现,4 节点 TPC-C 性能达 520w tpmC,线性扩展比高达 0.7 以上,无需大规模的系统改造和重构,是 1:1 平替国外主流数据库的高性价比解决方案。

共享集群部署形态在单机形态基础上,增加了集群内核、集群管理和文件系统三个子系统:

  • 集群内核:集群运行时的核心组件,通过聚合内存技术负责各服务器运行期内存页面的协调,确保集群多实例高效实现一致性的访问。
  • 集群管理:共享集群部署形态中负责管理集群,提供配置管理能力。
  • 文件系统:负责管理存储设备,提供类文件系统接口给数据库使用,处理上层应用的文件读写请求,经过地址转换转化为对存储设备的读写操作。

图片.png

共享集群安装部署

主机环境准备

这里为个人演示环境,而非标准生产环境部署,所以将依据机器配置做适当调整。

主机依托 VMware 准备三个虚拟机,配置信息如下表。

# 主机名 IP 操作系统 CPU 内存 用途
1 yac01 192.0.2.231 CentOS 7.9 2c 6G YAC节点1
2 yac02 192.0.2.232 CentOS 7.9 2c 6G YAC节点2
3 yac03 192.0.2.233 CentOS 7.9 2c 6G YAC节点3

操作系统优化参数

安装 YashanDB 需要适当调整操作系统的资源参数。

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
" | sudo tee -a /etc/security/limits.conf

配置主机名解析

设定操作系统的 DNS 配置或 hosts 文件,加入 IP 和主机名映射。

echo "
192.0.2.231 yac01
192.0.2.232 yac02
192.0.2.233 yac03
" | sudo tee -a /etc/hosts

清理共享内存

部署 YashanDB 共享集群,还需在所有服务器上清理共享内存。

sudo ipcrm -a

此外,还有其他系统配置,具体参考官方文档–安装前准备

共享存储配置

共享存储需要划分三个 LUN,在所有服务器上进行 LUN 绑定,信息如下。

LUN Role Disk Path Desc
LUN1 数据盘 data.vmdk /dev/yas/data 一块(3G)
LUN2 投票盘 vote.vmdk /dev/yas/vote 一块(1G)
LUN3 YCR 盘 ycr.vmdk /dev/yas/ycr 一块(2G)

集群投票盘(Voting disk)是所有服务器运行期会周期性写入状态信息的盘。在故障发生时,需要在集群投票盘进行投票并决定哪些服务器幸存而哪些服务器被逐出集群,无法访问投票盘则无法获得最新集群状态信息,相关YCS实例和数据库实例无法正常运行。

集群配置表(YCR,Yashan Cluster Registry)保存集群服务的配置信息,包括服务器配置、资源配置等,YCR必须保存在共享存储上,所有YCS实例和数据库实例运行期需要能够正常访问YCR,以确保获得一致的集群服务配置信息。

数据盘,正式生产环境需要若干块,容量建议 50G 以上。

添加三块共享磁盘

本文测试环境虚拟化软件为 VMware Workstation 17 Pro,停止虚拟机后,添加三块共享磁盘(sdb, sdc, sdd)。

添加共享磁盘后,登录机器查看磁盘列表。

[shawnyan@yac01 ~]$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0    5G  0 part [SWAP]
└─sda3   8:3    0 44.7G  0 part /
sdb      8:16   0    1G  0 disk
sdc      8:32   0    2G  0 disk
sdd      8:48   0    3G  0 disk
sr0     11:0    1 1024M  0 rom

配置 UDEV 绑盘

在三个节点分别查看节点磁盘 WWID,确认一致。

[root@yac01 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdb
36000c29f4ba66335673b86bec08b99fd
[root@yac01 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdc
36000c293f3e3eec5f3a1f62abf58df51
[root@yac01 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdd
36000c29c45a66f368b28845a76223e29

在三个节点分别创建绑定配置文件。

sudo vi /etc/udev/rules.d/yashan-device-rule.rules
KERNEL=="sd*",ENV{ID_SERIAL}=="36000c29c45a66f368b28845a76223e29",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}=="36000c29f4ba66335673b86bec08b99fd",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}=="36000c293f3e3eec5f3a1f62abf58df51",SYMLINK+="yas/ycr",OWNER="yashan",GROUP="YASDBA",MODE="0666",RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yas/ycr'"

分别在三台机器执行如下命令或重启服务器,使 udev 生效。

udevadm control --reload-rules
udevadm trigger --type=devices --action=change

确认绑定生效。

[shawnyan@yac01 ~]$ ll /dev/yas/
total 0
lrwxrwxrwx 1 yashan yashan 6 Dec 28 00:00 data -> ../sdd
lrwxrwxrwx 1 yashan yashan 6 Dec 28 00:00 vote -> ../sdb
lrwxrwxrwx 1 yashan yashan 6 Dec 28 00:00 ycr -> ../sdc

再次检查三台服务三块磁盘 WWID 是否一致。

[shawnyan@yac01 ~]$ /usr/lib/udev/scsi_id --whitelisted --device=/dev/yas/data
36000c29c45a66f368b28845a76223e29
[shawnyan@yac01 ~]$ /usr/lib/udev/scsi_id --whitelisted --device=/dev/yas/vote
36000c29f4ba66335673b86bec08b99fd
[shawnyan@yac01 ~]$ /usr/lib/udev/scsi_id --whitelisted --device=/dev/yas/ycr
36000c293f3e3eec5f3a1f62abf58df51

软件环境准备

安装依赖包

YashanDB 的安装运行需要以下依赖,为了增强 yasql 客户端的使用体验,这里增加了 rlwrap 包。它用于增强命令行工具的实用程序,它提供了行编辑、历史记录和自动补全功能。

sudo yum install -y lz4 zlib zstd monit rlwrap

注意:YashanDB v23.2 依赖 openssl 1.1.1l,而 CentOS 7 默认安装 openssl 1.0.2。

[shawnyan@yac01 ~]$ openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

需要编译安装 openssl 1.1.1l,否则会安装失败。

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

可以从我 Fork 的源码仓库下载对应版本。https://gitee.com/shawnyan/openssl/tree/OpenSSL_1_1_1l/

编译步骤如下(以节点一为例)。

[root@yac01 ~]# mv /usr/bin/openssl /usr/bin/openssl.bak
[root@yac01 ~]# mv /usr/lib64/openssl/ /usr/lib64/openssl.bak
[root@yac01 ~]# cd openssl-OpenSSL_1_1_1l/
[root@yac01 openssl-OpenSSL_1_1_1l]# ./config --prefix=/usr/local/openssl
[root@yac01 openssl-OpenSSL_1_1_1l]# make
[root@yac01 openssl-OpenSSL_1_1_1l]# make install
[root@yac02 openssl-OpenSSL_1_1_1l]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
[root@yac02 openssl-OpenSSL_1_1_1l]# ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl
[root@yac02 openssl-OpenSSL_1_1_1l]# echo "/usr/local/openssl/lib/" | sudo tee /etc/ld.so.conf.d/openssl.conf
/usr/local/openssl/lib/
[root@yac02 openssl-OpenSSL_1_1_1l]# ldconfig

检查 openssl 版本。

[root@yac01 openssl-OpenSSL_1_1_1l]# openssl version
OpenSSL 1.1.1l  24 Aug 2021

安装 GmSSL

GmSSL 是由北京大学自主开发的国产商用密码开源库,实现了对国密算法、标准和安全通信协议的全面功能覆盖。

从 GitHub 代码仓库下载源码:https://github.com/guanzhi/GmSSL/releases/tag/v3.1.1

或从 Fork 的代码仓库下载源码:https://gitee.com/shawnyan/GmSSL

在崖山数据库的环境中,它被用于生成 CA 证书、签名证书和加密证书等操作,这些证书在配置数据库的安全连接时非常重要。

注意:GitHub 上发布的安装包不支持 CentOS 7,会报出如下错误。需要升级 glibc,或编译安装 GmSSL。

[shawnyan@yac01 lib]$ ldd /usr/local/bin/gmssl
/usr/local/bin/gmssl: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by /usr/local/bin/gmssl)
/usr/local/bin/gmssl: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by libgmssl.so.3)
/usr/local/bin/gmssl: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by libgmssl.so.3)
/usr/local/bin/gmssl: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by libgmssl.so.3)
        linux-vdso.so.1 =>  (0x00007ffccd2b6000)
        libgmssl.so.3 (0x00007fddcb503000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fddcb028000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fddcb3f6000)

下载 GmSSL 源码包,编译、安装。

*1 安装依赖 cmake3,必须是 cmake 3 版本,cmake 2 是无法编译 gmssl 的。

yum install -y cmake3

*2 启用高版本 gcc。

注意:CentOS 7.9 自带的 gcc 太古老,直接编译会报错。

[  5%] Building C object CMakeFiles/gmssl.dir/src/sm9_alg.c.o
/tmp/GmSSL-3.1.1/src/sm9_alg.c: In function ‘sm9_fp2_div’:
/tmp/GmSSL-3.1.1/src/sm9_alg.c:710:2: warning: passing argument 3 of ‘sm9_fp2_mul’ from incompatible pointer type [enabled by default]
  sm9_fp2_mul(r, a, t);
  ^
/tmp/GmSSL-3.1.1/src/sm9_alg.c:586:6: note: expected ‘const uint64_t (*)[8]’ but argument is of type ‘uint64_t (*)[8]’
 void sm9_fp2_mul(sm9_fp2_t r, const sm9_fp2_t a, const sm9_fp2_t b)
      ^

需启用高版 Gcc。

[root@yac01 ~]# scl enable devtoolset-11 bash
[root@yac01 ~]# gcc --version
gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

*3 编译 gmssl 成功。

tar zxf GmSSL-3.1.1.tar.gz
cd GmSSL-3.1.1/
mkdir build && cd build
cmake3 .. -DCMAKE_INSTALL_PREFIX=/usr/local
make
sudo make install

*4 重载动态库。

echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/gmssl.conf
ldconfig

*5 验证 gmssl 版本。

[root@yac01 ~]# gmssl version
GmSSL 3.1.1

创建用户

创建新用户组 YASDBA 和用户 yashan,并设定初始密码。

sudo groupadd YASDBA
sudo useradd yashan -G YASDBA
echo 'password' | sudo passwd --stdin yashan

配置 sudo 免密

通过指令 sudo visudo 编辑 sudoers 文件,追加以下内容后保存退出。

yashan ALL=(ALL) NOPASSWD:ALL

配置 SSH 互信

切换到 yashan 用户后,为 1 号机和 2 号机、3号机配置互信。

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.0.2.232

使用 yasboot 部署

YAC 支持两种安装方式:命令行安装,可视化界面安装。

本节内容主要介绍使用命令行安装共享集群,操作步骤均在主节点执行。

部署 yasboot 组件

创建安装目录。

mkdir /home/yashan/install

将软件包上传至安装目录,解压软件包,查看解压后目录中的文件。

[yashan@yac01 install]$ ll -h
total 194M
drwxrwxr-x 6 yashan yashan   70 Sep  4 17:29 admin
drwxrwxr-x 2 yashan yashan  243 Sep  4 17:29 bin
drwxrwxr-x 2 yashan yashan  176 Sep  4 17:28 conf
drwxrwxr-x 4 yashan yashan   33 Sep  4 17:28 ext
-rw-rw-r-- 1 yashan yashan  11K Sep  4 17:28 gitmoduleversion.dat
drwxrwxr-x 2 yashan yashan   64 Sep  4 17:28 include
drwxrwxr-x 3 yashan yashan   17 Sep  4 17:29 java
drwxrwxr-x 2 yashan yashan 4.0K Sep  4 17:29 lib
-rw-r----- 1 yashan yashan  15K Sep  4 17:28 LICENSE
drwxrwxr-x 3 yashan yashan   21 Sep  4 17:29 plug-in
drwxrwxr-x 2 yashan yashan   61 Sep  4 17:29 scripts
-rw-rw-r-- 1 yashan yashan 182M Dec 27 20:03 yashandb-23.2.4.100-linux-x86_64.tar.gz
-rw-rw-r-- 1 yashan yashan  13M Dec 27 20:35 yashandb-plugins-all-23.2.4.100-linux-x86_64.tar.gz

生成安装参数文件

执行命令 yasboot package ce gen 生成集群安装参数文件。命令执行成功后,生成两个配置文件,数据库集群配置文件 yashandb.toml 和服务器配置文件 hosts.toml

./bin/yasboot package ce gen --cluster yashandb -u yashan -p password --ip 192.0.2.231,192.0.2.232,192.0.2.233 --port 22 --install-path /home/yashan/yasdb_home --data-path /home/yashan/yasdb_data --node 3 --data /dev/yas/data --vote /dev/yas/vote --ycr /dev/yas/ycr

输出:

host host0001 openssl version: OpenSSL 1.1.1l  24 Aug 2021
OpenSSL version is 1.1.1 or greater
host host0002 openssl version: OpenSSL 1.1.1l  24 Aug 2021
OpenSSL version is 1.1.1 or greater
host host0003 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.0.2.231:1688 | 192.0.2.231:1689 | /home/yashan/yasdb_data 
----------+-------+-----------+-----------+------------------+------------------+-------------------------
 host0002 | ceg1  | ce        | 1-2       | 192.0.2.232:1688 | 192.0.2.232:1689 | /home/yashan/yasdb_data 
----------+-------+-----------+-----------+------------------+------------------+-------------------------
 host0003 | ceg1  | ce        | 1-3       | 192.0.2.233:1688 | 192.0.2.233:1689 | /home/yashan/yasdb_data 
----------+-------+-----------+-----------+------------------+------------------+-------------------------

Generate config completed

部分参数含义如下。

--boot-start-monit  boot start monit(append start command to /etc/rc.local), need sudo privilege(default: false)

--data-path         yasdb node data path
--node              cluster node number(default: 2)
--standby-node      standby cluster node number

--data              data disk path of ce, support multi disk path, split by comma
--vote              vote disk path of ce
--ycr               ycr disk path of ce

执行安装

执行命令安装 YashanDB 数据库。

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

如需使用 DBLINK 和内置函数(例如 GIS Function、LSFA_LISTAGG 等),则需指定 --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

输出:

host host0003 openssl version: OpenSSL 1.1.1k  FIPS 25 Mar 2021
OpenSSL version is 1.1.1 or greater
host host0002 openssl version: OpenSSL 1.1.1k  FIPS 25 Mar 2021
OpenSSL version is 1.1.1 or greater
host host0001 openssl version: OpenSSL 1.1.1k  FIPS 25 Mar 2021
OpenSSL version is 1.1.1 or greater
checking install package...
install version: yashandb 23.2.4.100
host0001 100% [====================================================================]    3s
host0002 100% [====================================================================]    3s
host0003 100% [====================================================================]    3s
update host to yasom...

此时,会在各节点安装并启动 yasagent,且在家目录下生成隐藏目录和环境信息文件。

[yashan@yac01 install]$ cat ~/.yasboot/yashandb.env
cluster="yashandb"
om_addr="192.0.2.231:1675"
version="23.2.4.100"
same_version=false
base_path="/home/yashan/yasdb_home/yashandb/23.2.4.100"
max_ac_sql_size=209715200
max_ac_sql_rows=1000000

执行部署

执行命令部署 YashanDB 数据库。

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

部分参数含义如下。

-d,--child             show task info with children task itself(default: false)  # 展示任务以及子任务信息,从而了解部署进度
-p,--sys-password      database sys password
--yfs-force-create  yfs force create diskgroup(default: false)

警告:不建议在这一步设置 sys 密码,数据库对密码强度有要求,如果不通过,将会安装失败,并对继续执行部署造成阻塞。

稍等片刻,部署成功,输出如下。

配置环境变量

部署成功后,为用户 yashan 配置环境变量。

echo ". /home/yashan/yasdb_home/yashandb/23.2.4.100/conf/yashandb.bashrc" >> ~/.bashrc
source ~/.bashrc

查看 yasql 客户端版本,验证环境变量生效。

[yashan@yac01 ~]$ yasql -V
YashanDB SQL Enterprise Edition Release 23.2.4.100 x86_64

设定 sys 用户密码

执行如下命令设置 YashanDB 数据库中 sy s用户的密码。

注意:密码复杂度要求,必须有一位数字、一位特殊字符、不能包含用户名。

[yashan@yac01 ~]$ yasboot cluster password set -n YasdbPassword1! -c yashandb
 type | uuid             | name             | hostid | index    | status  | return_code | progress | cost 
----------------------------------------------------------------------------------------------------------
 task | 1b636db8972cb6a5 | YasdbPasswordSet | -      | yashandb | SUCCESS | 0           | 100      | 2    
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS

检查数据库状态

执行如下命令查看 YashanDB 数据库状态,如显示出数据库状态信息即为安装成功:

[yashan@yac01 ~]$ yasboot cluster status -c yashandb
 host_id  | node_type | nodeid | pid  
--------------------------------------
 host0001 | ce        | 1-1:1  | 3272 
----------+-----------+--------+------
 host0002 | ce        | 1-2:2  | 3037 
----------+-----------+--------+------
 host0003 | ce        | 1-3:3  | 3015 
----------+-----------+--------+------

加入参数 -d 得到详细输出。

[yashan@yac01 ~]$ 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  | 3272 | open            | normal          | primary       | 192.0.2.231:1688 | /home/yashan/yasdb_data/ce-1-1 
----------+-----------+--------+------+-----------------+-----------------+---------------+------------------+--------------------------------
 host0002 | ce        | 1-2:2  | 3037 | open            | normal          | primary       | 192.0.2.232:1688 | /home/yashan/yasdb_data/ce-1-2 
----------+-----------+--------+------+-----------------+-----------------+---------------+------------------+--------------------------------
 host0003 | ce        | 1-3:3  | 3015 | open            | normal          | primary       | 192.0.2.233:1688 | /home/yashan/yasdb_data/ce-1-3 
----------+-----------+--------+------+-----------------+-----------------+---------------+------------------+--------------------------------

共享集群启停

YashanDB 共享集群启停包括两种模式:

  • 通过 yasboot 命令启停整个集群。
  • 通过 ycsctl 命令启停某个服务器。

yasboot

通过 yasboot cluster 命令管理整个集群。

停止集群所有服务。

yasboot cluster stop -c yashandb -d

强制停止集群所有服务。

yasboot cluster stop -c yashandb -f

注意:-c 参数为必传,必须指定集群名称。

启动集群。

yasboot cluster start -c yashandb

命令演示如下。

ycsctl

YashanDB 共享集群的启动方式主要通过 YCS(Yashan Cluster Service)进行管理。ycsctl 是 YashanDB 中用于管理共享集群的命令行工具,提供了多种功能来管理和监控集群中的 YCS 服务及其相关资源。

使用前需要设定 YASCS_HOME 环境变量。

echo "export YASCS_HOME=/home/yashan/yasdb_data/ycs/ce-1-1" >> ~/.bashrc
source ~/.bashrc

使用 ycsctl 命令查看集群状态。

[yashan@yac01 ~]$ ycsctl status
---------------------------------------------------------------------------------------------
Self Host ID|Cluster Master ID|YasFS Master ID|YasDB Master ID|Active Host Count
---------------------------------------------------------------------------------------------
1            1                 1               1               3         
---------------------------------------------------------------------------------------------
Host ID   |Target    |State     |YasFS     |YasDB
---------------------------------------------------------------------------------------------
1          online     online     online     online     
2          online     online     online     online     
3          online     online     online     online     

以竖表方式显示当前集群的 YCS 拓扑状态。

[yashan@yac01 ~]$ ycsctl status vertical
[cluster_information]
Self Host ID: 1
Cluster Master ID: 1
YasFS Master ID: 1
YasDB Master ID: 1
Active Host Count: 3

[host_information.host1]
Host ID: 1
Target: online
State: online
YasFS: online
YasDB: online

[host_information.host2]
Host ID: 2
Target: online
State: online
YasFS: online
YasDB: online

[host_information.host3]
Host ID: 3
Target: online
State: online
YasFS: online
YasDB: online

使用 ycsctl 命令查看集群配置。

[yashan@yac01 ~]$ ycsctl show config
    Cluster name: yashandb, config version: 6
    Cluster id: 67738e321679937266059804782edd78
    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.0.2.231:1788, Node ID: 1
        yasdb instance name:yasdb, yasdb instance id:1
      Node name: yac02, yascs/yasfs inter connect URL: 192.0.2.232:1788, Node ID: 2
        yasdb instance name:yasdb, yasdb instance id:1
      Node name: yac03, yascs/yasfs inter connect URL: 192.0.2.233:1788, Node ID: 3
        yasdb instance name:yasdb, yasdb instance id:1
[yashan@yac01 ~]$ 

使用 ycsctl 命令修改、查看集群配置。

[yashan@yac01 ~]$ ycsctl set LOG_SIZE '1M'
[yashan@yac01 ~]$ ycsctl show parameter
Name                Value
------------------- ----------------------
AUTO_START          ALWAYS
LOG_LEVEL           DEBUG
LOG_NUMBER          10
LOG_SIZE            1MB
RESTART_TIMES       3
RESTART_INTERVAL    30s
WAIT_STOP_FIN_TIME  90s
YCR_DISK            /dev/yas/ycr

配置守护进程

monit 是一个用于监控和管理 YashanDB 中各个进程的守护进程工具。它可以监控进程的运行状态,并在进程异常时自动重启,以确保数据库服务的稳定性。

使用 yasboot 命令启动 monit 进程:

yasboot monit start -c yashandb

查看 monit 状态:

  • 执行命令 yasboot monit summary 查看监控状态简略信息。
  • 执行命令 yasboot monit status 查看监控状态详细信息。

执行示例如下。

配置开机自启动。

/etc/rc.local 文件中添加以下命令,以使得 monit 在服务器重启后自动启动

su yashan -c '/bin/monit -c /home/yashan/yasdb_home/yashandb/23.2.4.100/ext/monit/monitrc'

连接 YashanDB

使用 yasql 连接 YashanDB

yasql 是 YashanDB 的客户端连接管理工具,主要用于连接数据库服务器并对其进行操作和维护。

通常有两种连接方式,

*1 系统认证方式登录

yasql / as sysdba

执行如下命令连接数据库,并执行如下 SQL 命令查看当前实例状态及数据库名称。

[yashan@yac01 ~]$ yasql sys/YasdbPassword1!
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.

*2 简单连接方式登录

yasql sys/'YasdbPassword1!'@yac01:1688

注意:如果密码中有特殊字符,需要用单引号将密码引起来。

执行如下命令连接数据库,并执行如下 SQL 命令查看实例数量、名称、角色和主机名称。

[yashan@yac01 ~]$ yasql sys/'YasdbPassword1!'@yac01: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> col INSTANCE_NAME for a15
SQL> col INSTANCE_ROLE for a15
SQL> col HOST_NAME for a15
SQL> SELECT INSTANCE_NUMBER, INSTANCE_NAME, INSTANCE_ROLE, HOST_NAME FROM GV$INSTANCE;

INSTANCE_NUMBER INSTANCE_NAME   INSTANCE_ROLE   HOST_NAME       
--------------- --------------- --------------- --------------- 
              1 yasdb           MASTER_ROLE     yac01          
              2 yasdb           NORMAL_ROLE     yac02          
              3 yasdb           NORMAL_ROLE     yac03          

3 rows fetched.

简单验证

*1 创建用户,并赋予权限

SQL> create user shawnyan identified by shawnyan;

Succeed.

SQL> GRANT SYSDBA TO shawnyan;

Succeed.

SQL> GRANT DBA TO shawnyan;

Succeed.

SQL> GRANT CONNECT TO shawnyan;

Succeed.

SQL> GRANT RESOURCE TO shawnyan;

Succeed.

*2 连接到 shawnyan 用户,创建表空间

SQL> conn shawnyan/shawnyan

Connected to:
YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 - X86 64bit Linux

SQL> CREATE TABLESPACE ts_shawnyan;

Succeed.

*3 创建测试表,写入测试数据

SQL> create table t (id number, name varchar2(10));

Succeed.

SQL> insert into t values (1, 'shawnyan');

1 row affected.

SQL> select * from t;

         ID NAME          
----------- ------------- 
          1 shawnyan     

1 row fetched.

在 Windows 上使用 YASQL 连接崖山数据库

崖山数据库提供了 YashanDB YASQL 安装包,可在官方网站直接下载使用。

这里演示如何在 Windows 上连接到 YashanDB。

下载 Windows 版本的客户端安装包 yashandb-client-23.3.1.100-windows-amd64.zip

配置 Windows 环境变量。

运行 yasql 并创建连接,进行测试验证。

使用 YDC 连接崖山数据库

崖山开发者中心(YashanDB Developer Center,YDC)是由深圳计算科学研究院研发的企业级数据库开发平台,旨在帮助用户安全、高效的使用崖山数据库。YDC 提供了丰富的功能和工具,支持用户以可视化的方式管理数据库对象,并提升数据库开发和运维效率。

主要适用场景如下。

  • 数据库开发:通过 YDC 提供的智能 IDE 和 SQL 编辑功能,简化数据库开发流程。
  • 数据库管理:通过图形化管理工具高效管理数据库对象。
  • 数据库调试:通过 PL 调试功能快速定位问题,提升开发效率。

目前,YDC 已提供 Windows 版本,方便开发者使用,安装完成后,配置连接到 YAC 集群。

性能测试

关于性能测试部分,去年已经做过 BenchmarkSQL 6 与 YashanDB 23 的兼容性验证测试(YashanDB 23 与 BenchmarkSQL 6 兼容性适配 https://www.modb.pro/db/1731331556252409856),由于时间关系这里暂时没有对 YAC 共享集群尤其是在一定压力下的故障转移等方面的验证测试,后面另行补充。

同时,官方文档中也有介绍基于 BenchmarkSQL 的 TPC-C 测试,可供参考。https://doc.yashandb.com/yashandb/23.3/zh/快速上手/TPC-C性能测试/TPC-C测试.html

总结

总体来讲,YashanDB 共享集群的安装过程流畅,虽有一些“关卡”,但瑕不掩瑜。国产数据库替代已进入深水区,各行业的核心数据库的平滑迁移和替代逐步提上议程,而 YashanDB 的 YAC 集群正是为担任此项重任而生。过去一年 YashanDB 在发布两个大版本,包含 400 多项新特性,在高兼容、高性能、高可用等方面有显著提升。并且,在数据库领域获得多项国内外权威认证,持续增强与基础软硬件的兼容。最后,期待崖山数据库 2025 年在商业领域取得突破性进展。

Have a nice day ~


🌻 往期精彩 ▼

– / END / –

👉 这里可以找到我

👉 这里有得聊

如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
关注微信公众号:少安事务所,后台回复[群],即可看到入口。

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

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

文章被以下合辑收录

评论