一、部署前准备
1.1 硬件与环境要求
操作系统
所有节点必须使用 相同版本的操作系统 (含内核版本)。
建议统一为 CentOS 7/8 或麒麟等国产化操作系统。
CPU 架构
所有节点 CPU 架构必须一致 (如均为 x86_64 或 ARM64)。
网络环境
心跳网络建议:
使用 千兆及以上网络 ;
配置 双网卡绑定(bond) 提升冗余;
心跳 IP 与业务 IP 分离;
推荐使用独立交换机构建心跳内网。
磁盘 IO
推荐使用 高性能 SSD ;
需提前测试磁盘读写性能是否满足业务并发需求。
1.2 集群规划(示例)
项目
A 节点(主)
B 节点(备)
业务 IP
172.16.1.1
172.16.1.2
心跳 IP
192.168.1.1
192.168.1.2
实例名
GRP1_RT_01
GRP1_RT_02
数据库端口
5236
5236
MAL 端口
5336
5336
守护进程监听端口
5436
5436
实例守护端口
5536
5536
OGUID
45331
45331
守护组
GRP1
GRP1
安装目录
/dm
/dm
实例目录
/dm/data/
/dm/data/
确认监视器 部署在第三台机器:IP 10.10.10.10
二、主节点(A 机器)配置
2.1 初始化实例并备份
1 2 3 4 5 6 7 8 /dm/bin/dminit PATH=/dm/data/ INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 /dm/bin/dmserver /dm/data/DAMENG/dm.ini /dm/bin/disql SYSDBA/***@172.16.1.1:5236
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ALTER DATABASE MOUNT;ALTER DATABASE ARCHIVELOG;ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm/data/DAMENG/arch,TYPE=LOCAL,FILE_SIZE=1024,SPACE_LIMIT=51200' ;ALTER DATABASE OPEN ;BACKUP DATABASE BACKUPSET '/dm/data/DAMENG/bak/BACKUP_FILE' ; SP_SET_PARA_VALUE(2 , 'PORT_NUM' , 5236 ); SP_SET_PARA_VALUE(2 , 'DW_INACTIVE_INTERVAL' , 60 ); SP_SET_PARA_VALUE(2 , 'ALTER_MODE_STATUS' , 0 ); SP_SET_PARA_VALUE(2 , 'ENABLE_OFFLINE_TS' , 2 ); SP_SET_PARA_VALUE(2 , 'MAL_INI' , 1 ); SP_SET_PARA_VALUE(2 , 'RLOG_SEND_APPLY_MON' , 64 );
关闭前台 dmserver 进程(后续通过服务启动)
2.2 配置归档文件 dmarch.ini
1 2 3 4 5 6 7 8 9 10 11 ARCH_WAIT_APPLY = 0 [ARCHIVE_LOCAL] ARCH_TYPE = LOCALARCH_DEST = /dm/data/DAMENG/arch/ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIMEARCH_DEST = GRP1_RT_02
2.3 创建 MAL 配置 dmmal.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 MAL_CHECK_INTERVAL = 10 MAL_CONN_FAIL_INTERVAL = 10 MAL_TEMP_PATH = /dm/data/malpath/MAL_BUF_SIZE = 512 MAL_SYS_BUF_SIZE = 2048 MAL_COMPRESS_LEVEL = 0 [MAL_INST1] MAL_INST_NAME = GRP1_RT_01MAL_HOST = 192.168 .1.1 MAL_PORT = 5336 MAL_INST_HOST = 172.16 .1.1 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 [MAL_INST2] MAL_INST_NAME = GRP1_RT_02MAL_HOST = 192.168 .1.2 MAL_PORT = 5336 MAL_INST_HOST = 172.16 .1.2 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536
2.4 创建守护进程配置 dmwatcher.ini
1 2 3 4 5 6 7 8 9 10 11 12 [GRP1] DW_TYPE = GLOBALDW_MODE = AUTODW_ERROR_TIME = 20 INST_ERROR_TIME = 20 INST_RECOVER_TIME = 60 INST_OGUID = 45331 INST_INI = /dm/data/DAMENG/dm.iniINST_AUTO_RESTART = 1 INST_STARTUP_CMD = /dm/bin/dmserverRLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0
2.5 拷贝备份到备机
1 scp -r /dm/data/DAMENG/bak/BACKUP_FILE dmdba@192.168.1.2:/dm/data/DAMENG/bak/
2.6 注册系统服务
1 2 3 4 5 /dm/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dm/data/DAMENG/dm.ini -m mount /dm/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm/data/DAMENG/dmwatcher.ini
三、备节点(B 机器)配置
3.1 初始化实例(仅结构)
1 /dm/bin/dminit PATH=/dm/data/ INSTANCE_NAME=GRP1_RT_02 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048
3.2 恢复数据
1 2 3 /dm/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/DAMENG/bak/BACKUP_FILE'" /dm/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/DAMENG/bak/BACKUP_FILE'" /dm/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
3.3 配置 dmarch.ini
1 2 3 4 5 6 7 8 9 10 11 ARCH_WAIT_APPLY = 0 [ARCHIVE_LOCAL] ARCH_TYPE = LOCALARCH_DEST = /dm/data/DAMENG/arch/ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIMEARCH_DEST = GRP1_RT_01
3.4 配置 dm.ini
确保以下参数正确:
1 2 3 4 5 6 7 8 INSTANCE_NAME = GRP1_RT_02PORT_NUM = 5236 DW_INACTIVE_INTERVAL = 60 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 MAL_INI = 1 ARCH_INI = 1 RLOG_SEND_APPLY_MON = 64
dmmal.ini 和 dmwatcher.ini 与主节点 完全一致 ,直接复制即可。
3.5 注册服务
1 2 /dm/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dm/data/DAMENG/dm.ini -m mount /dm/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm/data/DAMENG/dmwatcher.ini
四、配置确认监视器(第三台机器)
4.1 创建 dmmonitor.ini
1 2 3 4 5 6 7 8 9 10 MON_DW_CONFIRM = 1 MON_LOG_PATH = ../logMON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 512 MON_LOG_SPACE_LIMIT = 2048 [GRP1] MON_INST_OGUID = 45331 MON_DW_IP = 192.168 .1.1 :5436 MON_DW_IP = 192.168 .1.2 :5436
建议同时创建非确认监视器配置 dmmonitor_manual.ini(MON_DW_CONFIRM = 0)用于手动切换。
4.2 注册监视器服务
1 /dm/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dm/bin/dmmonitor.ini
非确认监视器 无需注册服务 ,仅用于前台手动操作。
五、启动集群
5.1 启动数据库实例
A 节点:
1 2 3 4 SP_SET_PARA_VALUE(1 , 'ALTER_MODE_STATUS' , 1 ); SP_SET_OGUID(45331 ); ALTER DATABASE PRIMARY ;SP_SET_PARA_VALUE(1 , 'ALTER_MODE_STATUS' , 0 );
B 节点:
1 2 3 4 SP_SET_PARA_VALUE(1 , 'ALTER_MODE_STATUS' , 1 ); SP_SET_OGUID(45331 ); ALTER DATABASE STANDBY;SP_SET_PARA_VALUE(1 , 'ALTER_MODE_STATUS' , 0 );
5.2 启动守护进程(A/B)
1 /dm/bin/DmWatcherServiceWatcher start
5.3 启动监视器(确认模式)
1 2 3 4 5 /dm/bin/DmMonitorServiceMonitor start /dm/bin/dmmonitor /dm/bin/dmmonitor.ini
六、常用监视器命令
命令
说明
list
查看守护进程配置
tip
查看当前运行状态
show global info
查看所有实例组信息
login / logout
登录/登出(需权限)
choose switchover GRP1
查看可切换为主库的实例
switchover GRP1.GRP1_RT_01
正常切换主备
choose takeover GRP1
主库故障时查看可接管实例
takeover GRP1.GRP1_RT_02
故障接管
主备切换回切建议使用非确认监视器前台执行。
七、客户端连接配置(dm_svc.conf)
7.1 文件位置
Linux:/etc/dm_svc.conf(或用户有权限目录,如 /home/dmdba/dm_svc.conf)
7.2 主备集群配置示例
1 2 3 4 5 6 7 8 TIME_ZONE =(480 )LANGUAGE =(cn)DMHA =(172.16 .1.1 :5236 ,172.16 .1.2 :5236 )[DMHA] SWITCH_TIMES =(3 )SWITCH_INTERVAL =(100 )LOGIN_MODE =(1 )
7.3 应用连接方式
Disql:disql SYSDBA/***@DMHA
JDBC:jdbc:dm://DMHA
配置 LOGIN_MODE=1 可实现 自动连接当前主库 ,主备切换对应用透明。
八、启停集群标准流程
启动顺序
启动主、备数据库实例(DmServiceGRP1_RT_xx start)
启动主、备守护进程(DmWatcherServiceWatcher start)
启动确认监视器(DmMonitorServiceMonitor start)
停止顺序
停止监视器(如有必要)
停止守护进程(DmWatcherServiceWatcher stop)
停止数据库实例(DmServiceGRP1_RT_xx stop)