【1688】崖山集群YAC安装备忘

环境准备

主机资源

共享存储配置

使用UDEV进行绑定,此处与官网方法不同,实现目的是一样的

bash 复制代码
for i in `cat /proc/partitions | awk {'print $4'} |grep sd`; do echo "### $i: `/usr/lib/udev/scsi_id -g -u -d  /dev/$i`"; done

### sdb: 36000c2911f7af4d6f8543a0a7409aa11
### sdc: 36000c2906f67cf4c00b648db328aa6b7
### sdd: 36000c29a675003793720a2a07b2a511d
bash 复制代码
vi yashan-device-rule.rules
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c2911f7af4d6f8543a0a7409aa11", SYMLINK+="yas/data", OWNER="yashan", GROUP="YASDBA", MODE="0666", OPTIONS="nowatch"
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c2906f67cf4c00b648db328aa6b7", SYMLINK+="yas/vote", OWNER="yashan", GROUP="YASDBA", MODE="0666", OPTIONS="nowatch"
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29a675003793720a2a07b2a511d", SYMLINK+="yas/ycr", OWNER="yashan", GROUP="YASDBA", MODE="0666", OPTIONS="nowatch"

重启udev

bash 复制代码
/sbin/udevadm control --reload-rules 
/sbin/udevadm trigger --type=devices --action=change

查看结果

bash 复制代码
[root@yasdb1 ~]# ls -l /dev/yas/
lrwxrwxrwx 1 root root 6 Mar 10 11:29 data -> ../sdb
lrwxrwxrwx 1 root root 6 Mar 10 11:29 vote -> ../sdc
lrwxrwxrwx 1 root root 6 Mar 10 11:29 ycr -> ../sdd

依赖项配置


配置本地yum源进行包安装:

bash 复制代码
vi /etc/yum.repos.d/local_yum.repo 
[local_yum]
name=local
baseurl=file:///tmp/local_yum
enable=1
gpgcheck=0

yum clean all

操作系统参数

bash 复制代码
root# ulimit -c unlimited 
root# vi /etc/security/limits.conf
## 添加以下信息并保存:
  - soft core unlimited
  - hard core unlimited


为保证重启后上述参数生效,执行以下命令:
# sysctl --system

设置主机名hostname

服务器名称要求如下:

• 名称由字母、数字以及下划线组成,且必须以字母开头,长度为[4,64]个字符。

• 同一个YashanDB共享集群中的服务器名称不能相同。

• 建议每台服务器上只运行一个实例,若一台服务器需运行多个实例则要求将服务器名称设置为[3,63]个字符。

一节点执行:

#hostnamectl set-hostname yasdb1

二节点执行:

hostnamectl set-hostname yasdb2

关闭交换分区

使用sysctl -a | grep swappiness查看当前状态,建议设置为0以减少内存交换,避免影响系统性能。

bash 复制代码
root#sysctl -w vm.swappiness=0
 echo "vm.swappiness=0">> /etc/sysctl.conf

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

使用cat /proc/sys/net/ipv4/ip_local_port_range查看连接可用的本地端口范围,下限值建议大于30000以减少端口冲突。

bash 复制代码
# sysctl -w net.ipv4.ip_local_port_range='32768 60999' 
# echo "net.ipv4.ip_local_port_range=32768 60999" >> /etc/sysctl.conf

调整进程的VMA上限

使用sysctl -a|grep vm.max_map_count查看当前上限值,建议大于2000000以增大数据库进程可拥有的VMA大小。

bash 复制代码
# sysctl -w vm.max_map_count=2000000
# echo "vm.max_map_count=2000000" >> /etc/sysctl.conf

调整资源限制值

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

配置大页内存

1.执行如下命令查看当前大页内存配置:(回显信息以实际为准)

bash 复制代码
$ grep -i huge /proc/meminfo
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

• AnonHugePages: 当前透明大页使用的内存总量,可参考本文档关闭。

• HugePages_Total: 大页池中页面总数。

• HugePages_Free: 大页池中空闲页面数。

• HugePages_Rsvd: 系统预留(reserved)的页面数。表示应用已申请了对应数量的大页,但由于应用尚未访问这些页面,系统还没有真正从物理内存分配这些页面。应用最多还能申请HugePages_Free - HugePages_Rsvd个大页。

• HugePages_Surp: 当开启nr_overcommit_hugepages时,系统允许换出一些大页,使得系统支持应用申请超出大页池容量的页面,如果应用频繁访问大页,可能对性能存在负面影响。

• Hugepagesize: 大页的尺寸,不同平台支持的大页尺寸有差异,x86平台支持2M、1G,通常为2M。

若HugePages_Total = 0、HugePages_Free = 0或HugePages_Free - HugePages_Rsvd < YashanDB需求,则需修改系统配置,启用大页内存或增加大页内存池容量。

  1. 估算大页内存需求。首先估算YashanDB的大页内存需求:

• 根据配置计算YashanDB所需内存总量UserSize,即上述所有配置项的总和(未配置的项目按默认值计算)

• 如需规划使用MMS表空间,还需估计MMS表空间所需内存总量MMSSize。

YashanDB至少需要大页内存空间LargePageSize = (UserSize + MMSSize + 64M) * 1.2。

YashanDB需要的大页内存页面数HugePages = Ceil(LargePageSize / Hugepagesize)。

3. 启用大页内存并根据上述估算值更改相关配置:

本文以大页尺寸 2M、申请16个大页(即规划32M大页内存)为例,生产环境配置请以实际为准。

编辑/etc/sysctl.conf文件:

bash 复制代码
# vi /etc/sysctl.conf
追加以下配置:
vm.nr_hugepages=16
vm.nr_overcommit_hugepages=0
  1. 重启系统生效。
bash 复制代码
 #reboot

关闭透明大页

  1. 部分操作系统默认开启了透明大页选项,可执行以下命令确认:
bash 复制代码
## Red Hat Enterprise Linux 内核
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

## 其他内核
# cat /sys/kernel/mm/transparent_hugepage/enabled

• 若显示[always] madvise never或always [madvise] never,则说明透明大页已开启。

• 若显示always madvise [never],则说明透明大页已关闭。

  1. 执行vi /etc/default/grub,在GRUB_CMDLINE_LINUX中添加或修改参数
bash 复制代码
transparent_hugepage=never。
   GRUB_TIMEOUT=5
   GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
   GRUB_DEFAULT=saved
   GRUB_DISABLE_SUBMENU=true
   GRUB_TERMINAL_OUTPUT="console"
   GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"
   GRUB_DISABLE_RECOVERY="true"
  1. 通过以下指令检查当前系统的引导类型:
bash 复制代码
# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
两种引导的启动文件路径分别为:
•	BIOS:/boot/grub2/grub.cfg
•	UEFI:/boot/efi/EFI/\<distro_name>/grub.cfg,distro_name为系统发行版本名称,例如ubuntu、fedora、debian等。
  1. 执行grub2--mkconfig指令重新配置grub.cfg。
bash 复制代码
## BIOS 引导
# grub2-mkconfig -o /boot/grub2/grub.cfg
## UEFI 引导
# grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg
  1. 重启操作系统,使配置永久生效。
bash 复制代码
# reboot
  1. 验证透明大页已关闭:
bash 复制代码
## Red Hat Enterprise Linux 内核
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

## 其他内核
# cat /sys/kernel/mm/transparent_hugepage/enabled

应显示always madvise [never]。

关闭防火墙

bash 复制代码
## 关闭防火墙
# systemctl stop firewalld 
## 关闭开机自启
# systemctl disable firewalld

开启ssh服务

检查所有服务器上的SSH服务是否已打开:

bash 复制代码
# systemctl status sshd.service

如输出信息中无active (running)内容,请参照如下命令开启SSH服务:

bash 复制代码
# systemctl start sshd.service

清理环境

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

bash 复制代码
# ipcrm -a

创建安装用户

bash 复制代码
# useradd -d /home/yashan -m yashan
# passwd yashan

配置sudo免密

bash 复制代码
## 对root用户赋权并打开/etc/sudoers文件
# cd /etc
# ll sudoers
-r--r----- 1 root root 4365 Oct 28 19:06 sudoers
# chmod +w sudoers
# vi /etc/sudoers

## 在文件的最后添加如下内容后保存退出
# yashan  ALL=(ALL)	NOPASSWD:ALL

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

# groupadd YASDBA
# usermod -a -G YASDBA yashan

目录划分

bash 复制代码
# cd /
# mkdir data
# cd data
# mkdir yashan
# chown -R yashan:yashan /data/yashan

SELinux

bash 复制代码
修改/etc/selinux/config,禁用SELinux
SELINUX=disabled

软件介质

安装前需准备以下安装介质,并放至目录 /home/yashan/install中。

https://download.yashandb.com/download

解压软件包(仅在节点1上执行)

以yashan用户进行解压操作

$ cd /home/yashan/install

$ tar zxf yashandb-23.2.9.100-linux-x86_64.tar.gz

安装方式一:命令行安装

生成部署文件

bash 复制代码
$ cd /home/yashan/install

$ ./bin/yasboot package ce gen --cluster ljcdb \
 -u yashan -p 123456 --ip 192.168.1.151,192.168.1.152 --port 22 \
 --install-path /data/yashan/yasdb_home \
 --data-path /data/yashan/yasdb_data \
 --log-path /data/yashan/log \
 --begin-port 1688 \
 --node 2 \
 --data /dev/yas/data \
 --vote /dev/yas/vote  \
 --ycr /dev/yas/ycr

如果报ssh验证失败,可能是上方标红密码不对,或.ssh/config文件权限不对,正确权限为600

执行安装

bash 复制代码
[yashan@yasdb1 install]$ ./bin/yasboot package install -t hosts.toml
checking install profile.toml...
install version: yashandb 23.2.9.101
host0001 100% [====================================================================]    9s
host0002 100% [====================================================================]    9s
update host to yasom...

部署数据库

bash 复制代码
[yashan@yasdb1 install]$ ./bin/yasboot cluster deploy -t ljcdb.toml --yfs-force-create
+---------------------------------------------------------------------------------------------------------+
| type | uuid             | name               | hostid | index | status  | return_code | progress | cost |
+---------------------------------------------------------------------------------------------------------+
| task | 24a1bf229418bb4e | DeployYasdbCluster | -      | ljcdb | SUCCESS | 0           | 100      | 64   |
+------+------------------+--------------------+--------+-------+---------+-------------+----------+------+
task completed, status: SUCCESS

配置环境变量(两个节点操作)

bash 复制代码
[yashan@yasdb1 install]$ cd /data/yashan/yasdb_home/23.2.9.101/conf/
[yashan@yasdb1 conf]$ ls
ljcdb.bashrc  profile.toml
[yashan@yasdb1 conf]$ cat ljcdb.bashrc >> ~/.bashrc
[yashan@yasdb1 conf]$ source ~/.bashrc
bash 复制代码
#具体路径以实际值为准
export YASCS_HOME=/data/yashan/yasdb_data/ycs/ce-1-1
export YASDB_HOME=/data/yashan/yasdb_home/23.2.9.101
export PATH=$YASDB_HOME/bin:$PATH 
export LD_LIBRARY_PATH=${YASDB_HOME}/lib:$LD_LIBRARY_PATH
export YASDB_DATA=/data/yashan/yasdb_data/ce-1-1  

查看安装后的状态

bash 复制代码
[yashan@yasdb1 conf]$ yasboot cluster password set -n Aio_89.dy -c ljcdb        
+-------------------------------------------------------------------------------------------------------+
| type | uuid             | name             | hostid | index | status  | return_code | progress | cost |
+-------------------------------------------------------------------------------------------------------+
| task | 720fcfed97acbe0a | YasdbPasswordSet | -      | ljcdb | SUCCESS | 0           | 100      | 2    |
+------+------------------+------------------+--------+-------+---------+-------------+----------+------+
task completed, status: SUCCESS


[yashan@yasdb1 conf]$ yasboot cluster status -c ljcdb -d
+-------------------------------------------------------------------------------------------------------------------------------------------------+
| hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address     | data_path                      |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
| host0001 | ce        | 1-1:1  | 28504 | open            | normal          | primary       | 192.168.1.151:1688 | /data/yashan/yasdb_data/ce-1-1 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+--------------------+--------------------------------+
| host0002 | ce        | 1-2:2  | 25758 | open            | normal          | primary       | 192.168.1.152:1688 | /data/yashan/yasdb_data/ce-1-2 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+--------------------+--------------------------------+
[yashan@yasdb1 conf]$


[yashan@yasdb1 ~]$ yasql sys/Aio_89.dy
YashanDB SQL Enterprise Edition Release 23.2.9.101 x86_64

Connected to:
YashanDB Server Enterprise Edition Release 23.2.9.101 x86_64 -- Linux

SQL> select inst_id,status,startup_time from gv$instance;

    INST_ID STATUS        STARTUP_TIME                                                     
----------- ------------- ---------------------------------------------------------------- 
          1 OPEN          2025-03-10 15:15:20.116283                                      
          2 OPEN          2025-03-10 15:15:35.593741                                      

2 rows fetched.

SQL> select inst_id,status,database_name from gv$database;

    INST_ID STATUS                            DATABASE_NAME                                                    
----------- --------------------------------- ---------------------------------------------------------------- 
          1 NORMAL                            ljcdb                                                           
          2 NORMAL                            ljcdb                                                           

启动守护进程

bash 复制代码
通过命令行方式安装的YashanDB默认不开启守护进程monit相关功能,如需开启monit功能,需参考本文完成以下操作。
$ cd /home/yashan/install
$ ./bin/yasboot monit start ---cluster ljcdb

[yashan@yasdb1 ~]$ cd install/
[yashan@yasdb1 install]$ ./bin/yasboot monit start --cluster ljcdb
+-------------------------------------------------------------------------------------------------------+
| type | uuid             | name             | hostid | index | status  | return_code | progress | cost |
+-------------------------------------------------------------------------------------------------------+
| task | 22dea9ab6f3cc273 | MonitParentStart | -      | ljcdb | SUCCESS | 0           | 100      | 1    |
+------+------------------+------------------+--------+-------+---------+-------------+----------+------+
task completed, status: SUCCESS


$ yasboot cluster restart -c yashandb -m mount
 type | uuid             | name                | hostid | index    | status  | return_code | progress | cost
-------------------------------------------------------------------------------------------------------------
 task | 78d6449df62594b5 | ReStartYasdbCluster | -      | yashandb | SUCCESS | 0           | 100      | 3
------+------------------+---------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS

手动启动yasom和yasagent进程

bash 复制代码
$ yasboot process yasom start -c ljcdb
$ yasboot process yasagent start -c ljcdb

待yasom和yasagent进程启动后,才能启动数据库

bash 复制代码
$ yasboot cluster start -c ljcdb
yasboot cluster start -c ljcdb  ###两个节点一起启动
ycsctl start ycs ##只启动本节点
相关推荐
SelectDB24 分钟前
SelectDB 实时分析性能突出,宝舵成本锐减与性能显著提升的双赢之旅
大数据·数据库·数据分析
V+zmm1013424 分钟前
电器维修系统小程序+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计
PawSQL29 分钟前
推理模型对SQL理解能力的评测:DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet
java·数据库·人工智能·sql·sql优化·pawsql·deepseek
*星星之火*33 分钟前
【GPT入门】第12课 FunctionCall 生成数据库sql代码
数据库·sql·gpt
陈卓41040 分钟前
Redis-缓存穿透&击穿&雪崩
数据库·redis·缓存
泡泡Java1 小时前
Redis离线安装(内网,源码安装)
数据库·redis·缓存
想做富婆1 小时前
存储过程和自定义函数在银行信贷业务中的应用(oracle)
数据库·存储过程·银行贷款业务
珹洺1 小时前
数据库系统概论(三)数据库系统的三级模式结构
java·运维·服务器·数据库·oracle
不知真不只1 小时前
数据库---sqlite3
数据库
Huooya1 小时前
Spring的基础事务注解@Transactional
数据库·spring·面试