达梦数据库_DM8配置MPP主备


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

1、环境说明

  本例配置2个MPP节点,每个节点作为主库,与其备库组成一个守护组,因此需要配置两个守护组,取名分别为GRP1、GRP2,主库名为GRP1_MPP_EP01/ GRP2_MPP_EP02,对应的备库实例名分别为GRP1_MPP_EP11/GRP2_MPP_EP22。

  准备3台机器A、B、C,A和B用来交叉部署实例,C用来部署监视器。其中A和B 配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机,C接入内部网络。

  机器事先都安装了DM,安装路径为’/dm’,执行程序保存在’/dm/bin’目录中,数据存放路径为’/dm/data/EP01’, ’/dm/data/EP02’。

表1.1 配置环境说明

机器名

IP地址

初始状态

操作系统

A

192.168.46.141

10.90.10.2

主库GRP1_MPP_EP01 备库GRP2_MPP_EP22

CentOS7

B

192.168.46.144

10.90.10.3

主库GRP2_MPP_EP02 备库GRP1_MPP_EP11

CentOS7

C

10.90.10.8

监视器

CentOS7

表1.2 端口规划—主库

实例名

PORT_NUM

MAL_INST_DW_PORT

MAL_HOST

MAL_PORT

MAL_DW_PORT

MPP实例序号

GRP1_MPP_EP01

5236

5243

10.90.10.2

5337

5253

0

GRP2_MPP_EP02

5236

5243

10.90.10.3

5337

5253

1

表1.3 端口规划—备库

实例名

PORT_NUM

MAL_INST_DW_PORT

MAL_HOST

MAL_PORT

MAL_DW_PORT

对应主库

GRP1_MPP_EP11

5237

5244

10.90.10.3

5338

5254

GRP1_MPP_EP01

GRP2_MPP_EP22

5237

5244

10.90.10.2

5338

5254

GRP2_MPP_EP02

表1.4 守护进程规划

组名

实例名

所在机器

GRP1

GRP1_MPP_EP01

10.90.10.2

GRP1_MPP_EP11

10.90.10.3

GRP2

GRP2_MPP_EP02

10.90.10.3

GRP2_MPP_EP22

10.90.10.2

2、数据准备

A机器上初始化库至目录/dm/data/EP01:

./dminit path=/dm/data/EP01

 B机器上初始化库至目录/dm/data/EP02:

./dminit path=/dm/data/EP02

 即完成两个主数据库的初始化,然后分别备份两个数据库(建议脱机备份)。本例中采取机器交叉的方式配置两个备数据库,分别对应存放的目录为:

  B机器的/dm/data/EP11

  A机器的/dm/data/EP22 

3、配置主库GRP1_MPP_EP01

3.1 配置 dm.ini A机器上配置主库的实例名为GRP1_MPP_EP01dm.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次的日志发送信息

3.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.46.141 #MAL系统监听TCP连接的IP地址
MAL_PORT               = 5337           #MAL系统监听TCP连接的端口
MAL_INST_HOST          = 10.90.10.2     #实例的对外服务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.46.144
MAL_PORT               = 5337
MAL_INST_HOST          = 10.90.10.3
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.46.144
MAL_PORT               = 5338
MAL_INST_HOST          = 10.90.10.3
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.46.141
MAL_PORT               = 5338
MAL_INST_HOST          = 10.90.10.2
MAL_INST_PORT          = 5237
MAL_DW_PORT            = 5254
MAL_INST_DW_PORT       = 5244

3.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        = /dm/data/EP01/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE   = 128                       #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0                         #单位Mb,0表示无限制,范围1024~4294967294

3.4 配置dmmpp.ctl

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

表3.1 dmmpp.ini配置项

配置项

配置含义

[SERVICE_NAME]

标识每个实例的选项名

MPP_SEQ_NO

实例在MPP系统内的序号

MPP_INST_NAME

节点实例名

本例中两节点的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=/dm/data/EP01/DAMENG/dmmpp.ini DEST=/dm/data/EP01/DAMENG/dmmpp.ctl

3.5 启动主库

以Mount方式启动主库。

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

3.6 设置 OGUID 

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

./disql SYSDBA/SYSDBA*local@localhost:5236

设置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);

更改数据库模式

alter database primary;

4、配置主库GRP2_MPP_EP02

4.1 配置 dm.ini B机器上配置主库的实例名为GRP2_MPP_EP02,dm.ini参数修改如下:

#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过16 
INSTANCE_NAME        = GRP2_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次的日志发送信息

4.2 配置dmmal.ini 

直接将 A 机器上实例 GRP1_MPP_EP01 配置的 dmmal.ini 拷贝到/dm/data/EP02/DAMENG目录中。

4.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        = /dm/data/EP02/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE   = 128                       #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0                         #单位Mb,0表示无限制,范围1024~4294967294M

4.4 配置dmmpp.ctl

同3.4 配置dmmpp.ctl,拷贝dmmpp.ctl到/dm/data/EP02/DAMENG目录即可。

4.5 启动主库

以Mount方式启动主库。

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

4.6 设置 OGUID 

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

./disql SYSDBA/SYSDBA*local@localhost:5236

设置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);

更改数据库模式

alter database primary;

/********未完成*********/