为了提高 MPP 系统可靠性,克服由于单节点故障导致整个系统不能继续正常工作, DM在普通的 MPP 系统基础上,引入主备守护机制,将 MPP 节点作为主库节点,增加备库作为备份节点,必要时可切换为主库代替故障节点工作,提高系统的可靠性和可用性。

文章目录

  • 一、环境说明
    • 1、配置环境说明
    • 2、主库端口规划
    • 3、备库端口规划
    • 4.守护进程规划
  • 二、数据准备
    • 1、数据库正常关闭
      • 1.1 后台启动关闭
      • 1.2 前台正常关闭
    • 2、脱机备份还原
      • 2.1、EP01脱机备份
      • 2.2、EP11脱机还原
      • 2.3、EP02脱机备份
      • 2.4、EP22脱机还原
    • 3、授予权限
  • 三、配置主库EP01
    • 1、配置dm.ini
    • 2、配置dmmal.ini
    • 3、配置dmarch.ini
    • 4、配置dmmpp.ctl
    • 5、启动主库EP01
    • 6、配置OGUID
    • 7、设置主库模式
  • 四、配置主库EP02
    • 1、配置dm.ini
    • 2、配置dmmal.ini
    • 3、配置dmarch.ini
    • 4、配置dmmpp.ctl
    • 5、启动主库EP02
    • 6、配置OGUID
    • 7、设置主库模式
  • 五、配置备库EP11
    • 1、配置dm.ini
    • 2、配置dmmal.ini
    • 3、配置dmarch.ini
    • 4、配置dmmpp.ctl
    • 5、启动备库EP11
    • 6、配置OGUID
    • 7、设置主库模式
  • 六、配置备库EP22
    • 1、配置dm.ini
    • 2、配置dmmal.ini
    • 3、配置dmarch.ini
    • 4、配置dmmpp.ctl
    • 5、启动备库EP11
    • 6、配置OGUID
    • 7、设置主库模式
  • 七、配置dmwatcher.ini
    • 1、组GRP1配置dmwatcher.ini
    • 2、组GRP2配置dmwatcher.ini
  • 八、配置确认监视器
  • 九、启动主备守护进程
  • 十、启动监视

一、环境说明

  • 配置两个守护组,分别为GRP1和GRP2,主库名为EP01和EP02,

    备库名为EP11和EP22

  • 准备三台机器MPP_A,MPP_B和MPP_M用来交叉部署监视器。

  • 三台机器都事先安装了DM,我的安装路径为 ‘/dm8’,执行程序保存在 ‘/dm8/bin’ 目录中,数据存放路径为 ‘/dm8/data/EP01’ 和 ‘/dm8/data/EP02’ 。

其对应关系为:

机器MPP_A 机器MPP_B
主库EP01 备库EP11
备库EP22 主库EP02

1、配置环境说明

机器名 IP地址 初始状态 操作系统
MPP_A 外网:192.168.175.171
内网:192.168.146.171
主库EP01
备库EP22
CentOS-7-x86_64-DVD-2009
MPP_B 外网:192.168.175.172
内网:192.168.146.172
主库EP02
备库EP11
CentOS-7-x86_64-DVD-2009
MPP_M 内网:192.168.146.173 确认监视器 CentOS-7-x86_64-DVD-2009

2、主库端口规划

实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT MPP实例序号
EP01 5236 5243 192.168.146.171 5337 5253 0
EP02 5236 5243 192.168.146.172 5337 5253 1

3、备库端口规划

实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT 对应主库
EP11 5237 5244 192.168.146.172 5338 5254 EP01
EP22 5237 5244 192.168.146.171 5338 5254 EP02

4.守护进程规划

组名 实例名 所在机器
GRP1 EP01 192.168.146.171
GRP1 EP11 192.168.146.172
GRP2 EP02 192.168.146.172
GRP2 EP22 192.168.146.171

二、数据准备

1、数据库正常关闭

! 在脱机备份还原之前要确保数据库能够正常启动关闭

1.1 后台启动关闭
  • 方式一:

切换至root用户下,执行:

systemctl stop DmServiceEP01.service   //关闭数据库后台
  • 方式二:

进入DM安装目录的bin目录下,执行:

./DmServiceEP01 stop
1.2 前台正常关闭

进入DM安装目录的bin目录下,执行:

./dmserver /dm8/data/EP01/DAMENG/dm.ini

等待打印出SYSTEM IS READY,之后便可按Ctrl+C关闭数据库前台

进入下面备份之前,先啰嗦一下,备份还原的时候都切换至dmdba用户进行操作,便可省略后续的授权操作。

2、脱机备份还原

2.1、EP01脱机备份

进入DM安装目录的bin目录下,启动dmrman工具:

./dmrman     //启动工具
backup database '/dm8/data/EP01/DAMENG/dm.ini' full backupset '/dm8/fullbak1'
2.2、EP11脱机还原

(1)备库拷贝主库备份文件

scp -r 192.168.175.171:/dm8/fullbak1 /dm8/

(2)还原备份文件

进入安装目录bin目录下,启动dmrman工具

./dmrman
restore database '/dm8/data/EP01/DAMENG/dm.ini' from backupset '/dm8/fullbak1'
recover database '/dm8/data/EP01/DAMENG/dm.ini' from backupset '/dm8/fullbak1'
recover database '/dm8/data/EP01/DAMENG/dm.ini' update db_magic
2.3、EP02脱机备份

进入DM安装目录的bin目录下,启动dmrman工具:

./dmrman     //启动工具
backup database '/dm8/data/EP02/DAMENG/dm.ini' full backupset '/dm8/fullbak2'
2.4、EP22脱机还原

(1)备库拷贝主库备份文件

scp -r 192.168.175.172:/dm8/fullbak1 /dm8/

(2)还原备份文件

进入安装目录bin目录下,启动dmrman工具

./dmrman
restore database '/dm8/data/EP01/DAMENG/dm.ini' from backupset '/dm8/fullbak2'
recover database '/dm8/data/EP01/DAMENG/dm.ini' from backupset '/dm8/fullbak2'
recover database '/dm8/data/EP01/DAMENG/dm.ini' update db_magic

3、授予权限

如果备份还原是在dmdba用户下操作的话,那么可以忽略此步。

查看备份文件的权限:

ll /dm8/fullbak1    //守护进程组GRP1的备份文件权限查看ll /dm8/fullbak2    //守护进程组GRP2的备份文件权限查看注:是在备库中查看
  • 若备份文件属dmdba用户,那么就直接跳过下面授权步骤

  • 若备份文件不属dmdba用户,那么就执行授权步骤

    //要切换至root用户下执行下面命令//守护组GRP1:
    chown dmdba:GRP1 -R /dm8/fullbak1
    chmod -R 755 /dm8/fullbak1//守护组GRP2
    chown dmdba:GRP2 -R /dm8/fullbak2
    chmod -R 755 /dm8/fullbak2
    

三、配置主库EP01

1、配置dm.ini

vi /dm8/data/EP01/DAMENG/dm.ini

注:主要修改前面四项即可

MAL_INI  = 1   #打开 MAL 系统
ARCH_INI  =    1   #打开 归档
ALTER_MODE_SATUS=  0   #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS= 2   #不允许备库 OFFLINE 表空间
RLOG_SEND_APPLY_MON =      64  #统计最近 64 次的日志发送信息
INSTANCE_NAME =    EP01    #实例名
PORT_NUM =     5236    #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60  #接收守护进程消息超时时间

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 = EP01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.171 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5337 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.171 #实例的对外服务 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 = EP02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.172
MAL_PORT = 5337
MAL_INST_HOST = 192.168.175.172 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 5253 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5243 #实例监听守护进程 TCP 连接的端口
[MAL_INST3]
MAL_INST_NAME = EP11 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.172 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.172 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5254 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5244 #实例监听守护进程 TCP 连接的端口
[MAL_INST4]
MAL_INST_NAME = EP22 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.171 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.171 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5254 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5244 #实例监听守护进程 TCP 连接的端口

3、配置dmarch.ini

  • 修改dmarch.ini,配置本地归档和实时归档。
  • 除了本地归档之外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。
  • 当前实例EP01是主库,需要向MPP备库EP11同步数据,因此实时归档的ARCH_DEST分别配置为EP11。
vi /dm8/data/EP01/DAMENG/dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP11 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/EP01/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M

4、配置dmmpp.ctl

(1)dmmpp.ctl 是二进制文件,由dmmpp.ini 文本通过dmctlcvt 工具转换而来,dmmpp.ini配置如下

[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = EP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = EP02

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MVFr1IWg-1661734778435)(D:\培训笔记\技术博客\数据守护集群搭建\MPP1\61.png)]

(2)转换命令执行:

进入安装目录的bin目录下,执行:

./dmctlcvt TYPE=2 SRC=/dm8/data/EP01/DAMENG/dmmpp.ini DEST=/dm8/data/EP01/DAMENG/dmmpp.ctl

5、启动主库EP01

以Mount方式启动主库:

./dmserver /dm8/data/EP01/DAMENG/dm.ini mount

注:一定要以 Mount 方式启动数据库实例, 否则系统启动时会重构回滚表空间,生成 Redo 日志; 并且, 启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。

6、配置OGUID

启动命令行工具Disql,使用MPP类型为LOCAL方式,登录主库设置OGUID值。

  • 登录

    ./disql SYSDBA/密码@192.168.175.171:5236#"{mpp_type=local}"
    
  • 执行:

    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;

四、配置主库EP02

1、配置dm.ini

vi /dm8/data/EP02/DAMENG/dm.ini

注:主要修改前面四项即可

MAL_INI  = 1   #打开 MAL 系统
ARCH_INI  =    1   #打开 归档
ALTER_MODE_SATUS=  0   #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS= 2   #不允许备库 OFFLINE 表空间
RLOG_SEND_APPLY_MON =      64  #统计最近 64 次的日志发送信息
INSTANCE_NAME =    EP02    #实例名
PORT_NUM =     5236    #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60  #接收守护进程消息超时时间

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 = EP01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.171 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5337 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.171 #实例的对外服务 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 = EP02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.172
MAL_PORT = 5337
MAL_INST_HOST = 192.168.175.172 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 5253 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5243 #实例监听守护进程 TCP 连接的端口
[MAL_INST3]
MAL_INST_NAME = EP11 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.172 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.172 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5254 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5244 #实例监听守护进程 TCP 连接的端口
[MAL_INST4]
MAL_INST_NAME = EP22 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.171 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.171 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5254 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5244 #实例监听守护进程 TCP 连接的端口

3、配置dmarch.ini

  • 修改dmarch.ini,配置本地归档和实时归档。
  • 除了本地归档之外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。
  • 当前实例EP02是主库,需要向MPP备库EP22同步数据,因此实时归档的ARCH_DEST分别配置为EP22。
vi /dm8/data/EP02/DAMENG/dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP22 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/EP02/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M

4、配置dmmpp.ctl

(1)省时做法:

四个数据库实例的dmmpp.ctl是相同的,所以直接复制就行

远程复制(B机器从A机器中复制过来):

scp -r 192.168.175.171:/dm8/data/EP01/DAMENG/dmmpp.ctl /dm8/data/EP02/DAMENG/

本地复制(B机器实例EP11从B机器实例EP02复制过来,后面备库配置会详细说明)

z注:后面的库配置都可仿照这里进行即可。

(2)详细做法:

① dmmpp.ctl 是二进制文件,由dmmpp.ini 文本通过dmctlcvt 工具转换而来,dmmpp.ini配置如下

[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = EP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = EP02

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2BC3NQA-1661734778436)(D:\培训笔记\技术博客\数据守护集群搭建\MPP1\61.png)]

② 转换命令执行:

进入安装目录的bin目录下,执行:

./dmctlcvt TYPE=2 SRC=/dm8/data/EP02/DAMENG/dmmpp.ini DEST=/dm8/data/EP02/DAMENG/dmmpp.ctl

5、启动主库EP02

以Mount方式启动主库:

./dmserver /dm8/data/EP02/DAMENG/dm.ini mount

注:一定要以 Mount 方式启动数据库实例, 否则系统启动时会重构回滚表空间,生成 Redo 日志; 并且, 启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。

6、配置OGUID

启动命令行工具Disql,使用MPP类型为LOCAL方式,登录主库设置OGUID值。

  • 登录

    ./disql SYSDBA/密码@192.168.175.171:5236#"{mpp_type=local}"
    
  • 执行:

    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;

五、配置备库EP11

1、配置dm.ini

vi /dm8/data/EP01/DAMENG/dm.ini

注:主要修改前面四项即可

MAL_INI  = 1   #打开 MAL 系统
ARCH_INI  =    1   #打开 归档
ALTER_MODE_SATUS=  0   #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS= 2   #不允许备库 OFFLINE 表空间
RLOG_SEND_APPLY_MON =      64  #统计最近 64 次的日志发送信息
INSTANCE_NAME =    EP01    #实例名
PORT_NUM =     5237    #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60  #接收守护进程消息超时时间

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 = EP01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.171 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5337 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.171 #实例的对外服务 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 = EP02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.172
MAL_PORT = 5337
MAL_INST_HOST = 192.168.175.172 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 5253 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5243 #实例监听守护进程 TCP 连接的端口
[MAL_INST3]
MAL_INST_NAME = EP11 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.172 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.172 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5254 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5244 #实例监听守护进程 TCP 连接的端口
[MAL_INST4]
MAL_INST_NAME = EP22 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.171 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.171 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5254 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5244 #实例监听守护进程 TCP 连接的端口

3、配置dmarch.ini

  • 修改dmarch.ini文档,配置本地归档和实时归档。
  • 除本地归档之外,其他配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。
  • 当前实例EP11是备库,守护系统配置完成后,可能在各种故障处理中,EP11切换为新的主库,(正常情况下,EP01会切换为新的备库),需要向EP01同步数据,因此实时归档的ARCH_DEST配置为EP01。
vi /dm8/data/EP01/DAMENG/dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/EP01/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M

4、配置dmmpp.ctl

(1)省时做法:

四个数据库实例的dmmpp.ctl是相同的,所以直接复制就行。

本地复制(B机器实例EP11从B机器实例EP02复制过来):

cp /dm8/data/EP02/DAMENG/dmmpp.ctl /dm8/data/EP11/DAMENG/dmmpp.ctl

(2)详细做法:

① dmmpp.ctl 是二进制文件,由dmmpp.ini 文本通过dmctlcvt 工具转换而来,dmmpp.ini配置如下

[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = EP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = EP02

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L94M7mw9-1661734778436)(D:\培训笔记\技术博客\数据守护集群搭建\MPP1\61.png)]

② 转换命令执行:

进入安装目录的bin目录下,执行:

./dmctlcvt TYPE=2 SRC=/dm8/data/EP01/DAMENG/dmmpp.ini DEST=/dm8/data/EP01/DAMENG/dmmpp.ctl

5、启动备库EP11

以Mount方式启动主库:

./dmserver /dm8/data/EP01/DAMENG/dm.ini mount

注:一定要以 Mount 方式启动数据库实例, 否则系统启动时会重构回滚表空间,生成 Redo 日志; 并且, 启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。

6、配置OGUID

启动命令行工具Disql,登录备库设置OGUID值。

  • 登录

    ./disql SYSDBA/密码@192.168.175.172:5237
    
  • 执行:

    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;

六、配置备库EP22

1、配置dm.ini

vi /dm8/data/EP02/DAMENG/dm.ini

注:主要修改前面四项即可

MAL_INI  = 1   #打开 MAL 系统
ARCH_INI  =    1   #打开 归档
ALTER_MODE_SATUS=  0   #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS= 2   #不允许备库 OFFLINE 表空间
RLOG_SEND_APPLY_MON =      64  #统计最近 64 次的日志发送信息
INSTANCE_NAME =    EP02    #实例名
PORT_NUM =     5237    #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60  #接收守护进程消息超时时间

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 = EP01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.171 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5337 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.171 #实例的对外服务 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 = EP02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.172
MAL_PORT = 5337
MAL_INST_HOST = 192.168.175.172 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 5253 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5243 #实例监听守护进程 TCP 连接的端口
[MAL_INST3]
MAL_INST_NAME = EP11 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.172 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.172 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5254 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5244 #实例监听守护进程 TCP 连接的端口
[MAL_INST4]
MAL_INST_NAME = EP22 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.146.171 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.175.171 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5254 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5244 #实例监听守护进程 TCP 连接的端口

3、配置dmarch.ini

  • 修改dmarch.ini文档,配置本地归档和实时归档。
  • 除本地归档之外,其他配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。
  • 当前实例EP22是备库,守护系统配置完成后,可能在各种故障处理中,EP22切换为新的主库,(正常情况下,EP02会切换为新的备库),需要向EP02同步数据,因此实时归档的ARCH_DEST配置为EP02。
vi /dm8/data/EP02/DAMENG/dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/EP02/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M

4、配置dmmpp.ctl

(1)省时做法:

四个数据库实例的dmmpp.ctl是相同的,所以直接复制就行。

本地复制(A机器实例EP22从A机器实例EP01复制过来):

cp /dm8/data/EP01/DAMENG/dmmpp.ctl /dm8/data/EP01/DAMENG/dmmpp.ctl

(2)详细做法:

① dmmpp.ctl 是二进制文件,由dmmpp.ini 文本通过dmctlcvt 工具转换而来,dmmpp.ini配置如下

[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = EP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = EP02

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zS22HlUC-1661734778437)(D:\培训笔记\技术博客\数据守护集群搭建\MPP1\61.png)]

② 转换命令执行:

进入安装目录的bin目录下,执行:

./dmctlcvt TYPE=2 SRC=/dm8/data/EP02/DAMENG/dmmpp.ini DEST=/dm8/data/EP02/DAMENG/dmmpp.ctl

5、启动备库EP11

以Mount方式启动主库:

./dmserver /dm8/data/EP02/DAMENG/dm.ini mount

注:一定要以 Mount 方式启动数据库实例, 否则系统启动时会重构回滚表空间,生成 Redo 日志; 并且, 启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。

6、配置OGUID

启动命令行工具Disql,登录备库设置OGUID值。

  • 登录

    ./disql SYSDBA/密码@192.168.175.171:5237
    
  • 执行:

    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,登录主库修改数据库为Stnadby模式

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);SQL>ALTER DATABASE STANDBY;SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

七、配置dmwatcher.ini

1、组GRP1配置dmwatcher.ini

在A机器中配置,

vi /dm8/data/EP01/DAMENG/dmwatcher.ini

2、组GRP2配置dmwatcher.ini

在B机器中配置,

vi /dm8/data/EP02/DAMENG/dmwatcher.ini

八、配置确认监视器

vi /dm8/data/dmmonitor.ini
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      = 45330               #组GRP1的唯一OGUID值#以下配置为监视器到组GRP1的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP对应dmmal.ini中的 MAL_HOST,PORT对应dmmal.ini中的 MAL_DW_PORT
MON_DW_IP          = 192.168.146.171:5253
MON_DW_IP          = 192.168.146.172: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.146.172:5253
MON_DW_IP          = 192.168.146.171:5254

九、启动主备守护进程

分别启动机器A、B上的守护进程,

./dmwatcher /dm8/data/EP01/DAMENG/dmwatcher.ini
./dmwatcher /dm8/data/EP02/DAMENG/dmwatcher.ini

守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open,并切换为 Open 状态。

十、启动监视

启动监视器

./dmmonitor /dm8/data/dmmonitor.ini

至此 MPP 实时主备搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。

https://eco.dameng.com

数据守护集群之MPP主备集群相关推荐

  1. 部署DM MPP主备集群

    DM8的DEM上在部署MPP集群时无法和DM7.6的DEM一样可以同时部署DataWatch,所以这里采用手动部署.后面有补充DM7.6部署MPP主备集群步骤截图. 使用两种方式部署MPP主备集群(交 ...

  2. 达梦数据库实时主备集群的同步机制和切换机制

    DM数据守护介绍 1. DM 数据守护(Data Watch) 是一种集成化的高可用.高性能数据库解决方案,是数据库异地容灾的首选方案.通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏).自然灾害 ...

  3. ODPS主备集群双向数据复制导致主备中心网络打爆问题

    简介:ODPS主备集群双向数据复制导致主备中心网络打爆问题 1. 故障问题描述 客户现场发生了ODPS主备机房相互数据全量复制导致的主备中心网络被打爆的问题,严重影响了日常运行的ODPS任务.在ODP ...

  4. HDFS High Availability(HA)高可用、单点故障、主备集群、脑裂问题、数据同步问题、HDFS HA解决方案—QJM

    HDFS High Availability(HA)高可用 1.1 High Availability背景知识 1.1.1 单点故障.高可用 单点故障(英语:single point of failu ...

  5. 达梦主备集群,主库部分redo被删除或损坏,故障恢复。

    记录一次在虚拟机上安装达梦主备集群,搭建完成后,由于主库新添加3个2G redo.log,造成虚拟机空间不足,无法归档.然后删除3个redo,实例无法启动又到恢复过程.详细步骤如下: 主库报错: 20 ...

  6. DM8主备集群中主备库 的拆分与合并

    DM8主备集群中主备库的拆分与合并 环境准备 添加数据 新建表空间及用户并赋权 创建表 STUDENT 和 COURSE 插入数据并提交 查询验证数据 对主库进行在线备份 停止集群 停止守护进程 停止 ...

  7. java应用系统正确的连接DM主备集群

    jdbc连接DM主备集群 一句话 为保证集群在出故障时能够正常切换,应用连接时采用服务名方式进行连接,将连接串中的ip改成服务名如下面配置的DM在应用服务器配置dm_svc.conf文件: 应用服务器 ...

  8. 使用Druid,C3P0连接池连接达梦主备集群

    使用Druid,C3P0连接达梦数据库主备集群 导入连接池对应的驱动包,达梦的JDBC驱动包进行连接 连接池信息: Druid连接池版本:1.1.22 C3P0连接池版本:0.9.1 链接:https ...

  9. hbase 主备集群切换方法

    hbase 提供了replication机制,实现在两个集群之间的双向同步功能,其基本原理是根据WAL日志进行同步,具体可参照 https://hbase.apache.org/1.2/book.ht ...

  10. GBase 8s灾备集群HAC (三) 主备配置

    目录 1.在主机(PRIMARY)启动 2.使用主机连接备机 3.测试主备情况 1.在主机(PRIMARY)启动 使用命令oninit -ivwy启动数据库: [gbasedbt@localhost ...

最新文章

  1. 关于微软Silverlight,你应该知道的10件事
  2. UVA 10815 Andy's First Dictionary(STL: set)
  3. stream流【java8 二】
  4. java字节码_掌握Java字节码
  5. 蓝桥杯第八届省赛JAVA真题----油漆面积
  6. __nonnull((1)) 未完待续
  7. 下一较大值(一,二)
  8. java怎么使用floor_Java NavigableSet floor()用法及代码示例
  9. python爬取拉勾网_python爬虫—爬取拉钩网
  10. 网易云信 web demo体验-会议
  11. Python Pandas库教程
  12. 计算机类的言情小说,推荐5本女主占有欲超强的言情小说,多汁多肉,本本都戳动你心!...
  13. QQ邮箱炸啦,我的附件名怎么乱码?解决javaMail发送QQ邮件,附件名乱码的问题
  14. (论文笔记)An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition
  15. mount qemu qcow2、img
  16. 数据库的升序降序排列
  17. TensorFlow1.14或TensorFlow2内部获取mfcc原理探索(matlab复现或python复现)
  18. 打开了ros中的rviz,显示不了机器人模型
  19. 货来,速抢 — 天选 2 首发评测
  20. JFFS2 notice: (332) jffs2_get_inode_nodes: Node header CRC failed at 0x1780784

热门文章

  1. PPT插入图片为任意形状
  2. 检验图片有没有被 P 过
  3. 一网打尽:指针和数组
  4. 交易apple id但是忘了关闭icloud,如何关闭激活锁?
  5. 桌面虚拟化 VMware Horizon View 7 安装部署指南 云办公系统安装部署
  6. 我不是蓝牙大神,但还是斗胆对蓝牙学习路线给点建议!
  7. leetcode No5 最长回文子串
  8. 如何使用Python解锁星河远征军的科幻旅途
  9. vue+elementUI 怎么上传图片至阿里云
  10. 腾讯面试题, 2020年,让我们愉快的赛一次马!