#目录划分
# 服务器目录规划
在安装YashanDB服务端之前,需要先规划以下目录,并对安装用户进行授权。
安装用户必须具备以下所有目录的全部权限。
# 安装目录
YashanDB采用集群多服务器并行安装模式,只需在一台服务器上创建安装目录,用于下载和解压软件包。
本安装手册中,安装目录规划在/home/yashan下,由yashan用户执行软件包下载时自行创建。
# HOME目录和DATA目录
所有YashanDB的实例节点都必须规划HOME目录和DATA目录,且安装用户必须拥有相应目录的全部权限。
HOME目录:YashanDB的产品目录,用于存放YashanDB所提供的命令、数据库运行所需的库及各关键组件。在安装操作中,该目录将作为--install-path参数的值。安装完成后YashanDB会在该目录下按规则生成$YASDB_HOME。
DATA目录:YashanDB的数据目录,用于存放数据库的各类系统数据文件、部分日志文件和配置文件,用户数据也默认存储在该目录下。但对于共享集群,所有的数据文件和redo文件均需保存在共享存储上,DATA目录将只用于存储实例运行相关的配置文件、日志文件等数据。在安装操作中,该目录将作为--data-path参数的值。安装完成后YashanDB会在该目录下按规则生成$YASDB_DATA。
本安装手册中,HOME目录和DATA目录的示例值均规划在/data/yashan下,可执行如下命令创建相应路径并授权:
# 创建/data/yashan目录
# cd /
# mkdir -p data/yashan
# 直接基于父目录进行授权即可
# chown -R yashan:yashan /data/yashan
# 创建HOME目录,完整的HOME目录为/data/yashan/yasdb_home
# su yashan
$ cd /data/yashan
$ mkdir yasdb_home
# 创建DATA目录,完整的DATA目录为/data/yashan/yasdb_data
$ mkdir yasdb_data
# 运行日志目录
YashanDB的运行日志目录,用于存放数据库运行过程中产生的日志文件,包括数据库的run.log和slow.log、yasom和yasagent的日志。
为避免运行日志与数据文件IO相互影响,建议将数据库的运行日志目录与DATA目录配置到不同的物理盘上。同时,运行日志目录可以按需根据以下场景进行规划:
按规划统一存放
规划一个目录,用于存放run.log、slow.log以及yasom和yasagent的日志。
在安装操作中,该目录将作为--data-path参数的值。
按规划分开存放
规划不同目录,分别存放run.log、slow.log、yasom和yasagent的日志。
在安装操作中,可以将其中一个目录(例如yasom和yasagent的日志的规划目录)将作为--log-path参数的值,生成配置文件{集群名称}.toml后按需修改中另外两类日志目录相关参数再执行后续的安装部署操作,也可以等安装完成后修改对应的配置参数调整run.log和slow.log的存放目录。
采用默认机制
不规划运行日志目录,YashanDB将默认在HOME目录下创建子目录log(根据本手册示例,则为/data/yashan/yasdb_home/log)存放run.log、slow.log以及yasom和yasagent的日志。
在安装操作中,无需指定--log-path参数。
# 绑定LUN(共享集群部署)
本步骤仅适用于使用共享存储的共享集群部署场景,其他场景请略过。
实际部署环境可能与示例不同,请参考示例调整,请勿将以下配置直接用于生产环境。若为主备集群部署,需为主集群和备集群分别规划并绑定LUN。
YashanDB要求共享存储规划如下两类磁盘,且所有磁盘应被绑定至同一目录,该目录将作为--disk-found-path参数的值,本文采用默认值/dev/yfs作为示例。
系统盘
用于集群管理,仅支持1、3或5块相同大小的磁盘,每块磁盘容量至少1G(当系统盘数量为1块,并且AU Size配置为32M时,系统盘大小至少为2G),此类磁盘的绝对路径将作为--system-data参数的值,以
,分隔多个磁盘,例如--system-data /dev/yfs/sys0,/dev/yfs/sys1,/dev/yfs/sys2。数据盘
用于保存集群业务数据,1块或多块相同大小的磁盘,请根据实际业务需求规划其数量和容量,此类磁盘的绝对路径将作为--data参数的值,以
,分隔多个磁盘,例如--data /dev/yfs/data0,/dev/yfs/data1,/dev/yfs/data2。
本文不对共享存储的组网和存储划分提供操作指引,请管理员根据共享存储厂商提供的安装指导操作。本文假定3块系统盘 + 1块数据盘,共享存储上已划分4个LUN并已通过多路径的方式挂载,规划如下:
| LUN | 磁盘类型 | 规划绑定路径(示例值) |
|---|---|---|
| /dev/mapper/lun03-sys0 | 系统盘 | /dev/yfs/sys0 |
| /dev/mapper/lun04-sys1 | 系统盘 | /dev/yfs/sys1 |
| /dev/mapper/lun05-sys2 | 系统盘 | /dev/yfs/sys2 |
| /dev/mapper/lun01-data0 | 数据盘 | /dev/yfs/data0 |
绑定目录(/dev/yfs)与磁盘名称(data0、sys0等)均为示例值,请根据实际业务需求调整,但命名时需注意:
- 绑定后磁盘的绝对路径(例如
/dev/yfs/sys0)长度不得超过31字节。 - 绑定目录和磁盘的绝对路径均将作为
yasboot package ce gen命令的相应参数值,如有修改,请在执行yasboot package ce gen时使用实际值。
请以root用户在集群所有服务器上执行下述LUN绑定操作:
# 方式一:通过多路径绑定
# 步骤1:生成配置文件
在root目录下创建名称为
genDevRuleByUUID.sh的脚本:# cd ~ # vi genDevRuleByUUID.sh输入如下内容,并根据部署环境,修改
DEVICES各设备路径,修改TARGETS指定各设备绑定名称,应与DEVICES参数一一对应,修改YFS_DISK_DIR为绑定目录,保存退出:#/bin/bash # 请修改为各设备路径 DEVICES=("/dev/mapper/lun01-data0" "/dev/mapper/lun03-sys0" "/dev/mapper/lun04-sys1" "/dev/mapper/lun05-sys2") # 请按 DEVICES 数组**顺序**指定这些设备绑定的名称,建议名称为与业务相关的名称 TARGETS=("data0" "sys0" "sys1" "sys2") # 指定绑定的目录 YFS_DISK_DIR="yfs" # 请保持默认,请确保 yashan 用户已存在 USER="yashan" GROUP="yashan" UGROUP="$USER:$GROUP" if [ ${#TARGETS[@]} != ${#DEVICES[@]} ] then echo "DEVICES and TARGETS count does not match" exit 1 fi if [ ${#TARGETS[@]} == 0 ] then echo "no targets found" exit 1 fi curDir=$(cd "$(dirname "$0")";pwd) rm -f $curDir/yashan-device-rule.rules count=${#TARGETS[@]} for ((i = 0; i < $count; i ++)) do device=${DEVICES[$i]} target_name=${TARGETS[$i]} target="${YFS_DISK_DIR}/${target_name}" str1="$device:`udevadm info --query=all --name=$device | grep DM_UUID`" str2=${str1#*=} echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${str2}\",SYMLINK+=\"$target\",OWNER=\"$USER\",GROUP=\"$GROUP\",MODE=\"0660\",RUN+=\"/bin/sh -c 'chown -R $UGROUP $target'\"" >> $curDir/yashan-device-rule.rules done执行脚本,生成配置文件:
# sh ./genDevRuleByUUID.sh脚本执行成功后,会在当前路径生成名为
yashan-device-rule.rules的绑定配置文件,内容如下,实际部署时内容可能有差异:# cat yashan-device-rule.rules KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36d039ea000a2231f0000e7d9668d7b4a",SYMLINK+="yfs/data0",OWNER="yashan",GROUP="yashan",MODE="0660",RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yfs/data0'" KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36d039ea000a2231f0000e7dd668d7b68",SYMLINK+="yfs/sys0",OWNER="yashan",GROUP="yashan",MODE="0660",RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yfs/sys0'" KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36d039ea000a233b90000e358668d7caf",SYMLINK+="yfs/sys1",OWNER="yashan",GROUP="yashan",MODE="0660",RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yfs/sys1'" KERNEL=="dm-*",ENV{DM_UUID}=="mpath-36d039ea000a233b90000e35a668d7cbf",SYMLINK+="yfs/sys2",OWNER="yashan",GROUP="yashan",MODE="0660",RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yfs/sys2'"SYMLINK为绑定设备的别名,检查是否为预期绑定目标。
# 步骤2:部署配置文件
执行如下命令部署绑定配置文件:
# cp yashan-device-rule.rules /etc/udev/rules.d/yashan-device-rule.rules
# 步骤3:重启服务器
绑定配置文件的生效需要重启服务器:
# systemctl reboot
# 步骤4:检查绑定结果
执行如下命令,确认所有绑定已生效,用户和组均为
yashan:# ls -l /dev/yfs/* lrwxrwxrwx 1 yashan yashan 7 Jul 11 14:44 data0 -> ../dm-5 lrwxrwxrwx 1 yashan yashan 7 Jul 11 14:44 sys0 -> ../dm-7 lrwxrwxrwx 1 yashan yashan 7 Jul 11 14:44 sys1 -> ../dm-4 lrwxrwxrwx 1 yashan yashan 7 Jul 11 14:44 sys2 -> ../dm-6并检查它们指向设备的用户和组均为
yashan,且权限为0660:# ls -l /dev/dm-4 brw-rw-rw- 1 yashan yashan 253, 4 Jul 11 14:44 /dev/dm-4 # 其他设备类似在集群所有服务器上执行以下命令,确认各服务器上所有绑定的多路径WWID一致。
# 对比各服务器上的输出结果是否对应一致 # /lib/udev/scsi_id --whitelisted --device=/dev/yfs/data # /lib/udev/scsi_id --whitelisted --device=/dev/yfs/sys0 # /lib/udev/scsi_id --whitelisted --device=/dev/yfs/sys1 # /lib/udev/scsi_id --whitelisted --device=/dev/yfs/sys2若两台服务器上同一路经所对应的WWID不一致,说明其挂载的磁阵不是同一个LUN,需联系网络管理员处理。
# 步骤5(可选):修改多路径配置文件
使用基于SCSI持久预留的IO Fencing功能前,必须在共享集群的每个服务器上完成本操作。
确认已安装mpathpersist工具。
# mpathpersist -h修改每个服务器的/etc/multipath.conf文件,添加"reservation_key file"一项到“defaults”部分。
示例非完整文件内容,实际修改时仅按说明添加选项,请勿修改其他配置项。
defaults { reservation_key file }
# 方式二:通过SCSI设备的WWID绑定
Caution:
- 推荐使用多路径方式绑定存储设备,使用WWID绑定存储设备不满足高可用需求,不建议用于生产环境。
- 使用WWID绑定存储设备时,要求在“/dev”目录下仅有一块设备的WWID与之相同,否则会绑定不成功。
使用WWID绑定存储设备时,“步骤1:生成配置文件”的操作与使用多路径绑定的操作步骤不同,“步骤5(可选):修改多路径配置文件”无需执行,其他操作步骤相同。
# 生成配置文件
在root目录下创建名称为genDevRuleByWWID.sh的脚本文件:
# cd # vi genDevRuleByWWID.sh输入如下内容后保存退出:
#/bin/bash # 请修改为各设备路径 DEVICES=("/dev/sdc" "/dev/sdd" "/dev/sde" "/dev/sdf") # 请按 DEVICES 数组**顺序**指定这些设备绑定的名称,建议名称为与业务相关的名称 TARGETS=("data0" "sys0" "sys1" "sys2") # 指定绑定的目录 YFS_DISK_DIR="yfs" # 请保持默认,请确保 yashan 用户已存在 USER="yashan" GROUP="yashan" UGROUP="$USER:$GROUP" if [ ${#TARGETS[@]} != ${#DEVICES[@]} ] then echo "DEVICES and TARGETS count does not match" exit 1 fi if [ ${#TARGETS[@]} == 0 ] then echo "no targets found" exit 1 fi curDir=$(cd "$(dirname "$0")";pwd) rm -f $curDir/yashan-device-rule.rules count=${#TARGETS[@]} for ((i = 0; i < $count; i ++)) do device=${DEVICES[$i]} target_name=${TARGETS[$i]} target="${YFS_DISK_DIR}/${target_name}" echo "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d /dev/\$parent\", RESULT==\"`/usr/lib/udev/scsi_id -g -u -d $device`\",SYMLINK+=\"$target\",OWNER=\"$USER\", GROUP=\"$GROUP\", MODE=\"0660\", RUN+=\"/bin/sh -c 'chown -R $UGROUP /dev/$target'\"" >> $curDir/yashan-device-rule.rules done执行脚本,生成配置文件:
# sh ./genDevRuleByWWID.sh脚本执行成功后,会在当前路径生成名称为yashan-device-rule.rules的绑定配置文件,内容如下:
# cat yashan-device-rule.rules KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88dd000002b4",SYMLINK+="yfs/data0",OWNER="yashan", GROUP="yashan", MODE="0660", RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yfs/data0'" KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88be000002b3",SYMLINK+="yfs/sys0",OWNER="yashan", GROUP="yashan", MODE="0660", RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yfs/data0'" KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88be000002b5",SYMLINK+="yfs/sys1",OWNER="yashan", GROUP="yashan", MODE="0660", RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yfs/data0'" KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88be000002b6",SYMLINK+="yfs/sys2",OWNER="yashan", GROUP="yashan", MODE="0660", RUN+="/bin/sh -c 'chown -R yashan:yashan /dev/yfs/data0'"

