DM8 读写分离集群V4.0环境搭建与测试
1. 环境说明
本示例中组名为“ GRP1 ”,配置为读写分离集群,主库命名为“ MEVI1 ”,备库命名为“ MEVI2 ”、“MEVI3”。
配置环境说明
|
主机类型 |
IP 地址 |
实例名 |
操作系统 |
|
主库 |
192.168.18.151 (外部服务) 192.168.10.151 (内部通信) |
MEVI1 |
NeoKylin Linux Advanced Server release V7Update6 |
|
备库1 |
192.168.18.152 (外部服务) 192.168.10.152 (内部通信) |
MEVI2 |
NeoKylin Linux Advanced Server release V7Update6 |
|
备库2 |
192.168.18.153 (外部服务) 192.168.10.153 (内部通信) |
MEVI3 |
NeoKylin Linux Advanced Server release V7Update6 |
|
监视器 |
192.168.10.154 (内部通信) |
|
NeoKylin Linux Advanced Server release V7Update6 |
端口规划
|
实例名 |
PORT_NUM |
MAL_INST_DW_PORT |
MAL_HOST |
MAL_PORT |
MAL_DW_PORT |
|
MEVI1 |
5236 |
5237 |
192.168.10.151 |
5238 |
5239 |
|
MEVI2 |
5236 |
5237 |
192.168.10.152 |
5238 |
5239 |
|
MEVI3 |
5236 |
5237 |
192.168.10.153 |
5238 |
5239 |
MAL 系统是基于 TCP 协议实现的一种内部通信机制, DM 通过 MAL 系统实现 Redo 日志传输,以及其他一些实例间的消息通讯。
守护进程( dmwatcher )是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息,接收本地守护进程的消息和命令;
监视器( dmmonitor )接收守护进程的消息,并向守护进程发送命令;数据库实例与监视器之间没有直接的消息交互;
守护进程解析并执行监视器发起的各种命令( Switchover/Takeover/Openforce 等),并在必要时通知数据库实例执行相应的操作。
MAL_DW_PORT :守护进程监听端口,其他守护进程或监视器使用 MAL_HOST+MAL_DW_PORT 创建 TCP 连接。监视器配置文件 dmmonitor.ini 中, MON_DW_IP 就是一组 MAL_HOST:MAL_DW_PORT 。
MAL_INST_DW_PORT :实例对守护进程的监听端口,守护进程使用 MAL_HOST+MAL_INST_DW_PORT 创建到实例的 TCP 连接。
2. 同步原始数据
创建主备库的数据库相同,实例名不同。
1) 创建主库
[dmdba@mevi1 bin]$ dminit PATH=/dmdata DB_NAME=MEVI INSTANCE_NAME=MEVI1
使用 dmserver 启动数据库,在 DM 数据库第一次必须正常启动,完成初始化的动作:
[dmdba@mevi1 bin]$ dmserver /dmdata/MEVI/dm.ini
2) 启动归档模式
SQL> alter database mount;
SQL> alter database add archivelog 'DEST=/dmarch,TYPE=local,FILE_SIZE=128,space_limit=0';
SQL> alter database archivelog;
SQL> alter database open;
SQL> select arch_mode from v$database;
3) 备份主库
可以使用联机备份,也可以使用 DMRMAN 脱机备份,我们这里用 DMRMAN 脱机备份进行:
停止 DM 实例:
RMAN> backup database '/dmdata/MEVI/dm.ini' full backupset '/dmbak/dbbak01';
4) 创建备库并恢复
[dmdba@mevi2 ~]$ dminit PATH=/dmdata DB_NAME=MEVI INSTANCE_NAME=MEVI2
[dmdba@mevi3 ~]$ dminit PATH=/dmdata DB_NAME=MEVI INSTANCE_NAME=MEVI3
将主库的备份复制备库:
[dmdba@mevi1 dmbak]$ scp -r dbbak01/ dmdba@192.168.18.152:/dmbak/
[dmdba@mevi1 dmbak]$ scp -r dbbak01/ dmdba@192.168.18.153:/dmbak/
恢复备库:
RMAN> RESTORE DATABASE '/dmdata/MEVI/dm.ini' FROM BACKUPSET '/dmbak/dbbak01';
RMAN> RECOVER DATABASE '/dmdata/MEVI/dm.ini' FROM BACKUPSET '/dmbak/dbbak01';
RMAN> RECOVER DATABASE '/dmdata/MEVI/dm.ini' UPDATE DB_MAGIC;
3. 配置主备库参数
1) 配置 dm.ini
修改主备库参数,注意 3 个库的 instance_name 参数不同。
|
INSTANCE_NAME =MEVI1 #INSTANCE_NAME = MEVI2 #INSTANCE_NAME = MEVI3 PORT_NUM = 5236 # 数据库实例监听端口 ALTER_MODE_STATUS = 0 # 不允许手工方式修改实例模式 / 状态 ENABLE_OFFLINE_TS = 2 # 不允许备库 OFFLINE 表空间 MAL_INI = 1 # 打开 MAL 系统 ARCH_INI = 1 # 打开归档配置 |
2) 配置 dmmal.ini
3 节点配置配置一样。具体如下:
|
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 # 判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = MEVI1 # 实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.10.151 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.18.151 # 实例的对外服务 IP 地址 MAL_INST_PORT = 5236 # 实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 MAL_INST_DW_PORT = 5237 # 实例监听守护进程 TCP 连接的端口 MAL_DW_PORT = 5239 # 实例对应的守护进程监听 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = MEVI2 MAL_HOST = 192.168.10.152 MAL_PORT = 5238 MAL_INST_HOST = 192.168.18.152 MAL_INST_PORT = 5236 MAL_INST_DW_PORT = 5237 MAL_DW_PORT = 5239 [MAL_INST3] MAL_INST_NAME = MEVI3 MAL_HOST = 192.168.10.153 MAL_PORT = 5238 MAL_INST_HOST = 192.168.18.153 MAL_INST_PORT = 5236 MAL_INST_DW_PORT = 5237 MAL_DW_PORT = 5239 |
3) 配置 dmarch.ini
3 节点都配置, ARCH_DEST 分别写对方的实例。比如当前实例 MEVI1 是主库,则 ARCH_DEST 配置为 MEVI2 、MEVI3 。
|
[ARCHIVE_TIMELY1] ARCH_TYPE = TIMELY # 实时归档类型 ARCH_DEST = MEVI2 # 实时归档目标实例名 [ARCHIVE_TIMELY2] ARCH_TYPE = TIMELY # 实时归档类型 ARCH_DEST = MEVI3 # 实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dmarch # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 单位 Mb ,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 # 单位 Mb , 0 表示无限制,范围 1024~4294967294M |
|
[ARCHIVE_TIMELY1] ARCH_TYPE = TIMELY # 实时归档类型 ARCH_DEST = MEVI1 # 实时归档目标实例名 [ARCHIVE_TIMELY2] ARCH_TYPE = TIMELY # 实时归档类型 ARCH_DEST = MEVI3 # 实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dmarch # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 单位 Mb ,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 # 单位 Mb , 0 表示无限制,范围 1024~4294967294M |
|
[ARCHIVE_TIMELY1] ARCH_TYPE = TIMELY # 实时归档类型 ARCH_DEST = MEVI1 # 实时归档目标实例名 [ARCHIVE_TIMELY2] ARCH_TYPE = TIMELY # 实时归档类型 ARCH_DEST = MEVI2 # 实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dmarch # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 单位 Mb ,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 # 单位 Mb , 0 表示无限制,范围 1024~4294967294M |
4) 配置 dmwatcher.ini
3 节点都配置 ,配置为全局守护类型,使用自动切换模式。
|
[GRP1] DW_TYPE = GLOBAL # 全局守护类型 DW_MODE = AUTO # 自动切换模式 DW_ERROR_TIME = 10 # 远程守护进程故障认定时间 INST_RECOVER_TIME = 60 # 主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 # 本地实例故障认定时间 INST_OGUID = 453336 # 守护系统唯一 OGUID 值 INST_INI = /dmdata/MEVI/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 # 打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver # 命令行方式启动 RLOG_SEND_THRESHOLD = 0 # 指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 # 指定备库重演日志的时间阀值,默认关闭 |
在 DM DW4.0 之后,已经不再需要生成 dmwatcher.ctl 控制文件, dmctlcvt 工具也不再支持 dmwaterch.ctl 文件的生成。
5) 以 mount 模式启动主备库
[dmdba@mevi1 ~]$ dmserver /dmdata/MEVI/dm.ini mount
[dmdba@mevi2 ~]$ dmserver /dmdata/MEVI/dm.ini mount
[dmdba@mevi3 ~]$ dmserver /dmdata/MEVI/dm.ini mount
一定要以 mount 方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。
6) 设置 OGUID
在主备库分别执行:
SQL> sp_set_oguid(453336);
7) 修改数据库模式
主库修改数据库为 primary
SQL> alter database primary;
备库:
SQL> alter database standby;
如果当前数据库不是 normal 模式,需要先修改 dm.ini 中 ALTER_MODE_STATUS 值为 1 ,允许修改数据库模式,修改 Standby 模式成功后再改回为 0 。
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
4. 注册并启动守护进程
在主备库进行注册:
[root@mevi1 ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/MEVI/dmwatcher.ini -p MEVI1
[root@mevi2 ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/MEVI/dmwatcher.ini -p MEVI2
[root@mevi3 ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/MEVI/dmwatcher.ini -p MEVI3
在主备库启动服务:
[root@mevi1 ~]# systemctl start DmWatcherServiceMEVI1
[root@mevi2 ~]# systemctl start DmWatcherServiceMEVI2
[root@mevi3 ~]# systemctl start DmWatcherServiceMEVI3
守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open ,并切换为 Open 状态。
5. 配置监视器(第4台服务器)
1) 参数文件
在监控节点的 /dm8/data 目录下创建并修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。
|
MON_DW_CONFIRM = 1 # 确认监视器模式 MON_LOG_PATH = /dm8/data /log # 监视器日志文件存放路径 MON_LOG_INTERVAL = 60 # 每隔60s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 # 每个日志文件最大32M MON_LOG_SPACE_LIMIT = 0 # 不限定日志文件总占用空间 [GRP1] MON_INST_OGUID = 453336 # 组GRP1 的唯一OGUID 值 MON_DW_IP = 192.168.10.151:5239 MON_DW_IP = 192.168.10.152:5239 MON_DW_IP = 192.168.10.153:5239 |
2) 启动监视器
[dmdba@mevi4 ~]$ dmmonitor /dm8/data/dmmonitor.ini
|
[monitor] 2020-07-24 14:40:38: DMMONITOR[4.0] V8 [monitor] 2020-07-24 14:40:38: DMMONITOR[4.0] IS READY.
[monitor] 2020-07-24 14:40:38: 收到守护进程(MEVI2)消息 WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 14:40:38 OPEN OK MEVI2 OPEN STANDBY NULL 6 42717 42717
[monitor] 2020-07-24 14:40:38: 收到守护进程(MEVI3)消息 WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 14:40:38 OPEN OK MEVI3 OPEN STANDBY NULL 6 42717 42717
[monitor] 2020-07-24 14:40:39: 收到守护进程(MEVI1)消息 WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 14:40:39 OPEN OK MEVI1 OPEN PRIMARY VALID 6 42717 42717 |
进行注册:
[root@mevi4 ~]# /dm8/script/root/dm_service_installer.sh -t dmmonitor -p MEVI -monitor_ini /dm8/data/dmmonitor.ini
启动服务:
[root@mevi4 ~]# systemctl start DmMonitorServiceMEVI
6. 主备同步测试
主库:
SQL> create table t1 as select * from dba_tables;
备库:
SQL> select count(1) from t1;
7. 主备切换测试
1) Switchover 切换
|
login |
|
switchover grp1.mevi2 |
|
switchover grp1.mevi3 |
|
switchover grp1.mevi1 |
|
show |
2) Takeover 接管
将主库网络直接中断:
[root@mevi1 ~]# systemctl stop network
|
[monitor] 2020-07-24 16:06:39: 接收守护进程(MEVI1)消息超时 WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:06:28 ERROR OK MEVI1 OPEN PRIMARY VALID 9 50421 50421
[monitor] 2020-07-24 16:06:39: 检测到PRIMARY实例故障,开始对组(GRP1)执行自动接管
[monitor] 2020-07-24 16:06:39: 通知组(GRP1)当前活动的守护进程设置MID [monitor] 2020-07-24 16:06:39: 通知组(GRP1)当前活动的守护进程设置MID成功 [monitor] 2020-07-24 16:06:39: 开始使用实例MEVI2接管 [monitor] 2020-07-24 16:06:39: 通知守护进程MEVI2切换TAKEOVER状态 [monitor] 2020-07-24 16:06:39: 守护进程(MEVI2)状态切换 [OPEN-->TAKEOVER] [monitor] 2020-07-24 16:06:40: 切换守护进程MEVI2为TAKEOVER状态成功 [monitor] 2020-07-24 16:06:40: 实例MEVI2开始执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句 [monitor] 2020-07-24 16:06:40: 实例MEVI2执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句成功 [monitor] 2020-07-24 16:06:40: 实例MEVI2开始执行ALTER DATABASE MOUNT语句 [monitor] 2020-07-24 16:06:41: 实例MEVI2执行ALTER DATABASE MOUNT语句成功 [monitor] 2020-07-24 16:06:41: 实例MEVI2开始执行ALTER DATABASE PRIMARY语句 [monitor] 2020-07-24 16:06:42: 实例MEVI2执行ALTER DATABASE PRIMARY语句成功 [monitor] 2020-07-24 16:06:45: 通知实例MEVI2修改所有归档状态无效 [monitor] 2020-07-24 16:06:45: 修改所有实例归档为无效状态成功 [monitor] 2020-07-24 16:06:45: 实例MEVI2开始执行ALTER DATABASE OPEN FORCE语句 [monitor] 2020-07-24 16:06:46: 实例MEVI2执行ALTER DATABASE OPEN FORCE语句成功 [monitor] 2020-07-24 16:06:46: 实例MEVI2开始执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句 [monitor] 2020-07-24 16:06:46: 实例MEVI2执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句成功 [monitor] 2020-07-24 16:06:46: 通知守护进程MEVI2切换OPEN状态 [monitor] 2020-07-24 16:06:46: 守护进程(MEVI2)状态切换 [TAKEOVER-->OPEN] [monitor] 2020-07-24 16:06:47: 切换守护进程MEVI2为OPEN状态成功 [monitor] 2020-07-24 16:06:47: 通知组(GRP1)的守护进程执行清理操作 [monitor] 2020-07-24 16:06:47: 清理守护进程(MEVI2)请求成功 [monitor] 2020-07-24 16:06:47: 清理守护进程(MEVI3)请求成功 [monitor] 2020-07-24 16:06:47: 使用实例MEVI2接管成功
[monitor] 2020-07-24 16:06:47: 组(GRP1)使用实例MEVI2自动接管成功
[monitor] 2020-07-24 16:06:49: 守护进程(MEVI2)状态切换 [OPEN-->RECOVERY] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:06:50 RECOVERY OK MEVI2 OPEN PRIMARY VALID 10 52835 52835
[monitor] 2020-07-24 16:06:52: 守护进程(MEVI2)状态切换 [RECOVERY-->OPEN] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:06:52 OPEN OK MEVI2 OPEN PRIMARY VALID 10 52835 52835 |
3) 恢复 DW 环境
恢复原主库的网络后,监视器自动将原主库切换成了备库:
|
[monitor] 2020-07-24 16:24:36: 实例MEVI1[PRIMARY, MOUNT, ISTAT_SAME:TRUE]恢复正常 WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:24:36 STARTUP OK MEVI1 MOUNT PRIMARY VALID 9 50421 50421
[monitor] 2020-07-24 16:24:36: 守护进程(MEVI1)状态切换 [STARTUP-->UNIFY EP] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:24:36 UNIFY EP OK MEVI1 MOUNT PRIMARY VALID 9 50421 50421
[monitor] 2020-07-24 16:24:36: 守护进程(MEVI1)状态切换 [UNIFY EP-->STARTUP] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:24:36 STARTUP OK MEVI1 MOUNT STANDBY INVALID 9 50421 50421
[monitor] 2020-07-24 16:24:36: 守护进程(MEVI1)状态切换 [STARTUP-->UNIFY EP] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:24:37 UNIFY EP OK MEVI1 MOUNT STANDBY INVALID 9 50421 50421
[monitor] 2020-07-24 16:24:36: 守护进程(MEVI1)状态切换 [UNIFY EP-->STARTUP] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:24:37 STARTUP OK MEVI1 OPEN STANDBY INVALID 9 50421 50421
[monitor] 2020-07-24 16:24:36: 守护进程(MEVI1)状态切换 [STARTUP-->OPEN] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:24:37 OPEN OK MEVI1 OPEN STANDBY INVALID 9 50421 50421
[monitor] 2020-07-24 16:24:37: 守护进程(MEVI2)状态切换 [OPEN-->RECOVERY] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:24:37 RECOVERY OK MEVI2 OPEN PRIMARY VALID 10 52835 52835
[monitor] 2020-07-24 16:24:38: 守护进程(MEVI2)状态切换 [RECOVERY-->OPEN] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2020-07-24 16:24:38 OPEN OK MEVI2 OPEN PRIMARY VALID 10 52835 52835 |
8. 环境启动与关闭测试
因为 Global 守护类型的守护进程,会自动将数据库实例切换到 Open 状态,并将守护进程状态也切换为 Open 。因此在关闭 DW 系统时,必须按照一定的顺序来关闭守护进程和实例。可以在监视器中执行 Stop Instance 命令关闭数据守护系统,命令执行成功后,数据库实例正常关闭。但守护进程并没有真正退出,而是将状态切换为 Shutdown 状态。如果使用手动方式关闭数据守护系统,请严格按照以下顺序:
一、 如果启动了确认监视器,先关闭确认监视器(防止自动接管)
二、 关闭主库守护进程(防止重启实例)
三、 关闭备库守护进程(防止重启实例)
在关闭守护进程时会自动关闭对应的DM 实例。所以我们这里只需要关闭对应的守护进程即可。
1) 关闭 DW 环境
我们这里使用手工方式关闭 DW.
A. 关闭监视器进程
直接 ctrl + c 结束命令即可。
B. 关闭主库守护进程
[dmdba@mevi1 ~]$ DmWatcherServiceMEVI1 stop
[dmdba@mevi1 ~]$ ps -ef|grep dmserver
C. 关闭备库守护进程
[dmdba@mevi2 ~]$ DmWatcherServiceMEVI2 stop
[dmdba@mevi2 ~]$ ps -ef|grep dmserver
[dmdba@mevi3 ~]$ DmWatcherServiceMEVI3 stop
[dmdba@mevi3 ~]$ ps -ef|grep dmserver
2) 启动 DW 环境
A. 启动备库守护进程
[dmdba@mevi2 ~]$ DmWatcherServiceMEVI2 start
[dmdba@mevi2 ~]$ ps -ef|grep dmserver
dmdba 18632 1 1 17:00 ? 00:00:00 /dm8/bin/dmserver /dmdata/MEVI/dm.ini mount
[dmdba@mevi3 ~]$ DmWatcherServiceMEVI3 start
[dmdba@mevi3 ~]$ ps -ef|grep dmserver
dmdba 16212 1 0 17:00 ? 00:00:00 /dm8/bin/dmserver /dmdata/MEVI/dm.ini mount
启动守护进程时会自动启动DM 实例。
B. 启动主库守护进程
[dmdba@mevi1 ~]$ DmWatcherServiceMEVI1 start
[dmdba@mevi1 ~]$ ps -ef|grep dmserver
dmdba 18117 1 0 17:03 ? 00:00:00 /dm8/bin/dmserver /dmdata/MEVI/dm.ini mount
C. 启动监视器
[dmdba@mevi4 ~]$ DmMonitorServiceMEVI start