达梦DSC集群是达梦数据库的高可用共享存储集群方案,2节点部署是最常用的基础架构。手动部署需要逐台操作服务器、配置共享存储、调整系统参数,耗时久且容易出错,通过脚本一键部署可以大幅简化流程。

部署前准备
在开始执行脚本前,需要完成以下基础准备:
- 两台服务器,系统建议为CentOS 7及以上,配置相同
- 共享存储设备,已分配给两台服务器,可正常识别
- 达梦数据库安装包,已上传至两台服务器的同一目录
- root用户权限,用于执行系统配置和安装操作
一键部署脚本核心逻辑
脚本主要包含环境检查、依赖安装、共享存储配置、数据库安装、集群配置、服务启动六个模块,以下是核心代码实现:
环境检查模块
#!/bin/bash
# 检查系统版本
check_system() {
os_version=$(cat /etc/redhat-release | grep -oE "[0-9]+\.[0-9]+")
if [[ $os_version < "7.0" ]]; then
echo "系统版本过低,建议升级到CentOS 7及以上"
exit 1
fi
echo "系统版本检查通过"
}
# 检查共享存储是否识别
check_shared_storage() {
storage_dev=$(lsblk | grep -E "sd[b-z]" | head -1 | awk '{print $1}')
if [[ -z $storage_dev ]]; then
echo "未识别到共享存储设备"
exit 1
fi
echo "共享存储设备为 /dev/$storage_dev"
}共享存储分区与格式化
# 配置共享存储分区
config_storage() {
# 假设共享存储设备为/dev/sdb,创建两个分区,一个用于dcr,一个用于vote
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart dcr 0 1G
parted /dev/sdb mkpart vote 1G 2G
parted /dev/sdb mkpart data 2G 100%
# 绑定裸设备
raw /dev/raw/raw1 /dev/sdb1
raw /dev/raw/raw2 /dev/sdb2
raw /dev/raw/raw3 /dev/sdb3
# 设置裸设备权限
chown dmdba:dmdba /dev/raw/raw*
echo "共享存储配置完成"
}达梦数据库安装与集群配置
# 安装达梦数据库
install_dm() {
dm_pkg="/opt/dm8_setup_rh7_64_ent.tar.gz"
tar -xf $dm_pkg -C /opt/
cd /opt/dm8_setup_rh7_64_ent
./DMInstall.bin -i -silent -installPath /dm8
echo "达梦数据库安装完成"
}
# 配置2节点DSC集群参数
config_dsc() {
# 节点1配置
cat > /dm8/dsc_config/dm.ini << EOF
INSTANCE_NAME = DSC1
PORT_NUM = 5236
MAL_INI = 1
DCR_INI = /dm8/dsc_config/dmdcr.ini
EOF
# 节点2配置
cat > /dm8/dsc_config/dm.ini << EOF
INSTANCE_NAME = DSC2
PORT_NUM = 5236
MAL_INI = 1
DCR_INI = /dm8/dsc_config/dmdcr.ini
EOF
echo "DSC集群配置完成"
}脚本执行步骤
将脚本保存为deploy_dsc2.sh,按以下步骤执行:
- 将脚本上传至两台服务器的
/root目录 - 两台服务器均执行
chmod +x deploy_dsc2.sh赋予执行权限 - 先在主节点执行
./deploy_dsc2.sh master,完成主节点部署 - 再在从节点执行
./deploy_dsc2.sh slave,完成从节点部署 - 脚本执行完成后,执行
/dm8/bin/dmserver /dm8/dsc_config/dm.ini DCR_INI=/dm8/dsc_config/dmdcr.ini启动集群服务
部署后验证
集群启动后,可以通过以下方式验证部署是否成功:
- 登录任意节点数据库,执行
select * from v$dsc_node;,查看两个节点状态是否正常 - 在两台服务器上分别查看集群服务进程,确认
dmserver进程正常运行 - 测试高可用能力,停止其中一个节点,验证另一个节点是否能正常提供服务
注意:脚本中的路径、设备名、端口等参数需要根据实际环境调整,生产环境部署前建议先在测试环境验证脚本可用性。