| A机器 | B机器 | |
|---|---|---|
| 业务IP | 192.168.236.21 | 192.168.236.22 |
| 心跳IP | 10.10.10.11 | 10.10.10.12 |
| 实例名 | DMSERVER | DMSERVERSTD |
| 实例端口 dm.PORT_NUM dmmal.MAL_INST_PORT | 15236 | 25236 |
| MAL端口 dmmal.MAL_PORT | 15336 | 25336 |
| MAL守护进程端口 dmmal.MAL_DW_PORT | 15436 | 25436 |
| 守护进程端口 dm.DW_PORT | 15536 | 25536 |
| OGUID | 251113 | |
| 守护组 | GDW1 | |
| 安装目录 | /dm8 | /dm8 |
| 实例目录 | /dm8/data | /dm8/data |
| 归档上限 | 5120 | |
| 确认监视器IP | 10.10.10.10 |
-初始化实例
[dmdba@~]# /dm8/bin/dminit PATH=/dm8/data/ INSTANCE_NAME=DMSERVER PAGE_SIZE=32 LOG_SIZE=256 SYSDBA_PWD=Dameng.com123 SYSAUDITOR_PWD=Dameng.com123
--启动服务
[dmdba@~]# /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini
--开启归档
[dmdba@~]# /dm8/bin/disql SYSDBA/*****@192.168.236.21:15236
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/data/DAMENG/arch, TYPE=LOCAL,FILE_SIZE=128, SPACE_LIMIT=5120';
SQL> ALTER DATABASE OPEN;
--备份数据
SQL> BACKUP DATABASE BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE';
--修改dm.ini
SQL> SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SQL> SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1);
SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
此外,生产环境上还应设置重演日志的相关参数:
1.REDOS_BUF_SIZE:待重演日志堆积的内存限制,堆积的日志缓冲区占用内存超过此限制,则新的日志将会被延迟加入重演队列,等待重演释放部分内存后再加入。
2.REDOS_BUF_NUM:待重演日志缓冲区允许堆积的数目限制,超过限制则新的日志将会被延迟加入重演队列,等待堆积数减少后再加入。
3.REDOS_MAX_DELAY:备库重演日志缓冲区的时间限制,超过此限制则认为重演异常,服务器自动宕机,防止日志堆积、主库不能及时响应用户请求。
注意:REDOS_BUF_SIZE和REDOS_BUF_NUM同时起作用,只要达到一个条件即会触发延迟处理。以上参数建议值如下:
SP_SET_PARA_VALUES(2,’REDO_BUF_NUM’,99999); SP_SET_PARA_VALUES(2,’REDOS_BUF_SIZE’,10240); SP_SET_PARA_VALUES(2,’REDOS_MAX_DELAY’,180);
关闭前台实例服务。
[dmdba@~]# vi /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/DAMENG/arch/ #本地归档存放路径 ARCH_FILE_SIZE = 256 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 5120 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DMSERVERSTD #实时归档目标实例名
[dmdba@~]# vi /dm8/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间 MAL_TEMP_PATH = /dm8/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 = DMSERVER #实例名,和 dm.ini的INSTANCE_NAME一致 MAL_HOST = 10.10.10.11 #MAL系统监听TCP连接的IP地址 MAL_PORT = 15336 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.236.21 #实例的对外服务IP地址 MAL_INST_PORT = 15236 #实例对外服务端口,和dm.ini的PORT_NUM一致 MAL_DW_PORT = 15436 #实例对应的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 15536 #实例监听守护进程TCP连接的端口 [MAL_INST2] MAL_INST_NAME = DMSERVERSTD MAL_HOST = 10.10.10.12 MAL_PORT = 25336 MAL_INST_HOST = 192.168.236.22 MAL_INST_PORT = 25236 MAL_DW_PORT = 25436 MAL_INST_DW_PORT =25536
[dmdba@~]# vi /dm8/data/DAMENG/dmwatcher.ini
[GDW1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #故障自动切换模式 DW_ERROR_TIME = 20 #远程守护进程故障认定时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_OGUID = 251113 #守护系统唯一OGUID值 INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
注意:DM8里不再生成dmwatcher.ctl文件。
[dmdba@~]# scp -r /dm8/data/DAMENG dmdba@10.10.10.12:/dm8/data/
[root@~]# /dm8/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm8/data/DAMENG/dm.ini -m mount [root@~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
备注:卸载或禁用的时候删除自启,现在不需要执行
[root@~]# /dm8/script/root/dm_service_uninstaller.sh -n DmServiceDMSERVER [root@~]# /dm8/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
[dmdba@~]# vi /dm8/data/DAMENG/dm.ini
修改对应备库的实例名
INSTANCE_NAME = DMSERVERSTD #数据库实例名
[dmdba@~]# vi /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/DAMENG/arch/ #本地归档存放路径 ARCH_FILE_SIZE = 256 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 5120 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DMSERVER #实时归档目标实例名
与A机器DMSERVER的dmmal.ini、dmwatcher.ini相同,不用修改。
[root@~]# /dm8/script/root/dm_service_installer.sh -t dmserver -p DMSERVERSTD -dm_ini /dm8/data/DAMENG/dm.ini -m mount [root@~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
备注:卸载或禁用的时候删除自启,现在不需要执行
[root@~]# /dm8/script/root/dm_service_uninstaller.sh -n DmServiceDMSERVERSTD [root@~]# /dm8/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
[dmdba@~]# /dm8/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'" [dmdba@~]# /dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'" [dmdba@~]# /dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
1.在各节点数据库的bin目录中 存放非确认监视器配置文件。
注意:建议在各节点上至少放置一个非确认监视器,以免确认监视器机器故障时,无法进行及时切机。
2.在确认监视器机器上(非集群节点) 注册确认监视器自启服务。
[dmdba@~]# vi /dm8/bin/dmmonitor.ini
MON_DW_CONFIRM = 1 #0为非确认,1为确认 MON_LOG_PATH = ../log #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 512 #单个日志大小,单位MB MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位MB [GDW1] MON_INST_OGUID = 251113 #组GDW1的唯一OGUID 值 MON_DW_IP = 10.10.10.11:15436 #IP对应MAL_HOST,PORT对应MAL_DW_PORT MON_DW_IP = 10.10.10.12:25436
[root@~]# /dm8/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dm8/bin/dmmonitor.ini
备注:卸载或禁用的时候删除自启,现在不需要执行
[root@~]# /dm8/script/root/dm_service_uninstaller.sh -n DmMonitorServiceMonitor
| 命令 | 含义 |
|---|---|
| list | 查看守护进程的配置信息 |
| show global info | 查看所有实例组的信息 |
| tip | 查看系统当前运行状态 |
| login | 登录监视器 |
| logout | 退出登录 |
| choose switchover GDW1 | 主机正常:查看可切换为主机的实例列表 |
| switchover GDW1.实例名 | 主机正常:使用指定组的指定实例,切换为主机 |
| choose takeover GDW1 | 主机故障:查看可切换为主机的实例列表 |
| takeover GDW1.实例名 | 主机故障:使用指定组的指定实例,切换为主机 |
| choose takeover force GDW1 | 强制切换:查看可切换为主机的实例列表 |
更多常用命令和参数介绍请参考监视器 | 达梦技术文档
–A机器
[dmdba@~]# /dm8/bin/DmServiceDMSERVER start [dmdba@~]# /dm8/bin/disql SYSDBA/*****@192.168.236.21:5236
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(251113);
SQL> ALTER DATABASE PRIMARY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
–B机器
[dmdba@~]# /dm8/bin/DmServiceDMSERVERSTD start [dmdba@~]# /dm8/bin/disql SYSDBA/*****@192.168.236.22:5236
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(251113);
SQL> ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
A/B机器:
[dmdba@~]# /dm8/bin/DmWatcherServiceWatcher start
监视器机器:
[dmdba@~]# /dm8/bin/dmmonitor /dm8/bin/dmmonitor.ini
注意:
一个数据守护集群,只能配置一个确认监视器。如果同时启动多个确认监视器,后启动的确认监视器将报错并自动退出。
后台启动命令:[dmdba@~]# /dm8/bin/dmmonitor /dm8/bin/dmmonitor.ini
手动方式启动数据守护系统时,对于守护进程,数据库实例和监视器的启动顺序没有严格要求,也可以通过监视器命令启动守护系统(前提是所有守护进程已经启动)。
配置了INST_AUTO_RESTART = 1 ,只需要启动A/B机器守护进程,守护进程会自动启动对应的DMSERVER主库和DMSERVERSTD备库。
A/B机器:
[dmdba@~]# /dm8/bin/DmWatcherServiceWatcher start
关闭守护系统时,必须按照一定的顺序来关闭守护进程和数据库实例。特别是自动切换模式,如果退出守护进程或主备库的顺序不正确,可能会引起主备切换,甚至造成守护进程组分裂。
通过监视器执行 Stop Group 命令关闭数据守护系统,是最简单、安全的方式。命令执行成功后,数据库实例正常关闭。但守护进程并没有真正退出,而是将状态切换为 Shutdown 状态。
在监视器节点:
[dmdba@~]# /dm8/bin/dmmonitor path=/dm8/bin/dmmonitor.ini login 用户名:sysdba 密码: [monitor] 2025-11-17 10:17:36: 登录监视器成功! 输入命令非法,请输入help命令查看帮助信息! stop group GDW1 [monitor] 2025-11-17 10:17:48: STOP实例DMSERVER[PRIMARY, OPEN, ISTAT_SAME:TRUE]的守护进程 [monitor] 2025-11-17 10:17:48: 守护进程(DMSERVER)状态切换 [OPEN-->SHUTDOWN] [monitor] 2025-11-17 10:17:49: STOP实例DMSERVER[PRIMARY, OPEN, ISTAT_SAME:TRUE]的守护进程成功 [monitor] 2025-11-17 10:17:49: STOP实例DMSERVERSTD[STANDBY, OPEN, ISTAT_SAME:TRUE]的守护进程 [monitor] 2025-11-17 10:17:49: 守护进程(DMSERVERSTD)状态切换 [OPEN-->SHUTDOWN] [monitor] 2025-11-17 10:17:49: STOP实例DMSERVERSTD[STANDBY, OPEN, ISTAT_SAME:TRUE]的守护进程成功 [monitor] 2025-11-17 10:17:49: 通知实例(DMSERVER)SHUTDOWN [monitor] 2025-11-17 10:17:58: 通知实例(DMSERVER)SHUTDOWN成功,请等待实例完全退出 [monitor] 2025-11-17 10:17:58: 通知实例(DMSERVERSTD)SHUTDOWN [monitor] 2025-11-17 10:18:09: 通知实例(DMSERVERSTD)SHUTDOWN成功,请等待实例完全退出 [monitor] 2025-11-17 10:18:09: 通知组(GDW1)的守护进程执行清理操作 [monitor] 2025-11-17 10:18:09: 清理守护进程(DMSERVER)请求成功 [monitor] 2025-11-17 10:18:09: 清理守护进程(DMSERVERSTD)请求成功 [monitor] 2025-11-17 10:18:10: 退出组(GDW1)中所有活动实例成功
Stop Group 命令内部流程如下:
如果使用手动方式关闭数据守护系统,请严格按照以下顺序执行:
如果是只关闭主库,并且不想引发备库自动接管,有以下两种方法:
方法一:
1.通过 Detach database 命令将所有备库分离
2.通过 Stop database 命令退出主库
方法二:严格按照以下顺序执行:
如果是只关闭备库,并且不想引发主库发送日志失败进入 Suspend 状态,请严格按照以下顺序执行:
注意
关闭整个数据守护系统时,先关闭主库再关闭备库,顺序一定不能错。对于本地守护类型的库,在关闭数据守护系统时,不受此顺序限制。
因为主库 Shutdown 过程中,需要 Purge 所有已提交事务,会修改数据,并产生 Redo 日志。如果先 Shutdown 备库,会导致主库发送归档日志失败,并且由于主库已经处于 Shutdown 状态,会导致主库异常关闭。
文章
阅读量
获赞
