DM8 MPP 主备环境搭建
1. 环境说明
本例配置2个MPP节点,每个节点作为主库,与其备库组成一个守护组,因此需要配置两个守护组,取名分别为GRP1、GRP2,主库名为GRP1_MPP_EP01/GRP2_MPP_EP02,对应的备库实例名分别为GRP1_MPP_EP11/GRP2_MPP_EP22。
配置环境说明
|
机器名 |
IP 地址 |
初始状态 |
操作系统 |
|
mppdw1 |
192.168.18.201 (外部服务) 192.168.10.201 (内部通信) |
主库 GRP1_MPP_EP01 备库 GRP2_MPP_EP22 监视器 |
CentOS Linux release 7.8.2003 |
|
mppdw2 |
192.168.18.202 (外部服务) 192.168.10.202 (内部通信) |
主库 GRP2_MPP_EP02 备库 GRP1_MPP_EP11 |
CentOS Linux release 7.8.2003 |
端口规划-主库
|
实例名 |
PORT_NUM |
MAL_INST_DW_PORT |
MAL_HOST |
MAL_PORT |
MAL_DW_PORT |
MPP 实例序号 |
|
GRP1_MPP_EP01 |
5236 |
5243 |
192.168.10.201 |
5337 |
5253 |
0 |
|
GRP2_MPP_EP02 |
5236 |
5243 |
192.168.10.202 |
5337 |
5253 |
1 |
端口规划-备库
|
实例名 |
PORT_NUM |
MAL_INST_DW_PORT |
MAL_HOST |
MAL_PORT |
MAL_DW_PORT |
对应主库 |
|
GRP1_MPP_EP11 |
5237 |
5244 |
192.168.10.202 |
5338 |
5254 |
GRP1_MPP_EP01 |
|
GRP2_MPP_EP22 |
5237 |
5244 |
192.168.10.201 |
5338 |
5254 |
GRP2_MPP_EP02 |
守护进程规划
|
组名 |
实例名 |
所在机器 |
|
GRP1 |
GRP1_MPP_EP01 |
192.168.10.201 |
|
GRP1_MPP_EP11 |
192.168.10.202 | |
|
GRP2 |
GRP2_MPP_EP02 |
192.168.10.202 |
|
GRP2_MPP_EP22 |
192.168.10.201 |
2. 数据准备
mppdw1 机器上初始化库至目录 /dmdata:
dminit PATH=/dmdata PAGE_SIZE=16 DB_NAME=EP01 INSTANCE_NAME=GRP1_MPP_EP01
mppdw2 机器上初始化库至目录 /dmdata:
dminit PATH=/dmdata PAGE_SIZE=16 DB_NAME=EP02 INSTANCE_NAME=GRP2_MPP_EP02
即完成两个主数据库的初始化,然后分别同步两个备数据库。
采取机器交叉的方式配置两个备数据库
mppdw1 机器
dminit PATH=/dmdata PAGE_SIZE=16 DB_NAME=EP22 INSTANCE_NAME=GRP2_MPP_EP22 PORT_NUM=5237
mppdw2 机器
dminit PATH=/dmdata PAGE_SIZE=16 DB_NAME=EP11 INSTANCE_NAME=GRP1_MPP_EP11 PORT_NUM=5237
3. 配置主库GRP1_MPP_EP01
1) 配置dm.ini
在mppdw1机器上配置主库的实例名为GRP1_MPP_EP01,dm.ini参数修改如下:
|
# 实例名,建议使用"组名_守护环境_序号"的命名方式,总长度不能超过16 INSTANCE_NAME = GRP1_MPP_EP01 PORT_NUM = 5236 # 数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 # 接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 # 不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 # 不允许备库OFFLINE表空间 MAL_INI = 1 # 打开MAL系统 ARCH_INI = 1 # 打开归档配置 MPP_INI = 1 # 启用MPP配置 RLOG_SEND_APPLY_MON = 64 # 统计最近64次的日志发送信息 |
2) 配置dmmal.ini
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
|
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 # 判定MAL链路断开的时间 [MAL_INST1] MAL_INST_NAME = GRP1_MPP_EP01 # 实例名,和dm.ini中的INSTANCE_NAME一致 MAL_HOST = 192.168.10.201 #MAL 系统监听TCP连接的IP地址 MAL_PORT = 5337 #MAL 系统监听TCP连接的端口 MAL_INST_HOST = 192.168.18.201 # 实例的对外服务IP地址 MAL_INST_PORT = 5236 # 实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 5253 # 实例对应的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 5243 # 实例监听守护进程TCP连接的端口 [MAL_INST2] MAL_INST_NAME = GRP2_MPP_EP02 MAL_HOST = 192.168.10.202 MAL_PORT = 5337 MAL_INST_HOST = 192.168.18.202 MAL_INST_PORT = 5236 MAL_DW_PORT = 5253 MAL_INST_DW_PORT = 5243 [MAL_INST3] MAL_INST_NAME = GRP1_MPP_EP11 MAL_HOST = 192.168.10.202 MAL_PORT = 5338 MAL_INST_HOST = 192.168.18.202 MAL_INST_PORT = 5237 MAL_DW_PORT = 5254 MAL_INST_DW_PORT = 5244 [MAL_INST4] MAL_INST_NAME = GRP2_MPP_EP22 MAL_HOST = 192.168.10.201 MAL_PORT = 5338 MAL_INST_HOST = 192.168.18.201 MAL_INST_PORT = 5237 MAL_DW_PORT = 5254 MAL_INST_DW_PORT = 5244 |
3) 配置dmarch.ini(实时归档)
修改dmarch.ini,配置实时归档。除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。
当前实例GRP1_MPP_EP01是主库,需要向MPP备库GRP1_MPP_EP11同步数据,因此实时归档的ARCH_DEST配置为GRP1_MPP_EP11。
|
[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME # 实时归档类型 ARCH_DEST = GRP1_MPP_EP11 # 实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dmarch/EP01 # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 单位Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 # 单位Mb,0表示无限制,范围1024~4294967294M |
4) 配置dmmpp.ctl
dmmpp.ctl 是二进制文件,由dmmpp.ini文本通过dmctlcvt工具转换而来
两节点的dmmpp.ini配置如下:
|
[service_name1] mpp_seq_no = 0 mpp_inst_name = GRP1_MPP_EP01 [service_name2] mpp_seq_no = 1 mpp_inst_name = GRP2_MPP_EP02 |
转换命令如下:
dmctlcvt TYPE=2 SRC=/dmdata/EP01/dmmpp.ini DEST=/dmdata/EP01/dmmpp.ctl
5) 启动主库
以Mount方式启动主库
注册数据库服务,设置服务器启动模式mount
DmServiceEP01 start
一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。
6) 设置OGUID
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录主库设置OGUID值。
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(45330);
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。
7) 修改数据库模式
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录主库修改数据库为Primary模式。
SQL> alter database primary;
4. 配置主库GRP2_MPP_EP02
1) 配置dm.ini
在mppdw2机器上配置主库的实例名为GRP2_MPP_EP02,dm.ini参数修改如下:
|
# 实例名,建议使用"组名_守护环境_序号"的命名方式,总长度不能超过16 INSTANCE_NAME = GRP1_MPP_EP02 PORT_NUM = 5236 # 数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 # 接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 # 不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 # 不允许备库OFFLINE表空间 MAL_INI = 1 # 打开MAL系统 ARCH_INI = 1 # 打开归档配置 MPP_INI = 1 # 启用MPP配置 RLOG_SEND_APPLY_MON = 64 # 统计最近64次的日志发送信息 |
2) 配置dmmal.ini
直接将mppdw1机器上实例GRP1_MPP_EP01配置的dmmal.ini拷贝到/dmdata/EP02目录中。
scp 192.168.18.201:/dmdata/EP01/dmmal.ini /dmdata/EP02
3) 配置dmarch.ini(实时归档)
修改dmarch.ini,配置实时归档。除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。
当前实例GRP2_MPP_EP02是主库,需要向MPP备库GRP2_MPP_EP22同步数据,因此实时归档的ARCH_DEST配置为GRP2_MPP_EP22。
|
[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME # 实时归档类型 ARCH_DEST = GRP2_MPP_EP22 # 实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dmarch/EP02 # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 单位Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 # 单位Mb,0表示无限制,范围1024~4294967294M |
4) 配置dmmpp.ctl
拷贝GRP1_MPP_EP01的dmmpp.ctl到/dmdata/EP02目录即可。
scp 192.168.18.201:/dmdata/EP01/dmmpp.ctl /dmdata/EP02
5) 启动主库
以Mount方式启动主库
注册数据库服务,设置服务器启动模式mount
DmServiceEP02 start
一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。
6) 设置OGUID
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录主库设置OGUID值。
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(45331);
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。
7) 修改数据库模式
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录主库修改数据库为Primary模式。
SQL> alter database primary;
5. 配置备库GRP1_MPP_EP11
1) 配置dm.ini
在mppdw2机器上配置备库的实例名为GRP1_MPP_EP11,dm.ini参数修改如下:
|
# 实例名,建议使用"组名_守护环境_序号"的命名方式,总长度不能超过16 INSTANCE_NAME = GRP1_MPP_EP11 PORT_NUM = 5237 # 数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 # 接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 # 不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 # 不允许备库OFFLINE表空间 MAL_INI = 1 # 打开MAL系统 ARCH_INI = 1 # 打开归档配置 MPP_INI = 1 # 启用MPP配置 RLOG_SEND_APPLY_MON = 64 # 统计最近64次的日志发送信息 |
2) 配置dmmal.ini
直接将mppdw1机器上实例GRP1_MPP_EP01配置的dmmal.ini拷贝到/dmdata/EP11目录中。
scp 192.168.18.201:/dmdata/EP01/dmmal.ini /dmdata/EP11
3) 配置dmarch.ini(实时归档)
修改dmarch.ini,配置实时归档。除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。
当前实例GRP1_MPP_EP11是备库,守护系统配置完成后,可能在各种故障处理中,GRP1_MPP_EP11切换为新的主库,正常情况下,GRP1_MPP_EP01会切换为新的备库,需要向GRP1_MPP_EP01同步数据,因此实时归档的ARCH_DEST配置为GRP1_MPP_EP01。
|
[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME # 实时归档类型 ARCH_DEST = GRP1_MPP_EP01 # 实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dmarch/EP11 # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 单位Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 # 单位Mb,0表示无限制,范围1024~4294967294M |
4) 配置dmmpp.ctl
数据守护V2.1及以上版本中,MPP备库同样需要配置dmmpp.ctl文件,可以直接从主库上拷贝。
将mppdw1机器上实例GRP1_MPP_EP01配置的dmmpp.ctl拷贝到/dmdata/EP11目录中。
scp 192.168.18.201:/dmdata/EP01/dmmpp.ctl /dmdata/EP11
5) 启动备库
以Mount方式启动备库
注册数据库服务,设置服务器启动模式mount
DmServiceEP11 start
一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。
6) 设置OGUID
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录备库设置OGUID值。
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(45330);
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。
7) 修改数据库模式
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录备库修改数据库为Standby模式。
SQL> alter database standby;
6. 配置备库GRP2_MPP_EP22
1) 配置dm.ini
在mppdw1机器上配置备库的实例名为GRP2_MPP_EP22,dm.ini参数修改如下:
|
# 实例名,建议使用"组名_守护环境_序号"的命名方式,总长度不能超过16 INSTANCE_NAME = GRP2_MPP_EP22 PORT_NUM = 5237 # 数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 # 接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 # 不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 # 不允许备库OFFLINE表空间 MAL_INI = 1 # 打开MAL系统 ARCH_INI = 1 # 打开归档配置 MPP_INI = 1 # 启用MPP配置 RLOG_SEND_APPLY_MON = 64 # 统计最近64次的日志发送信息 |
2) 配置dmmal.ini
直接将mppdw1机器上实例GRP1_MPP_EP01配置的dmmal.ini拷贝到/dmdata/EP22目录中。
cp /dmdata/EP01/dmmal.ini /dmdata/EP22/
3) 配置dmarch.ini(实时归档)
修改dmarch.ini,配置实时归档。除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。
当前实例GRP2_MPP_EP22是备库,守护系统配置完成后,可能在各种故障处理中,GRP2_MPP_EP22切换为新的主库,正常情况下,GRP2_MPP_EP02会切换为新的备库,需要向GRP2_MPP_EP02同步数据,因此实时归档的ARCH_DEST配置为GRP2_MPP_EP02。
|
[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME # 实时归档类型 ARCH_DEST = GRP2_MPP_EP02 # 实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dmarch/EP22 # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 单位Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 # 单位Mb,0表示无限制,范围1024~4294967294M |
4) 配置dmmpp.ctl
数据守护V2.1及以上版本中,MPP备库同样需要配置dmmpp.ctl文件,可以直接从主库上拷贝。
将mppdw1机器上实例GRP1_MPP_EP01配置的dmmpp.ctl拷贝到/dmdata/EP22目录中。
cp /dmdata/EP01/dmmpp.ctl /dmdata/EP22/
5) 启动备库
以Mount方式启动备库
注册数据库服务,设置服务器启动模式mount
DmServiceEP22 start
一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。
6) 设置OGUID
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录备库设置OGUID值。
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(45331);
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
系统通过OGUID值确定一个守护进程组,由用户保证OGUID值的唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。
7) 修改数据库模式
启动命令行工具DIsql,使用MPP类型为LOCAL方式,登录备库修改数据库为Standby模式。
SQL> alter database standby;
7. 配置dmwatcher.ini
一般来说,每个单独的实例都是使用一个单独的守护进程守护。比如实时主备和读写分离集群的配置。
由于同一台机器上有不同组的两个实例,我们可以只配置一个守护进程,同时守护两个实例。
mppdw1 机器上配置dmwatcher.ini,配置为全局守护类型,使用自动切换模式。
|
[GRP1] DW_TYPE = GLOBAL # 全局守护类型 DW_MODE = AUTO # 自动切换模式 DW_ERROR_TIME = 10 # 远程守护进程故障认定时间 INST_RECOVER_TIME = 60 # 主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 # 本地实例故障认定时间 INST_OGUID = 45330 # 守护系统唯一OGUID值 INST_INI = /dmdata/EP01/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 # 打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver # 命令行方式启动 RLOG_SEND_THRESHOLD = 0 # 指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 # 指定备库重演日志的时间阀值,默认关闭 [GRP2] DW_TYPE = GLOBAL # 全局守护类型 DW_MODE = AUTO # 自动切换模式 DW_ERROR_TIME = 10 # 远程守护进程故障认定时间 INST_RECOVER_TIME = 60 # 主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 # 本地实例故障认定时间 INST_OGUID = 45331 # 守护系统唯一OGUID值 INST_INI = /dmdata/EP22/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 # 打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver # 命令行方式启动 RLOG_SEND_THRESHOLD = 0 # 指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 # 指定备库重演日志的时间阀值,默认关闭 |
mppdw2 机器上配置dmwatcher.ini,配置为全局守护类型,使用自动切换模式。
|
[GRP1] DW_TYPE = GLOBAL # 全局守护类型 DW_MODE = AUTO # 自动切换模式 DW_ERROR_TIME = 10 # 远程守护进程故障认定时间 INST_RECOVER_TIME = 60 # 主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 # 本地实例故障认定时间 INST_OGUID = 45330 # 守护系统唯一OGUID值 INST_INI = /dmdata/EP11/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 # 打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver # 命令行方式启动 RLOG_SEND_THRESHOLD = 0 # 指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 # 指定备库重演日志的时间阀值,默认关闭 [GRP2] DW_TYPE = GLOBAL # 全局守护类型 DW_MODE = AUTO # 自动切换模式 DW_ERROR_TIME = 10 # 远程守护进程故障认定时间 INST_RECOVER_TIME = 60 # 主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 # 本地实例故障认定时间 INST_OGUID = 45331 # 守护系统唯一OGUID值 INST_INI = /dmdata/EP02/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 # 打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver # 命令行方式启动 RLOG_SEND_THRESHOLD = 0 # 指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 # 指定备库重演日志的时间阀值,默认关闭 |
8. 配置监视器
由于主备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知备库接管为新的主库,具有自动故障处理的功能。
故障自动切换模式下,必须配置确认监视器,且确认监视器最多只能配置一个。
修改dmmonitor.ini配置确认监视器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。
|
MON_DW_CONFIRM = 1 # 确认监视器模式 MON_LOG_PATH = /dmdata/dmmonitor/log # 监视器日志文件存放路径 MON_LOG_INTERVAL = 60 # 每隔60s定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 # 每个日志文件最大32M MON_LOG_SPACE_LIMIT = 0 # 不限定日志文件总占用空间 [GRP1] MON_INST_OGUID = 45330 # 组GRP1的唯一OGUID值 # 以下配置为监视器到组GRP1的守护进程的连接信息,以"IP:PORT"的形式配置 #IP 对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT MON_DW_IP = 192.168.10.201:5253 MON_DW_IP = 192.168.10.202:5254 [GRP2] MON_INST_OGUID = 45331 # 组GRP2的唯一OGUID值 # 以下配置为监视器到组GRP2的守护进程的连接信息,以"IP:PORT"的形式配置 #IP 对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT MON_DW_IP = 192.168.10.202:5253 MON_DW_IP = 192.168.10.201:5254 |
9. 启动守护进程
注册守护进程服务,分别启动mppdw1、mppdw2机器上的守护进程
./dm_service_installer.sh -t dmwatcher -p DW1 -watcher_ini /dmdata/EP01/dmwatcher.ini
./dm_service_installer.sh -t dmwatcher -p DW2 -watcher_ini /dmdata/EP02/dmwatcher.ini
DmWatcherServiceDW1 start
DmWatcherServiceDW2 start
守护进程启动后,进入Startup状态,此时实例都处于Mount状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例Open,并切换为Open状态。
10. 启动监视器
启动监视器:
dmmonitor /dmdata/dmmonitor/dmmonitor.ini

至此MPP实时主备搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行show命令,可以监控到所有实例都处于Open状态,所有守护进程也都处于Open状态,即为正常运行状态。
11. 验证MPP主备
1) MPP 验证
在MPP主节点1创建测试表:
|
[dmdba@mppdw1 ~]$ disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is primary, state is open login used time: 6.018(ms) disql V8 SQL> set lineshow off timing off SQL> create table mevi as select * from sysobjects; executed successfully |
在MPP主节点2查询:MPP运行正常
|
[dmdba@mppdw2 ~]$ disql SYSDBA/SYSDBA*LOCAL
Server[LOCALHOST:5236]:mode is primary, state is open login used time: 4.127(ms) disql V8 SQL> set lineshow off timing off SQL> select count(*) from mevi;
COUNT(*) -------------------- 0
SQL> exit [dmdba@mppdw2 ~]$ disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is primary, state is open login used time: 5.289(ms) disql V8 SQL> set lineshow off timing off SQL> select count(*) from mevi;
COUNT(*) -------------------- 1327 |
2) 数据守护验证
在GRP1备节点查询
|
[dmdba@mppdw2 ~]$ disql SYSDBA/SYSDBA@LOCALHOST:5237
Server[LOCALHOST:5237]:mode is standby, state is open login used time: 3.352(ms) disql V8 SQL> set lineshow off timing off SQL> select count(*) from mevi;
COUNT(*) -------------------- 1327 |
在GRP2备节点查询
|
[dmdba@mppdw1 ~]$ disql SYSDBA/SYSDBA@LOCALHOST:5237
Server[LOCALHOST:5237]:mode is standby, state is open login used time: 4.356(ms) disql V8 SQL> set lineshow off timing off SQL> select count(*) from mevi;
COUNT(*) -------------------- 0 |
确认守护进程的信息,运行正常
|
[dmdba@mppdw1 ~]$ disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is primary, state is open login used time: 4.011(ms) disql V8 SQL> set lineshow off timing off SQL> select * from v$dmwatcher;
N_GROUP GROUP_NAME INST_NAME DW_TYPE DW_MODE AUTO_RESTART DW_STATUS DW_SUB_STATUS ----------- ---------- ------------- ------- ------- ------------ --------- --------------- LAST_MSG_TIME SWITCH_COUNT CTL_NUM INST_NUM MAX_CONN_NUM ---------------------------------------------------------------------------------------------------- ------------ ----------- ----------- ------------ 2 GRP2 GRP2_MPP_EP02 GLOBAL AUTO 1 OPEN SUB_STATE_START 2020-08-18 21:20:13.000000 0 1 1 2
2 GRP1 GRP1_MPP_EP01 GLOBAL AUTO 1 OPEN SUB_STATE_START 2020-08-18 21:20:13.000000 0 1 1 2
SQL> select * from v$mal_link_status;
SRC_SITE DEST_SITE CTL_LINK_STATUS DATA_LINK_STATUS ------------- ------------- --------------- ---------------- GRP2_MPP_EP02 GRP1_MPP_EP01 CONNECTED CONNECTED GRP2_MPP_EP02 GRP1_MPP_EP11 CONNECTED CONNECTED GRP2_MPP_EP02 GRP2_MPP_EP22 CONNECTED CONNECTED GRP1_MPP_EP01 GRP2_MPP_EP02 CONNECTED CONNECTED GRP1_MPP_EP01 GRP1_MPP_EP11 CONNECTED CONNECTED GRP1_MPP_EP01 GRP2_MPP_EP22 CONNECTED CONNECTED
6 rows got |