3个数据库服务器节点的名字分别是 dmdw1、 dmdw2 和 dmdw3
dmdw1 dmdw2 dmdw3
业务 IP 192.168.xxx.x 192.168.xxx.x
心跳 IP 192.168.xxx.x 192.168.xxx.x 192.168.xxx.x
实例名 JKXX1 JKXX2
实例端口 5236 5236
MAL 端口 5336 5336
MAL 守护进程端口 5436 5436
守护进程端口 5536 5536
OGUID 260811 260811
守护组 JKXX JKXX
目录 备注
/home/dmdba/dmdbms 数据库软件安装目录
/data/dmdata 数据文件目录
/data/dmarch 日志归档目录
/data/sqllog sql监控目录
/data/dmbak 备份目录
/data/dmcore core日志目录
参考
https://eco.dameng.com/community/post/2026080713391431INLSGOX6FDDFWJCY
dminit PATH=/data/dmdata INSTANCE_NAME=JKXX1 DB_NAME=JKXX CASE_SENSITIVE=N CHARSET=1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=xxxxxx SYSAUDITOR_PWD=xxxxxx
这个启动服务是前台进程,临时使用,需要在新窗口启动服务。启动后这个窗口不能关闭。
dmserver /data/dmdata/JKXX/dm.ini
disql SYSDBA/xxxxxx@:5236
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
SQL> BACKUP DATABASE BACKUPSET '/data/dmbak/BACKUP_FILE_20260811';
SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60); --dmserver监控本机dmwatcher心跳
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0); -- 禁止人工手工切换主备模式
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2); -- 备库禁止表空间offline,防止数据分裂
SP_SET_PARA_VALUE (2,'MAL_INI',1); -- 开启MAL主备通信通道
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64); -- 采集日志发送/重演耗时样本,供守护判断备库同步健康度
将 3.1.2 步骤启动的实例服务关闭,可以直接 ctrl+c,然后关闭窗口
增加了 [ARCHIVE_REALTIME1] 部分信息
vi /data/dmdata/JKXX/dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
ARCH_FLUSH_BUF_SIZE = 2
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = JKXX2 #实时归档目标实例名
vi /data/dmdata/JKXX/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /data/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = JKXX1 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.xxx.x #MAL 系统监听 TCP 连接的 IP 地>址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.xxx.x #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = JKXX2
MAL_HOST = 192.168.xxx.x
MAL_PORT = 5336
MAL_INST_HOST = 192.168.xxx.x
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
vi /data/dmdata/JKXX/dmwatcher.ini
[JKXX]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 260811 #守护系统唯一 OGUID 值
INST_INI = /data/dmdata/JKXX/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
将备份文件从节点1 拷贝到节点2
scp -r /data/dmbak/BACKUP_FILE_20260811 dmdba@192.168.xxx.x:/data/dmbak
#root执行
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p JKXX1 -dm_ini /data/dmdata/JKXX/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dmdata/JKXX/dmwatcher.ini
dminit PATH=/data/dmdata INSTANCE_NAME=JKXX2 DB_NAME=JKXX CASE_SENSITIVE=N CHARSET=1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=xxxxxx SYSAUDITOR_PWD=xxxxxx
dmrman CTLSTMT="RESTORE DATABASE '/data/dmdata/JKXX/dm.ini' FROM BACKUPSET '/data/dmbak/BACKUP_FILE_20260811'"
dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/JKXX/dm.ini' FROM BACKUPSET '/data/dmbak/BACKUP_FILE_20260811'"
dmrman CTLSTMT="RECOVER DATABASE '/data/dmdata/JKXX/dm.ini' UPDATE DB_MAGIC"
vi /data/dmdata/JKXX/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
ARCH_FLUSH_BUF_SIZE = 2
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = JKXX1 #实时归档目标实例名
vi /data/dmdata/JKXX/dm.ini
INSTANCE_NAME = JKXX2
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志重演信息
文件内容与节点1一样,将节点1 的信息拷贝过来
cd /data/dmdata/JKXX
scp dmmal.ini dmwatcher.ini dmdba@192.168.xxx.x:/data/dmdata/JKXX
3.2.6.注册服务
#使用root执行
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p JKXX2 -dm_ini /data/dmdata/JKXX/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dmdata/JKXX/dmwatcher.ini
节点1 dmdw1
/home/dmdba/dmdbms/bin/DmServiceJKXX1 start
disql SYSDBA/xxxxxx
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(260811);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
节点2 dmdw2
/home/dmdba/dmdbms/bin/DmServiceJKXX2 start
disql SYSDBA/xxxxxx
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(260811);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
##节点1和节点2
/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start
正常集群配置了跟随操作系统自启动,如果手动启动分别在2个节点执行
[dmdba@~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start
##节点1 和节点2 分别操作
[dmdba@~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher stop
##节点1操作
[dmdba@~]$ /home/dmdba/dmdbms/bin/DmServiceJKXX1 stop
##节点2 操作
[dmdba@~]$ /home/dmdba/dmdbms/bin/DmServiceJKXX2 stop
在节点dmdw3 配置监控 进程
vi /home/dmdba/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[JKXX]
MON_INST_OGUID = 260811 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.xxx.x:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.xxx.x:5436
注册服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini
vi /home/dmdba/dmdbms/bin/dmmonitor_manual.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[JKXX]
MON_INST_OGUID = 260811 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.xxx.x:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.xxx.x:5436
启动非确认监控器查看
dmmonitor /home/dmdba/dmdbms/bin/dmmonitor_manual.ini
通过 show 和tip 可以查看主备的数据库状态
vi /etc/dm_svc.conf
##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.xxx.x:5236,192.168.xxx.x:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)
参考
https://eco.dameng.com/community/post/202608101731348R4MU7PC1AXFL6MJ7M
https://eco.dameng.com
文章
阅读量
获赞
