达梦数据库主备集群部署
1.1 项目背景
达梦数据库主备集群(数据守护 Data Watch)是一种集成化的高可用、高性能数据库解决方案。通过部署数据守护,可以在硬件故障、自然灾害等极端情况下,避免数据损坏、丢失,保障数据安全,并且可以快速恢复数据库服务。
本报告记录了一主一备两节点数据守护集群的完整部署过程,采用手动切换模式,即当主库发生故障时,由管理员手动将备库切换为主库继续提供服务。
1.2 部署目标
搭建两节点达梦数据库主备集群
实现主备库实时数据同步
配置守护进程和监视器实现集群状态监控
验证主备数据一致性
1.3 参考文档
《达梦数据库标准化部署实施方案》V2.8
DM8主备安装生产环境实战指南
达梦数据库数据守护集群安装部署手册
2.1 硬件与网络环境
项目 主库 (db0) 备库 (db1)
业务IP 192.168.21.132 192.168.21.131
操作系统 Kylin Linux Kylin Linux
数据库版本 DM8 V8 DM8 V8
2.2 端口规划
端口类型 主库 (db0) 备库 (db1)
数据库实例端口 (PORT_NUM) 5237 5237
MAL系统监听端口 (MAL_PORT) 7336 7336
守护进程通信端口 (MAL_DW_PORT) 7536 7536
实例监听守护进程端口 (MAL_INST_DW_PORT) 7436 7436
2.3 目录规划
目录 用途 说明
/home/dmdba/dmdbms 数据库软件安装目录 两台服务器均需安装
/home/dmdba/data/DAMENG 数据文件目录 实例数据存放位置
/dmdata/arch 归档日志目录 本地归档存放路径
/dmdata/dmbak 备份文件目录 脱机备份存放路径
2.4 实例规划
项目 主库 (db0) 备库 (db1)
数据库名 (DB_NAME) DAMENG DAMENG
实例名 (INSTANCE_NAME) DW0 DW1
页大小 (PAGE_SIZE) 32KB 32KB
字符集 (CHARSET) GB18030 GB18030
大小写敏感 是 是
日志文件大小 2048MB 2048MB
3.1 前置准备(两台服务器均需执行)
3.1.1 创建目录
mkdir -p /home/dmdba/data/DAMENG
mkdir -p /dmdata/arch
mkdir -p /dmdata/dmbak
chown -R dmdba:dinstall /home/dmdba/data /dmdata
3.1.2 确认 dmap 服务已启动
ps -ef | grep dmap
#若未启动,执行:./DmAPService start
备份还原时需要使用 AP 服务进行处理。
3.2 主库初始化(db0 执行)
3.2.1 初始化实例
进入达梦安装目录的 bin 下执行:
cd /home/dmdba/dmdbms/bin
./dminit path=/home/dmdba/data page_size=32 port_num=5237 \ db_name=DAMENG instance_name=DW0 log_size=2048 \ charset=1 case_sensitive=1 rlog_gen_for_huge=0 \ SYSDBA_PWD=‘’ SYSAUDITOR_PWD='’
3.2.2 首次启动完成内部初始化
重要:必须执行一次 open 启动,让数据库完成内部系统表初始化,否则 dmrman 将无法识别。
#前台启动(不加 mount)
./dmserver /home/dmdba/data/DAMENG/dm.ini
#等待出现 SYSTEM IS READY,然后按 Ctrl+C 停止
3.3 主库脱机备份(db0 执行)
3.3.1 确认实例已停止
ps -ef | grep dmserver | grep -v grep
3.3.2 执行全库备份
配置数据守护之前,必须先通过备份还原方式同步各数据库的数据,确保各数据库的数据保持完全一致。
./dmrman use_ap=2
RMAN> backup database ‘/home/dmdba/data/DAMENG/dm.ini’ backupset ‘/dmdata/dmbak/bakfull’;
RMAN> exit;
3.4 备份集拷贝(db0 执行)
scp -r /dmdata/dmbak/bakfull dmdba@192.168.21.131:/dmdata/dmbak/
3.5 备库还原恢复(db1 执行)
3.5.1 确认备库实例已停止
ps -ef | grep dmserver | grep -v grep
3.5.2 执行还原恢复
cd /home/dmdba/dmdbms/bin
./dmrman
RMAN> restore database ‘/home/dmdba/data/DAMENG/dm.ini’ from backupset ‘/dmdata/dmbak/bakfull’;
RMAN> recover database ‘/home/dmdba/data/DAMENG/dm.ini’ from backupset ‘/dmdata/dmbak/bakfull’;
RMAN> recover database ‘/home/dmdba/data/DAMENG/dm.ini’ update db_magic;
RMAN> exit;
通过备份还原方式同步各数据库的数据,确保各数据库的数据保持完全一致。
4.1 修改 dm.ini(主备均需执行)
编辑/home/dmdba/data/DAMENG/dm.ini,确保以下参数正确配置:
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
DW_INACTIVE_INTERVAL = 60
RLOG_SEND_APPLY_MON = 64
参数说明:
参数 值 说明
MAL_INI 1 打开 MAL 系统
ARCH_INI 1 打开归档配置
ALTER_MODE_STATUS 0 不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS 2 不允许备库 OFFLINE 表空间
DW_INACTIVE_INTERVAL 60 接收守护进程消息超时时间
RLOG_SEND_APPLY_MON 64 统计最近64次的日志发送信息
4.2 配置 dmmal.ini(主备内容完全相同)
vi /home/dmdba/data/DAMENG/dmmal.ini:
MAL_CHECK_INTERVAL = 87
MAL_CONN_FAIL_INTERVAL = 33
[MAL_INST1]
MAL_INST_NAME = DW0
MAL_HOST = 192.168.21.132
MAL_PORT = 7336
MAL_INST_HOST = 192.168.21.132
MAL_INST_PORT = 5237
MAL_DW_PORT = 7536
MAL_INST_DW_PORT = 7436
[MAL_INST2]
MAL_INST_NAME = DW1
MAL_HOST = 192.168.21.131
MAL_PORT = 7336
MAL_INST_HOST = 192.168.21.131
MAL_INST_PORT = 5237
MAL_DW_PORT = 7536
MAL_INST_DW_PORT = 7436
MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值。
4.3 配置 dmarch.ini(主备不同)
主库 (db0)
vi /home/dmdba/data/DAMENG/dmarch.ini:
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DW1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
备库(db1)
vi /home/dmdba/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DW0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 10240
4.4 配置 dmwatcher.ini(主备内容完全相同)
创建/home/dmdba/data/DAMENG/dmwatcher.ini:
[GRP_DW]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 120
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 120
INST_OGUID = 250120
INST_INI = /home/dmdba/data/DAMENG/dm.ini
INST_AUTO_RESTART = 0
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
DW_RECONNECT = 2
配置说明:
参数 值 说明
DW_TYPE GLOBAL 全局守护类型
DW_MODE MANUAL 手动切换模式
INST_OGUID 250120 守护系统唯一 OGUID 值
INST_AUTO_RESTART 0 关闭实例自动重启
DW_RECONNECT 2 主节点 core dump 结束前开始切主
5.1 启动主备实例(MOUNT 方式)
分别在主库和备库上执行:
#主库 db0 ./dmserver /home/dmdba/data/DAMENG/dm.ini mount
#备库 db1 ./dmserver /home/dmdba/data/DAMENG/dm.ini mount
5.2 设置 OGUID 和主备模式
5.2.1 主库(db0)
./disql SYSDBA/’********’@localhost:5237
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SP_SET_OGUID(250120);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
5.2.2 备库(db1)
./disql SYSDBA/’********’@localhost:5237
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SP_SET_OGUID(250120);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
系统通过 OGUID 值确定一个守护进程组,需确保数据库、守护进程和监视器配置相同的 OGUID 值。
5.3 启动守护进程(顺序:先备后主)
#备库 (db1) ./DmWatcherService start
#主库 (db0) ./DmWatcherService start
5.4 配置并启动监视器
5.4.1 创建监视器配置文件
创建/home/dmdba/dmdbms/bin/dmmonitor.ini:
MON_DW_CONFIRM = 0
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 200
MON_LOG_SPACE_LIMIT = 1024
[GRP_DW]
MON_INST_OGUID = 250120
MON_DW_IP = 192.168.21.132:7536
MON_DW_IP = 192.168.21.131:7536
5.4.2 启动监视器
./dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini
6.1 集群状态验证
在监视器界面输入show,确认以下状态:
检查项 预期状态
主库 WSTATUS OPEN
主库 ISTATUS OPEN
主库 IMODE PRIMARY
备库 WSTATUS OPEN
备库 ISTATUS OPEN
备库 IMODE STANDBY
归档状态 RSTAT VALID
6.2 数据同步验证
6.2.1 主库创建测试数据
./disql SYSDBA/‘’@localhost:5237
CREATE TABLE test_sync (
id INT PRIMARY KEY,
name VARCHAR(50),
create_time DATE
);
INSERT INTO test_sync VALUES (1, ‘达梦数据库’, SYSDATE);
COMMIT;
SELECT * FROM test_sync;
6.2.2 备库查询验证
./disql SYSDBA/'’@localhost:5237
SELECT * FROM test_sync;
若备库能查询到与主库一致的数据,则证明主备数据同步正常。
6.3 验证结果
验证项目 结果 说明
主库状态 PASS ISTATUS=OPEN, IMODE=PRIMARY
备库状态 PASS ISTATUS=OPEN, IMODE=STANDBY
归档状态 PASS RSTAT=VALID
数据同步 PASS 备库可查询到主库插入的数据
7.1 部署成果
本次部署成功完成以下工作:
1.✅ 在两台服务器上完成达梦数据库软件安装
2.✅ 主库(DW0)初始化并完成内部初始化
3.✅ 主库脱机全量备份
4.✅ 备库(DW1)脱机还原恢复
5.✅ 主备集群配置文件(dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini)配置完成
6.✅ OGUID 和主备模式设置完成
7.✅ 守护进程启动成功
8.✅ 监视器配置并启动
9.✅ 主备数据同步验证通过
7.2 集群信息汇总
项目 信息
集群名称 GRP_DW
OGUID 250120
切换模式 手动切换 (MANUAL)
主库实例 DW0 (192.168.21.132:5237)
备库实例 DW1 (192.168.21.131:5237)
监视器 非确认监视器 (MON_DW_CONFIRM=0)
文章
阅读量
获赞
