本文以DM7为例,演示达梦守护集群的部署
达梦数据守护集群(DM Data Watch,简称 DMDW)是达梦数据库为实现数据库级高可用与数据容灾的集成化解决方案。采用share nothing也就是主备独立存储(非共享存储) 架构,通过 MAL(消息访问层)通信层传输 Redo 日志,基于实时归档机制实现主备间数据同步。
[root@dwtest1 opt]# mkdir /home/dmdba
[root@dwtest1 opt]# mkdir -p /dbdata/dmdata
[root@dwtest1 opt]# mkdir -p /dbbak/dmbak
[root@dwtest1 opt]# mkdir -p /dbarch/dmarch
[root@dwtest1 opt]# groupadd dinstall
[root@dwtest1 opt]# useradd -g dinstall -m -d /home/dmdba/dm -s /bin/bash dmdba
[root@dwtest1 opt]# chown -R dmdba:dinstall /home/dmdba /dbdata /dbbak /dbarch
#磁盘测速
[root@~]# dd if=/dev/zero of=/dbdata/test bs=32k count=4k oflag=dsync
#查看防火墙状态
[root@~]# systemctl status firewalld.service
#停止防火墙服务
[root@~]# systemctl stop firewalld.service
#禁用防火墙服务
[root@~]# systemctl disable firewalld.service
[root@~]# vi /etc/security/limits.conf
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 131072
dmdba hard nproc 131072
dmdba soft nofile 131072
dmdba hard nofile 131072
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
dmdba soft memlock unlimited
dmdba hard memlock unlimited
[root@~]#vi /etc/sysctl.conf
添加如下内容
kernel.core_pattern=/dbbak/core-%e-%p-%t-%s
vm.swappiness=10
vm.overcommit_memory=0
#当物理内存小于等于64G时,设置系统保留的最小空闲内存量为1153434(单位KB)
#当物理内存大于64G时,设置系统保留的最小空闲内存量为物理内存的2%;
vm.min_free_kbytes = 物理内存的2%(单位KB)
保存后执行
#保存后执行如下命令生效
[root@~]# sysctl -p
[root@~]# vi /etc/rc.local
添加如下内容(内容加在 exit 0 之前)
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
固态盘建议磁盘调度算法设置为noop或none,机械磁盘建议为dead1ine,从而优化数据库的磁盘性能。
该操作需让操作系统厂家进行调整,永久生效。
如个人临时调整可参考以下方式:
#手动临时调整 sdc 为盘符,需要对应数据库使用的真实盘符
固态磁盘:
[root@~]# echo noop > /sys/block/sdc/queue/scheduler
[root@~]# echo none > /sys/block/sdc/queue/scheduler
机械磁盘:
[root@~]# echo deadline > /sys/block/sdc/queue/scheduler
#查看当前selinux的状态:
[root@~]# /usr/sbin/sestatus -v
[root@~]# vi /etc/selinux/config
设置SELINUX=disabled,重启机器生效。
整合的环境检查测试脚本
#!/bin/bash
# ==================================================
# 达梦数据库(DM7/8)部署前环境准备脚本V1.1
# 适用系统:CentOS / RHEL 7+
# 运行要求:root 或其他超权用户
# author:dw
# time :2026-07-23
# ==================================================
set -e # 遇到错误立即退出
# ------------------------- 颜色定义 -------------------------
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# ------------------------- 颜色打印函数 -------------------------
print_title() {
echo -e "${BLUE}========== $* ==========${NC}"
}
print_step() {
echo -e "${BLUE}>>> $*${NC}"
}
print_success() {
echo -e "${GREEN} $*${NC}"
}
print_warning() {
echo -e "${YELLOW} 警告:$*${NC}"
}
print_error() {
echo -e "${RED}错误:$*${NC}"
}
print_info() {
echo -e " $*"
}
# ------------------------- 定义变量 -------------------------
DM_USER="dmdba"
DM_GROUP="dinstall"
DM_HOME="/home/dmdba/dm" # 用户家目录(安装目录)
DATA_DIR="/dbdata/dmdata" # 数据文件目录
BAK_DIR="/dbbak/dmbak" # 备份目录
ARCH_DIR="/dbarch/dmarch" # 归档目录
# 各配置文件的备份后缀
BACKUP_SUFFIX=".dm_prepare.bak"
# ------------------------- 检查 root 权限 -------------------------
if [ "$EUID" -ne 0 ]; then
print_error "请使用 root 用户执行此脚本!"
exit 1
fi
print_title "开始达梦数据库环境准备"
# ------------------------- 1. 创建用户、组及目录 -------------------------
print_step "1. 创建用户组 ${DM_GROUP} ..."
if getent group "$DM_GROUP" > /dev/null 2>&1; then
print_success "组 ${DM_GROUP} 已存在,跳过。"
else
groupadd "$DM_GROUP"
print_success "组 ${DM_GROUP} 创建成功。"
fi
print_step "创建用户 ${DM_USER} ..."
if id "$DM_USER" > /dev/null 2>&1; then
print_success "用户 ${DM_USER} 已存在,跳过。"
else
useradd -g "$DM_GROUP" -m -d "$DM_HOME" -s /bin/bash "$DM_USER"
print_success "用户 ${DM_USER} 创建成功,家目录:${DM_HOME}"
fi
print_step "创建数据、备份、归档目录 ..."
mkdir -p "$DATA_DIR" "$BAK_DIR" "$ARCH_DIR"
chown -R "${DM_USER}:${DM_GROUP}" "$DM_HOME" "$DATA_DIR" "$BAK_DIR" "$ARCH_DIR"
print_success "目录创建完成,权限已设置。"
# ------------------------- 2. 关闭防火墙 -------------------------
print_step "2. 关闭防火墙(firewalld)..."
if systemctl is-active --quiet firewalld; then
systemctl stop firewalld
systemctl disable firewalld
print_success "防火墙已停止并禁用。"
else
print_success "防火墙当前未运行,跳过。"
fi
# ------------------------- 3. 调整用户资源限制(limits.conf) -------------------------
print_step "3. 配置 /etc/security/limits.conf ..."
LIMITS_FILE="/etc/security/limits.conf"
if [ -f "$LIMITS_FILE" ]; then
cp -p "$LIMITS_FILE" "${LIMITS_FILE}${BACKUP_SUFFIX}"
print_success "已备份原文件至 ${LIMITS_FILE}${BACKUP_SUFFIX}"
fi
# 追加或覆盖 $DM_USER 的配置(先删除可能已有的 $DM_USER 行,再添加)
sed -i "/^$DM_USER[[:space:]]/d" "$LIMITS_FILE"
cat >> "$LIMITS_FILE" <<EOF
$DM_USER soft as unlimited
$DM_USER hard as unlimited
$DM_USER soft fsize unlimited
$DM_USER hard fsize unlimited
$DM_USER soft nproc 131072
$DM_USER hard nproc 131072
$DM_USER soft nofile 131072
$DM_USER hard nofile 131072
$DM_USER soft core unlimited
$DM_USER hard core unlimited
$DM_USER soft data unlimited
$DM_USER hard data unlimited
$DM_USER soft memlock unlimited
$DM_USER hard memlock unlimited
EOF
print_success "limits.conf 配置已添加。"
# ------------------------- 4. 调整系统内核参数(sysctl.conf) -------------------------
print_step "4. 配置 /etc/sysctl.conf ..."
SYSCTL_FILE="/etc/sysctl.conf"
if [ -f "$SYSCTL_FILE" ]; then
cp -p "$SYSCTL_FILE" "${SYSCTL_FILE}${BACKUP_SUFFIX}"
print_success "已备份原文件至 ${SYSCTL_FILE}${BACKUP_SUFFIX}"
fi
# 计算 vm.min_free_kbytes
MEM_TOTAL_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}')
MEM_TOTAL_MB=$((MEM_TOTAL_KB / 1024))
MEM_TOTAL_GB=$((MEM_TOTAL_MB / 1024))
if [ "$MEM_TOTAL_GB" -le 64 ]; then
MIN_FREE_KB=1153434
else
MIN_FREE_KB=$((MEM_TOTAL_KB * 2 / 100))
fi
# 删除可能已存在的同名参数(避免重复)
sed -i "/^kernel.core_pattern=/d" "$SYSCTL_FILE"
sed -i "/^vm.swappiness=/d" "$SYSCTL_FILE"
sed -i "/^vm.overcommit_memory=/d" "$SYSCTL_FILE"
sed -i "/^vm.min_free_kbytes=/d" "$SYSCTL_FILE"
cat >> "$SYSCTL_FILE" <<EOF
kernel.core_pattern=/dbbak/core-%e-%p-%t-%s
vm.swappiness=10
vm.overcommit_memory=0
vm.min_free_kbytes=${MIN_FREE_KB}
EOF
print_success "sysctl.conf 配置已添加(vm.min_free_kbytes = ${MIN_FREE_KB} KB)。"
# 使配置生效
sysctl -p
print_success "sysctl 配置已生效。"
# ------------------------- 5. 禁止透明大页 -------------------------
print_step "5. 禁止透明大页(Transparent HugePages)..."
# 立即生效
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
print_success "当前已禁用透明大页。"
# 设置开机自动禁用(写入 /etc/rc.local)
RC_LOCAL="/etc/rc.local"
if [ -f "$RC_LOCAL" ]; then
chmod +x "$RC_LOCAL"
if ! grep -q "transparent_hugepage/defrag" "$RC_LOCAL"; then
sed -i '/^exit 0/i echo never > /sys/kernel/mm/transparent_hugepage/defrag\necho never > /sys/kernel/mm/transparent_hugepage/enabled' "$RC_LOCAL"
print_success "已写入 ${RC_LOCAL},重启后生效。"
else
print_success "${RC_LOCAL} 中已存在透明大页配置,跳过。"
fi
else
print_warning "${RC_LOCAL} 不存在,无法设置开机自动禁用。请手动配置。"
fi
# ------------------------- 6. 磁盘 I/O 调度算法(需人工干预) -------------------------
print_step "6. 磁盘 I/O 调度算法(需手动设置)"
print_info "根据数据库使用的磁盘类型,建议执行以下命令(请替换 sdX 为实际盘符):"
print_info " 固态硬盘: echo none > /sys/block/sdX/queue/scheduler"
print_info " 机械硬盘: echo deadline > /sys/block/sdX/queue/scheduler"
print_warning "如需永久生效,请咨询操作系统管理员配置udev规则或写入rc.local。"
print_info "(当前步骤仅给出建议,脚本未自动执行,请根据实际情况手动操作。)"
# ------------------------- 7. 关闭 SELinux -------------------------
print_step "7. 关闭 SELinux ..."
SELINUX_FILE="/etc/selinux/config"
if [ -f "$SELINUX_FILE" ]; then
cp -p "$SELINUX_FILE" "${SELINUX_FILE}${BACKUP_SUFFIX}"
print_success "已备份原文件至 ${SELINUX_FILE}${BACKUP_SUFFIX}"
sed -i 's/^SELINUX=.*/SELINUX=disabled/' "$SELINUX_FILE"
print_success "已设置 SELINUX=disabled,需重启系统后生效。"
else
print_warning "${SELINUX_FILE} 不存在,请手动确认 SELinux 状态。"
fi
# ------------------------- 完成提示 -------------------------
print_title "环境准备脚本执行完毕"
print_info "请检查输出中是否有错误或警告。"
print_warning "为使 SELinux 更改生效,建议重启系统。"
print_success "重启后,使用 ${DM_USER} 用户登录,即可开始安装达梦数据库。"
[root@dwtest1 ~]# mount -o loop /opt/dm7_20251014_x86_rocky4.2_64.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only
[root@dwtest1 ~]# su - dmdba
Last login: Thu Jul 23 19:54:29 PDT 2026 on pts/0
[dmdba@dwtest1 ~]ls -ltr
total 615789
-r-xr-xr-x 1 root root 2353064 Oct 14 2025 DM_Install.pdf
-r-xr-xr-x 1 root root 628214467 Oct 14 2025 DMInstall.bin
[dmdba@dwtest1 mnt]$ ./DMInstall.bin -i
Please select the installer’s language (E/e:English C/c:Chinese) [E/e]:c
解压安装程序…
欢迎使用达梦数据库安装程序是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [6]:21安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 1236M
请选择安装目录 [/home/dmdba/dm/dmdbms]:
可用空间: 22G
是否确认安装路径(/home/dmdba/dm/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y安装前小结
安装位置: /home/dmdba/dm/dmdbms
所需空间: 1236M
可用空间: 22G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):[root@dwtest1 ~]# /home/dmdba/dm/dmdbms/script/root/root_installer.sh
[dmdba@dwtest1 ~] ./dminit PATH=/dbdata/dmdata_new PAGE_SIZE=32 EXTENT_SIZE=16 CASE_SENSITIVE=Y LOG_SIZE=2048 SYSDBA_PWD=Dwtest_11 SYSAUDITOR_PWD=Dwtest_11
initdb V7
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2026-10-14
log file path: /dbdata/dmdata_new/DAMENG/DAMENG01.loglog file path: /dbdata/dmdata_new/DAMENG/DAMENG02.log
write to dir [/dbdata/dmdata_new/DAMENG].
create dm database success. 2026-07-23 20:10:17
[dmdba@dwtest1 DAMENG]cat dm.ini|grep ARCH_INI ARCH_INI = 1 #dmarch.ini
[dmdba@dwtest1 DAMENG]$ cat dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP2_RT_02
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /dbarch/dmarch_new
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024
修改配置文件
mal文件配置
[dmdba@dwtest2 DAMENG]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP2_RT_01
MAL_HOST = 192.168.1.100
MAL_PORT = 61241
MAL_INST_HOST = 192.168.1.100
MAL_INST_PORT = 5237
MAL_DW_PORT = 52242
[MAL_INST2]
MAL_INST_NAME = GRP2_RT_02
MAL_HOST = 192.168.1.101
MAL_PORT = 61242
MAL_INST_HOST = 192.168.1.101
MAL_INST_PORT = 5237
MAL_DW_PORT = 52241
[dmdba@dwtest2 DAMENG]$ cat dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP2_RT_01
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /dbarch/dmarch_new
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024
启动主库到mount状态至主库状态
[dmdba@dwtest1 bin]$ ./dmserver /dbdata/dmdata_new/DAMENG/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V7 03117834163-20251014-296526-10003 startup…
License will expire on 2026-10-14
ckpt lsn: 56424
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
mount启动并启动到主库模式
[dmdba@dwtest1 bin]$ ./disql SYSDBA/Dwtest_11:5237
服务器[LOCALHOST:5237]:处于普通配置状态
登录使用时间: 4.566(毫秒)
disql V7
SQL>
SQL> sp_set_para_value(1,‘ALTER_MODE_STATUS’,1); --使实例到可操作状态
DMSQL 过程已成功完成
已用时间: 3.620(毫秒). 执行号:1.
SQL> sp_set_oguid(453332); --指定数据库组id
DMSQL 过程已成功完成
已用时间: 1.870(毫秒). 执行号:2.
SQL> alter database primary; – 启动数据库到主库
操作已执行
已用时间: 1.731(毫秒). 执行号:3.
SQL> sp_set_para_value(1,‘ALTER_MODE_STATUS’,0); --使实例到不可操作状态
DMSQL 过程已成功完成
已用时间: 1.975(毫秒). 执行号:4.
同主库操作2.1.1
同主库操作2.1.2
[dmdba@dwtest2 DAMENG] rlwrap ./dmrman
dmrman V7
RMAN> restore database ‘/dbdata/dmdata_new/DAMENG/dm.ini’ from backupset ‘/dbbak/dmbak_new’
restore database ‘/dbdata/dmdata_new/DAMENG/dm.ini’ from backupset ‘/dbbak/dmbak_new’
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[4].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[3].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[2].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[1].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[0].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running, write dmrman info.
RESTORE DATABASE CHECK…
RESTORE DATABASE,dbf collect…
RESTORE DATABASE,dbf refresh …
RESTORE BACKUPSET [/dbbak/dmbak_new] START…
total 4 packages processed…
RESTORE DATABASE,UPDATE ctl file…
RESTORE DATABASE,REBUILD key file…
RESTORE DATABASE,CHECK db info…
RESTORE DATABASE,UPDATE db info…
total 8 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 10630.560(ms)
RMAN>
RMAN> recover database ‘/dbdata/dmdata_new/DAMENG/dm.ini’ from backupset ‘/dbbak/dmbak_new’
recover database ‘/dbdata/dmdata_new/DAMENG/dm.ini’ from backupset ‘/dbbak/dmbak_new’
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[4].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[3].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[2].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[1].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[0].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running, write dmrman info.
EP[0] max_lsn: 47206
RESTORE RLOG CHECK…
CMD END.CODE:[603],DESC:[备份集[/dbbak/dmbak_new]备份过程中未产生日志]
备份集[/dbbak/dmbak_new]备份过程中未产生日志
recover successfully!
time used: 7006.175(ms)
RMAN>
RMAN> recover database ‘/dbdata/dmdata_new/DAMENG/dm.ini’ update db_magic
recover database ‘/dbdata/dmdata_new/DAMENG/dm.ini’ update db_magic
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[4].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[3].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[2].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[1].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running…[0].
checking if the database under system path [/dbdata/dmdata_new/DAMENG] is running, write dmrman info.
EP[0] max_lsn: 47206
[-8305]:未执行还原操作,禁止更新magic或者从备份集恢复
RMAN>
主备mal文件需要配置一致
[dmdba@dwtest2 DAMENG]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP2_RT_01
MAL_HOST = 192.168.1.100
MAL_PORT = 61241
MAL_INST_HOST = 192.168.1.100
MAL_INST_PORT = 5237
MAL_DW_PORT = 52242
[MAL_INST2]
MAL_INST_NAME = GRP2_RT_02
MAL_HOST = 192.168.1.101
MAL_PORT = 61242
MAL_INST_HOST = 192.168.1.101
MAL_INST_PORT = 5237
MAL_DW_PORT = 52241
[dmdba@dwtest2 DAMENG]$ cat dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP2_RT_01[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /dbarch/dmarch_new
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024
mount启动并调整至备库模式
[dmdba@dwtest2 ~]./disql SYSDBA/Dwtest_11:5237
服务器[LOCALHOST:5237]:处于普通配置状态
登录使用时间: 6.631(毫秒)
disql V7
SQL> sp_set_para_value(1,‘ALTER_MODE_STATUS’,1);
DMSQL 过程已成功完成
已用时间: 12.583(毫秒). 执行号:1.
SQL> sp_set_oguid(453332);
DMSQL 过程已成功完成
已用时间: 4.084(毫秒). 执行号:2.
SQL> alter database standby;
操作已执行
已用时间: 1.996(毫秒). 执行号:0.
SQL> sp_set_para_value(1,‘ALTER_MODE_STATUS’,0);
DMSQL 过程已成功完成
已用时间: 1.817(毫秒). 执行号:3.
SQL>
SQL> exit
[dmdba@dwtest2 bin]$ ./disql SYSDBA/Dwtest_11:5237
服务器[LOCALHOST:5237]:处于备库配置状态
登录使用时间: 2.401(毫秒)
disql V7
主备库均配置
[dmdba@dwtest2 DAMENG]$ cat dmwatcher.ini
[GRP2]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453332
INST_INI = /dbdata/dmdata_new/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/dmserverd_new start
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
DW_FAILOVER_FORCE = 1
INST_SERVICE_IP_CHECK = 1
初始化成控制文件
[dmdba@dwtest1 bin]$ ./dmctlcvt TYPE=3 SRC=/dbdata/dmdata_new/DAMENG/dmwatcher.ini DEST=/dbdata/dmdata_new/DAMENG
DMCTLCVT V7
convert txt to ctl success!
[dmdba@dwtest1 bin]$ cp /dbdata/dmdata_new/DAMENG/GRP2/dmwatcher.ctl /dbdata/dmdata_new/DAMENG
主库生产配置文件后,scp到备库
[dmdba@dwtest1 DAMENG]$ scp /dbdata/dmdata_new/DAMENG/dmwatcher.ctl 192.168.1.101:/dbdata/dmdata_new/DAMENG/
配置启动脚本
[dmdba@dwtest1 bin]$ cp service_template/DmWatcherService ./dmwatcherd_new
修改配置文件位置
保存后启动
[root@dwtest1 bin]# ./dmwatcherd_new start
Starting dmwatcherd_new: Last login: Sat Jul 25 19:00:24 PDT 2026 on pts/2
配置非确认监视器
[dmdba@dwtest1 bin] cat dmmonitor_new.ini
MON_DW_CONFIRM = 0 #非确认监视器模式
MON_LOG_PATH = /home/dmdba/dm/dmdbms_v7/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP2]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.1.100:52241 #MAL_HOST和MAL_DW_PORT
MON_DW_IP = 192.168.1.101:52242
[dmdba@dwtest1 bin]$ ./dmmonitor dmmonitor_new.ini
登录监视器后执行switchover 命令
可以看到主备切换
文章
阅读量
获赞
