Oracle RAC的共享存储架构始终是集中式数据库实现高可用的经典方案,承载了众多行业核心业务系统的稳定运行。然而,由于其实现机制涉及cache fusion、共享资源锁、一致读等高复杂度技术,实现该方案高可用的并不多见。在国产数据库领域,达梦、Kingbase等产品也已开始向这一架构方向探索,但目前横向扩展节点所带来的性能提升效果,仍难以达到Oracle的水准。
昨日,这一架构阵营中又迎来一位新成员——崖山数据库正式发布了V23.5版本,推出了支持YAC共享集群架构。出于对这一技术的关注,我连夜申请了安装介质,并第一时间进行了部署与体验。
具体的安装文档参考官方《YashanDB安装部署》,我没有来的及全文阅读,以一个Oracle DBA的角度快速安装体验一下。
环境
2个计算节点(最小2C CPUs, 4GB 内存),并挂载共享存储
每个节点2块网卡,public network和interconnect network
public network同样有public IP, VIP, SCAN IP (未配置DNS,仅host记录1个)
安装介质 database-23.5.1.100-linux-x86_64.tar.gz 300M , 安装后的目录约1GB
YFS如同ASM的磁盘组,2个,一个用于系统,一个用于数据。最少单盘1G,盘数取决于后期的冗余度1、2/3或5块系统盘分别对应的冗余度为EXTERNAL、NORMAL或HIGH。
基本Oracle DBA都很熟悉。
这里OS 我使用RHEL7.9, 同样支持:
* Redhat Enterprise Linux 7、8、9
* CentOS 7.6及以上
* openEuler 22.03 LTS
* KylinOS V10(ARM架构:推荐使用V10 SP3 2303的52.33内核、海光CPU:推荐使用V10 SP3 2303的52.45内核)
| 服务器名称 | 网段配置 | 服务器IP | 角色 |
|---|---|---|---|
| yashan-74 | 公网网卡ens192:172.20.22.0/23 私网网卡ens256:10.10.10.0/24 | ens192:172.20.23.74 ens256:10.10.10.74 | 数据库实例1 |
| yashan-75 | 公网网卡ens192:172.20.22.0/23 私网网卡ens256:10.10.10.0/24 | ens192:172.20.23.75 ens256:10.10.10.75 | 数据库实例2 |
安装
安装介质上传到其中一个节点,也未配置ssh互信,而是输入yashan用户操作系统密码,该用户有sudo权限,最后也省去了像Oracel最后还要root执行root.sh。 但是这种就是yashan的用户安全要求较高。
1, 安装依赖检查
[root@yashan-74 ~]# rpm -qa openssl lz4 zlib zstd
zlib-1.2.7-18.el7.x86_64
openssl-1.0.2k-19.el7.x86_64
lz4-1.8.3-1.el7.x86_64
[root@yashan-74 ~]# ldconfig -p | grep -E "libcrypto.so|libssl.so"
libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10
libcrypto.so.10 (libc6,x86-64) => /lib64/libcrypto.so.10
如果没有,安装yum install openssl openssl-devel
2,内核参数
[root@yashan-74 ~]# vi /etc/sysctl.conf
# for yashandb append
kernel.shmmax = 24696061952
kernel.shmall = 3774873
kernel.shmmni = 4096
vm.swappiness = 0
net.ipv4.ip_local_port_range=32768 60999
vm.max_map_count=2000000
net.core.somaxconn=32768
vm.nr_hugepages=1000 # Total 2g hugepage
vm.nr_overcommit_hugepages=0
[root@yashan-74 ~]# sysctl -p
3,修改限制
vi /etc/security/limits.conf
yashan soft nofile 1048576
yashan hard nofile 1048576
yashan soft nproc 1048576
yashan hard nproc 1048576
yashan soft rss unlimited
yashan hard rss unlimited
yashan soft stack 8192
yashan hard stack 8192
4, 关闭透明大页(非强求,忽略)
5,创建用户、组
groupadd YASDBA
useradd -d /home/yashan -m -G YASDBA yashan
id yashan
passwd yashan
6, 配置sudo
# visudo
## 在文件末尾添加如下内容,保存并退出
yashan ALL=(ALL)NOPASSWD:ALL
7, 创建目录
## 安装介质
# mkdir -p /home/yashan/install
# chown -R yashan:yashan /home/yashan/install
## 创建/data/yashan目录、HOME目录和DATA目录、日志目录
mkdir -p /data/yashan
mkdir -p /data/yashan/yasdb_home
mkdir -p /data/yashan/yasdb_data
mkdir -p /data/yashan/log
##授权
# chown -R yashan:yashan /data/yashan
8, 映射存储
[root@yashan-74 yashan]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 79G 0 part
├─rhel-root 253:0 0 75G 0 lvm /
└─rhel-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sdc 8:32 0 50G 0 disk
sdd 8:48 0 200G 0 disk
sr0 11:0 1 1024M 0 rom
系统盘:冗余度(redundancy)仅支持1、2、3或5块相同大小的磁盘,系统盘大小至少为2G
数据盘:1块或多块相同大小的磁盘
分配sdb sdc 用于系统(这套机器数量不好,要么用1要么用3块); sdd用于 数据
## shell生成udev脚本
mydevs="sdb sdc sdd" ; export count=0 ; for mydev in $mydevs; do ((count+=1)) ; /lib/udev/scsi_id -g -u /dev/$mydev | awk '{print "KERNEL==\"sd?\", ENV{ID_SERIAL}==\""$1"\", SYMLINK+=\"yfs/disk"ENVIRON["count"]"\", OWNER=\"yashan\", GROUP=\"yashan\", MODE=\"0666\""}' ; done
cd /etc/udev/rules.d
vi 99-yashan-yfs.rules
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c29b12abf14e73a9683d2e87857d", SYMLINK+="yfs/disk1", OWNER="yashan", GROUP="yashan", MODE="0666"
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c29ccc6980e255e25f4cb67c8542", SYMLINK+="yfs/disk2", OWNER="yashan", GROUP="yashan", MODE="0666"
KERNEL=="sd?", ENV{ID_SERIAL}=="36000c29ec3343c3c9d86fd0c4ea09827", SYMLINK+="yfs/disk3", OWNER="yashan", GROUP="yashan", MODE="0666"
# udevadm trigger
[root@yashan-74 yfs]# ls -l /dev/yfs
total 0
lrwxrwxrwx 1 root root 6 Nov 26 22:13 disk1 -> ../sdb
lrwxrwxrwx 1 root root 6 Nov 26 22:13 disk2 -> ../sdc
lrwxrwxrwx 1 root root 6 Nov 26 22:13 disk3 -> ../sdd
[root@yashan-74 yfs]# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 Nov 26 22:13 /dev/sda
brw-rw---- 1 root disk 8, 1 Nov 26 22:13 /dev/sda1
brw-rw---- 1 root disk 8, 2 Nov 26 22:13 /dev/sda2
brw-rw-rw- 1 yashan yashan 8, 16 Nov 26 22:13 /dev/sdb
brw-rw-rw- 1 yashan yashan 8, 32 Nov 26 22:13 /dev/sdc
brw-rw-rw- 1 yashan yashan 8, 48 Nov 26 22:13 /dev/sdd
9, 上传并解压安装介质
su - yashan
gunzip yashandb-23.5.1.100-linux-x86_64.tar.gz
tar -xvf yashandb-23.5.1.100-linux-x86_64.tar
[yashan@yashan-74 install]$ ll
total 639096
drwxrwxr-x 2 yashan yashan 21 Nov 3 11:02 bin
drwxrwxr-x 4 yashan yashan 26 Nov 26 23:12 conf
-rw-rw-r-- 1 yashan yashan 302105919 Nov 3 11:03 database-23.5.1.100-linux-x86_64.tar.gz
drwxrwxr-x 3 yashan yashan 19 Nov 3 11:02 depends
-rwxrwxr-x 1 yashan yashan 1035 Nov 3 11:03 install.sh
drwxrwxr-x 7 yashan yashan 91 Nov 26 23:25 om
drwxrwxr-x 2 yashan yashan 4096 Nov 3 11:02 plugins
-rw-r--r-- 1 yashan YASDBA 352317440 Nov 26 22:46 yashandb-23.5.1.100-linux-x86_64.tar
10, 图形化安装集群
支持命令行、图形化、交互式、Docker, 我选用图形化, 注意这里的图形并不是像OUI, 而启动一个golang写的web页面,用浏览器远程访问即可。
[yashan@yashan-74 install]$ cd /home/yashan/install/om
[yashan@yashan-74 om]$ ./bin/yasom --web --listen 172.20.23.74:9001
2025-11-26 22:57:56 INFO [console] yasom.go:147 Version: 23.5.1.100
2025-11-26 22:57:56 INFO [console] deploy.go:60 deploy manager starting...
2025-11-26 22:57:56 INFO [console] activity.go:29 activity manager starting...
2025-11-26 22:57:56 INFO [console] convert.go:119 opt.GroupConfig: map[]
2025-11-26 22:57:56 INFO [console] static.go:21 routing vue app
2025-11-26 22:57:56 INFO [console] web.go:21 Server listen on: 172.20.23.74:9001
[YASRPC] 2025/11/26 - 22:58:06 | 200 | 84.461µs | 172.20.22.235 | GET "/omweb"
[YASRPC] 2025/11/26 - 22:58:07 | 200 | 134.382µs | 172.20.22.235 | GET "/omweb/api/task/deploy"
浏览器访问 URL 172.20.23.74:9001即可



注意: 配置SCAN配置页有个注意事项,如共享集群网络通信链路地址和PUBLIC_NETWORK是子网网段,不是IP。
VIPs 配置的是每个个IP加掩码,以“,”分割;
SCAN_NAME 需要先配置好域名解析,如果没有DNS,我这里使用/etc/hosts解析,每个节点增加
vi /etc/hosts
# append for yashan YAC SCAN IP
172.20.23.76 yashan-scan
这里可能遇到的报错有:
YAS-05715 network(172.20.23.0) isinvalid, reason: noaccessible
YAS-05715 network(172.20.23.0/23) isinvalid, reason: subnet address conflct with netmask
YAS-00402 failed to translate hst name to address,errno -2, error message “Name or serivce not known”





从启动om的窗口可以看到操作日志,顺利的话,不到半小时可以完成。我这里因为ip和子网网段的问题浪费了5次重装,如果失败页面会提示错误, 点清理按钮,继续重来即可。
11. 验证集群
[yashan@yashan-74 conf]$ export YASCS_HOME=/data/yashan/yasdb_data/ycs/ce-1-1
[yashan@yashan-74 conf]$ ycsctl show config
Cluster name: yashandb_cluster, config version: 7
Cluster id: 8437e30abac987e3e947931f187bb67d
Network timeout: 30s
Disk heartbeat keep alive: 60s
Fence type: I/O Protection Algorithm
Default resource yasfs: enabled
Network: 172.20.22.0/23
Resource SCAN: enabled
SCAN name: yashan-scan, listening port: 1688
SCAN VIP: 172.20.23.76, ordinal number: 1
Resource vip: enabled
Databases in cluster:
Database yashandb:
resource id: 0
Database unique name: yashandb
Database name: yashandb
Start shell: start.sh
Stop shell: stop.sh
Instances in database:
yasdb instance name:yasdb-1-1, yasdb instance id:1
yasdb instance name:yasdb-1-2, yasdb instance id:2
Nodes in cluster:
Node name: yashan-74, yascs/yasfs inter connect URL: 10.10.10.74:1788, Node ID: 1
public service port: 1688
VIP: 172.20.23.64/23, home node: yashan-74
Node name: yashan-75, yascs/yasfs inter connect URL: 10.10.10.75:1788, Node ID: 2
public service port: 1688
VIP: 172.20.23.65/23, home node: yashan-75
[yashan@yashan-74 ~]$ ycsctl status
+-------------------+---------------------------------+---------------------------+-------------------------------------+
| Self Host ID | Cluster Master ID | YasFS Master ID | Active Host Count |
+-------------------+---------------------------------+---------------------------+-------------------------------------+
|1 |1 |1 |2 |
+-------------------+---------------------------------+---------------------------+-------------------------------------+
+---------+---------+---------+---------+-------------+--------------------+--------------------+-----------+-----------+
| Host ID | Target | YCS | YFS | VIP | DB_NAME | PDB_NAME | DB_STATE | IS_MASTER |
+---------+---------+---------+---------+-------------+--------------------+--------------------+-----------+-----------+
|1 |online |online |online |host1.online |yashandb |yashandb |online |TRUE |
+---------+---------+---------+---------+-------------+--------------------+--------------------+-----------+-----------+
|2 |online |online |online |host2.online |yashandb |yashandb |online |FALSE |
+---------+---------+---------+---------+-------------+--------------------+--------------------+-----------+-----------+
+---------------------------------------+---------------------------------------+---------------------------------------+
|SCAN VIP 1: host1.online | | |
+---------------------------------------+---------------------------------------+---------------------------------------+
[yashan@yashan-74 ~]$ yasboot cluster status -c yashandb -d
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | source_node | data_path |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| host0001 | ce | 1-1:1 | 29139 | open | normal | primary | 172.20.23.74:1688 | - | /data/yashan/yasdb_data/ce-1-1 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+-------------+--------------------------------+
| host0002 | ce | 1-2:2 | 27002 | open | normal | primary | 172.20.23.75:1688 | - | /data/yashan/yasdb_data/ce-1-2 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+-------------+--------------------------------+
12. 查看YFS (ASM )
[yashan@yashan-74 ce-1-1]$ yfscmd
YAS File System CMD Enterprise Edition Release 23.5.1.100 x86_64 037bc48c23
try help or ?.
YFSCMD > lsdg
id name type level au_size stat block_size total_mb free_mb usable_file_mb
0 SYSTEM SYSTEM 0 1.00MB MOUNTED 4096 51200 50938 50938
1 DG0 USER 0 1.00MB MOUNTED 4096 204800 202451 202451
YFSCMD > lsdsk
id interid name status fgid dgid au_size au_count total_mb free_mb redundancy path partners
0 0 SYSTEM_0 NORMAL 0 0 1.00MB 51200 51200 50938 EXTERNAL /dev/yfs/disk1
1 0 DG0_0 NORMAL 1 1 1.00MB 204800 204800 202451 EXTERNAL /dev/yfs/disk3
YFSCMD > exit
13. 验证连接VIP, SCAN IP
[yashan@yashan-74 yashan]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:b4:1b:8d brd ff:ff:ff:ff:ff:ff
inet 172.20.23.74/23 brd 172.20.23.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet 172.20.23.64/23 scope global secondary deprecated ens192
valid_lft forever preferred_lft forever
inet 172.20.23.76/23 scope global secondary deprecated ens192
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:feb4:1b8d/64 scope link
valid_lft forever preferred_lft forever
3: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:b4:55:79 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.74/24 brd 10.10.10.255 scope global noprefixroute ens256
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:feb4:5579/64 scope link
valid_lft forever preferred_lft forever
[yashan@yashan-74 ce-1-1]$ yasql sys/yashan_1234@172.20.23.64:1688 --- vip
YashanDB SQL Enterprise Edition Release 23.5.1.100 x86_64
Connected to:
YashanDB Server Enterprise Edition Release 23.5.1.100 x86_64 - Linux
SQL> exit
[yashan@yashan-74 ce-1-1]$ yasql sys/yashan_1234@172.20.23.76:1688 --- scan ip
YashanDB SQL Enterprise Edition Release 23.5.1.100 x86_64
Connected to:
YashanDB Server Enterprise Edition Release 23.5.1.100 x86_64 - Linux
SQL>
SQL> select * from gv$instance;
GROUP_ID GROUP_NODE_ID INST_ID STATUS VERSION STARTUP_TIME HOST_NAME DATA_HOME INSTANCE_NUMBER INSTANCE_NAME PARALLEL INSTANCE_ROLE IN_REFORM IGNORE_OPEN DATABASE_STATUS
----------- ------------- ----------- ------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- --------------- ---------------------------------------------------------------- -------------------- ---------------------------------------------------------------- --------- -------------------- ---------------------
0 0 1 OPEN Enterprise Edition Release 23.5.1.100 x86_64 2025-11-27 08:46:29.562398 yashan-74 /data/yashan/yasdb_data/ce-1-1 1 yasdb-1-1 true MASTER_ROLE NO false ACTIVE
0 0 2 OPEN Enterprise Edition Release 23.5.1.100 x86_64 2025-11-27 08:46:52.221901 yashan-75 /data/yashan/yasdb_data/ce-1-2 2 yasdb-1-2 true NORMAL_ROLE NO false ACTIVE
2 rows fetched.
14. 查看进程
[yashan@yashan-74 ~]$ ps -ef|grep yashan|grep -v grep
yashan 28267 1 0 08:45 ? 00:00:01 /data/yashan/yasdb_home/23.5.1.100/bin/yasagent --init -c yashandb -l 172.20.23.74:1676 --host-id host0001 -k -L /data/yashan/log -d
yashan 28294 1 0 08:45 ? 00:00:23 /data/yashan/yasdb_home/23.5.1.100/bin/yasom --init -c yashandb -l 172.20.23.74:1675 -k -L /data/yashan/log -d
root 28545 1 0 08:45 ? 00:00:00 sudo env LD_LIBRARY_PATH=/data/yashan/yasdb_home/23.5.1.100/lib /data/yashan/yasdb_home/23.5.1.100/bin/ycsrootagent start -H /data/yashan/yasdb_data/ycs/ce-1-1
root 28546 28545 1 08:45 ? 00:10:28 /data/yashan/yasdb_home/23.5.1.100/bin/ycsrootagent start -H /data/yashan/yasdb_data/ycs/ce-1-1
yashan 29035 1 1 08:46 ? 00:09:21 yascsm -H /data/yashan/yasdb_data/ycs/ce-1-1 -m NOMOUNT
yashan 29045 29035 3 08:46 ? 00:29:55 yascs -H /data/yashan/yasdb_data/ycs/ce-1-1 -m NOMOUNT
yashan 29139 1 10 08:46 ? 01:19:37 /data/yashan/yasdb_home/23.5.1.100/bin/yasdb NOMOUNT -D /data/yashan/yasdb_data/ce-1-1
[yashan@yashan-75 conf]$ ps -ef|grep yashan|grep -v grep
yashan 26464 1 0 08:45 ? 00:00:00 /data/yashan/yasdb_home/23.5.1.100/bin/yasagent --init -c yashandb -l 172.20.23.75:1676 --host-id host0002 -k -L /data/yashan/log -d
root 26865 1 0 08:46 ? 00:00:00 sudo env LD_LIBRARY_PATH=/data/yashan/yasdb_home/23.5.1.100/lib /data/yashan/yasdb_home/23.5.1.100/bin/ycsrootagent start -H /data/yashan/yasdb_data/ycs/ce-1-2
root 26866 26865 1 08:46 ? 00:09:53 /data/yashan/yasdb_home/23.5.1.100/bin/ycsrootagent start -H /data/yashan/yasdb_data/ycs/ce-1-2
yashan 26894 1 1 08:46 ? 00:09:15 yascsm -H /data/yashan/yasdb_data/ycs/ce-1-2 -m OPEN
yashan 26903 26894 3 08:46 ? 00:28:16 yascs -H /data/yashan/yasdb_data/ycs/ce-1-2 -m OPEN
yashan 27002 1 9 08:46 ? 01:17:57 /data/yashan/yasdb_home/23.5.1.100/bin/yasdb OPEN -D /data/yashan/yasdb_data/ce-1-2
Note: ps 进程显示的实例状态同【OPEN】guass系一样的问题,并非最新,如实例1错误的显示-m NOMOUNT.
到此安装完成,后期会记录相关更多功能的测试。
— over —