#目录划分

# 服务器目录规划

在安装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目录配置到不同的物理盘上。同时,运行日志目录可以按需根据以下场景进行规划:

  • 按规划统一存放

    1. 规划一个目录,用于存放run.log、slow.log以及yasom和yasagent的日志。

    2. 在安装操作中,该目录将作为--data-path参数的值。

  • 按规划分开存放

    1. 规划不同目录,分别存放run.log、slow.log、yasom和yasagent的日志。

    2. 在安装操作中,可以将其中一个目录(例如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要求共享存储上必须规划出下述三类磁盘:

  • 数据盘:一块或多块,根据业务实际情况规划,其中一块数据盘的路径将作为yasboot package ce gen命令的data选项参数。
  • 投票盘:一块,建议规划为1G及以上,该盘路径将作为yasboot package ce gen命令的vote选项参数。
  • YCR盘:一块,建议规划为1G及以上,该盘路径将作为yasboot package ce gen命令的YCR选项参数。

基于共享存储的品牌不同,操作方式相应不同,本安装手册不对共享存储的组网和存储划分操作进行描述,建议由公司网络管理员依据所购品牌提供的安装指导完成组网和存储划分。

本安装手册既定共享存储上已划分三个LUN并已通过多路径的方式挂载,多路径名称(YashanDB要求划分LUN时所指定路径长度不超过31B)如下:

  • /dev/mapper/storraid5:数据盘,按规划需绑定至/dev/yas/data路径。
  • /dev/mapper/storraid10:投票盘,按规划需绑定至/dev/yas/vote路径。
  • /dev/mapper/storraid15:YCR盘,按规划需绑定至/dev/yas/ycr路径。

以下将描述在所有服务器上进行LUN绑定的操作过程:

# 通过多路径方式绑定存储设备

# 步骤1:生成配置文件

  1. 在root目录下创建名称为genDevRuleByUUID.sh的脚本文件:

    # cd
    # vi genDevRuleByUUID.sh
    
  2. 输入如下内容后保存退出:

    #/bin/bash
    
    curDir=$(cd "$(dirname "$0")";pwd)
    rm -f $curDir/yashan-device-rule.rules
    for i in storraid5 storraid10 storraid15;
    do
    str1="$i:`udevadm info --query=all --name=/dev/mapper/$i | grep DM_UUID`"
    str2=${str1#*=}
    echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${str2}\",SYMLINK+=\"yas/${i}\",OWNER=\"yashan\",GROUP=\"YASDBA\",MODE=\"0666\"" ''  >> $curDir/yashan-device-rule.rules
    done
    
  3. 执行脚本,生成配置文件:

    # sh ./genDevRuleByUUID.sh
    

    脚本执行成功后,会在当前路径生成名称为yashan-device-rule.rules的绑定配置文件,内容如下:

    # cat yashan-device-rule.rules
    KERNEL=="dm-*",ENV{DM_UUID}=="mpath-366c146e100955f46eaa458fc0000006b",SYMLINK+="yas/storraid5",OWNER="yashan",GROUP="YASDBA",MODE="0666" 
    KERNEL=="dm-*",ENV{DM_UUID}=="mpath-366c146e100955f46eaa49e8c0000006d",SYMLINK+="yas/storraid10",OWNER="yashan",GROUP="YASDBA",MODE="0666" 
    KERNEL=="dm-*",ENV{DM_UUID}=="mpath-366c146e100955f46eaa4c6040000006f",SYMLINK+="yas/storraid15",OWNER="yashan",GROUP="YASDBA",MODE="0666"
    

    SYMLINK为绑定设备的别名,可修改为业务可理解的名称,例如修改为如下内容:

    # vi yashan-device-rule.rules
    KERNEL=="dm-*",ENV{DM_UUID}=="mpath-366c146e100955f46eaa458fc0000006b",SYMLINK+="yas/data",OWNER="yashan",GROUP="YASDBA",MODE="0666" 
    KERNEL=="dm-*",ENV{DM_UUID}=="mpath-366c146e100955f46eaa49e8c0000006d",SYMLINK+="yas/vote",OWNER="yashan",GROUP="YASDBA",MODE="0666" 
    KERNEL=="dm-*",ENV{DM_UUID}=="mpath-366c146e100955f46eaa4c6040000006f",SYMLINK+="yas/ycr",OWNER="yashan",GROUP="YASDBA",MODE="0666"
    

# 步骤2:部署配置文件

执行如下命令部署绑定配置文件:

# cp yashan-device-rule.rules /etc/udev/rules.d/yashan-device-rule.rules

# 步骤3:重启服务器

绑定配置文件的生效需要重启服务器:

# systemctl reboot

# 步骤4:检查绑定结果

  1. 执行如下命令,确认/dev/yas/data/dev/yas/vote/dev/yas/ycr已存在,且权限位为666。

    # ls -l /dev/yas/*
    
  2. 在两台服务器上分别执行以下命令,确认两台服务器上/dev/yas/data/dev/yas/vote/dev/yas/ycr对应的WWID是否一致。

    ## 对比两台服务器上的输出结果是否对应一致
    # /lib/udev/scsi_id --whitelisted  --device=/dev/yas/data
    # /lib/udev/scsi_id --whitelisted  --device=/dev/yas/vote
    # /lib/udev/scsi_id --whitelisted  --device=/dev/yas/ycr
    

    若两台服务器上同一路经所对应的WWID不一致,说明其挂载的磁阵不是同一个LUN,需联系网络管理员处理。

# 通过SCSI设备的WWID绑定存储设备

Caution:

  • 推荐使用多路径方式绑定存储设备,使用WWID绑定存储设备不满足高可用需求,不建议用于生产环境。
  • 使用WWID绑定存储设备时,要求在“/dev”目录下仅有一块设备的WWID与之相同,否则会绑定不成功。

仅生成配置文件的步骤与使用多路径绑定的操作步骤不同。

# 生成配置文件

  1. 在root目录下创建名称为genDevRuleByWWID.sh的脚本文件:

    # cd
    # vi genDevRuleByWWID.sh
    
  2. 输入如下内容后保存退出:

    #/bin/bash
    
    curDir=$(cd "$(dirname "$0")";pwd)
    rm -f $curDir/yashan-device-rule.rules
    for i in sdc sdd sde;
    do
    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 /dev/$i`\",SYMLINK+=\"yas/$i\",OWNER=\"yashan\", GROUP=\"YASDB\", MODE=\"0666\"" >> $curDir/yashan-device-rule.rules
    done
    
  3. 执行脚本,生成配置文件:

    # 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+="yas/sdc",OWNER="yashan", GROUP="YASDB", MODE="0660"
    KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88be000002b3",SYMLINK+="yas/sdd",OWNER="yashan", GROUP="YASDB", MODE="0660"
    KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88be000002b5",SYMLINK+="yas/sde",OWNER="yashan", GROUP="YASDB", MODE="0660"
    

    SYMLINK为绑定设备的别名,可修改为业务可理解的名称,例如修改为如下内容:

    # vi yashan-device-rule.rules
    KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88dd000002b4",SYMLINK+="yas/data",OWNER="yashan", GROUP="YASDB", MODE="0660"
    KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88be000002b3",SYMLINK+="yas/vote",OWNER="yashan", GROUP="YASDB", MODE="0660"
    KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="36a01c8d100cd2c1b777f88be000002b5",SYMLINK+="yas/ycr",OWNER="yashan", GROUP="YASDB", MODE="0660"
    
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流