达梦大规模并行处理 MPP是基于达梦数据库管理系统研发的完全对等无共享式集群组件,支持将多个 DM 数据库实例组织为一个并行计算网络,对外提供统一的数据库服务。
安装前准备:
本文分享如何在部署mpp+主备集群,准备3台虚拟机,并为每个节点配置双IP,两台节点交叉配置主备,一台配置监视器。
节点 | 心跳IP | 服务IP |
EP01/EP12(EP02备库) | 193.168.33.128 | 193.168.23.128 |
EP02/EP11(EP01备库) | 193.168.33.129 | 193.168.23.129 |
监视器 | 193.168.33.131 |
安装部署:
1、安装数据,并进行实例初始化,在节点一上初始化主库EP01和EP12(EP02的备库)。节点二上初始化主库EP02和EP11(EP01的备库),数据库安装步骤略,可翻阅以往博客
./dminit path=/dm/dmdata PAGE_SIZE=32 LOG_SIZE=1024 CASE_SENSITIVE=N CHARSET=1 PORT_NUM=5236 DB_NAME=EP01 INSTANCE_NAME=EP01
./dminit path=/dm/dmdata PAGE_SIZE=32 LOG_SIZE=1024 CASE_SENSITIVE=N CHARSET=1 PORT_NUM=5237 DB_NAME=EP12 INSTANCE_NAME=EP12
./dminit path=/dm/dmdata PAGE_SIZE=32 LOG_SIZE=1024 CASE_SENSITIVE=N CHARSET=1 PORT_NUM=5236 DB_NAME=EP02 INSTANCE_NAME=EP02
./dminit path=/dm/dmdata PAGE_SIZE=32 LOG_SIZE=1024 CASE_SENSITIVE=N CHARSET=1 PORT_NUM=5237 DB_NAME=EP11 INSTANCE_NAME=EP11
2、修改EP01和EP02的dm.ini文件
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
MPP_INI = 1 #启用 MPP 配置
3、配置 dmmal.ini,各主备库的 dmmal.ini 配置必须完全一致
MAL_CHECK_INTERVAL = 30 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 30 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = EP01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.33.128 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5337 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.23.128 #实例的对外服务 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
MAL_HOST = 192.168.33.129
MAL_PORT = 5337
MAL_INST_HOST = 192.168.23.129
MAL_INST_PORT = 5236
MAL_DW_PORT = 5253
MAL_INST_DW_PORT = 5243
[MAL_INST3]
MAL_INST_NAME = EP11
MAL_HOST = 192.168.33.129
MAL_PORT = 5338
MAL_INST_HOST = 192.168.23.129
MAL_INST_PORT = 5237
MAL_DW_PORT = 5254
MAL_INST_DW_PORT = 5244
[MAL_INST4]
MAL_INST_NAME = EP12
MAL_HOST = 192.168.33.128
MAL_PORT = 5338
MAL_INST_HOST = 192.168.23.128
MAL_INST_PORT = 5237
MAL_DW_PORT = 5254
MAL_INST_DW_PORT = 5244
4、配置EP01的dmarch.ini,设置实时归档,EP02同理,ARCH_DEST指向各自备库
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/dmarch/EP01
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 4096
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP11 #实时归档目标实例名
5、生成dmmpp.ctl,先配置dmmpp.ini,mpp_seq_no不能相同再使用dmctlcvt 工具转换,工具在达梦数据库安装目录的bin路径下
[service_name1]
mpp_seq_no = 0
mpp_inst_name = EP01
[service_name2]
mpp_seq_no = 1
mpp_inst_name = EP02
转换:./dmctlcvt type=2 src=/dm/dmdata/EP01/dmmpp.ini dest=/dm/dmdata/EP01/dmmpp.ctl
6、以mount方式启动EP01主库并设置oguid和修改模式,注意EP01和EP11的oguid相同,EP02和EP12的oguid相同,各自两两组成一个守护
sp_set_oguid(20210818);
alter DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
7、将dmmal.ini和 dmmpp.ctl发送到EP02上并配置归档
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/dmarch/EP01
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 4096
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP12 #实时归档目标实例名
8、以mount 方式启动EP02,并设置oguid和模式,注意oguid不同
sp_set_oguid(20210819);
alter DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
9、配置在EP02节点上的备库EP11,编辑dm.ini
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
MPP_INI = 1 #启用 MPP 配置
10、将dmmal.ini和 dmmpp.ctl发送到EP11上并配置归档
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/dmarch/EP11
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 4096
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP01#实时归档目标实例名
11、以mount方式启动备库EP11并设置oguid和数据库模式,注意oguid和EP01相同
sp_set_oguid(20210818);
alter DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
12、配置在节点EP01上的备库EP12,编辑dm.ini
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
MPP_INI = 1 #启用 MPP 配置
13、将dmmal.ini和 dmmpp.ctl复制到EP12上并配置归档
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/dmarch/EP12
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 4096
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP02#实时归档目标实例名
14、以mount方式启动备库EP12,并设置oguid和数据库模式
sp_set_oguid(20210819);
alter DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
15、配置数据守护,先在EP01上配置
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 20210818 #守护系统唯一 OGUID 值
INST_INI = /dm/dmdata/EP01/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/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 = 20210819 #守护系统唯一 OGUID 值
INST_INI = /dm/dmdata/EP12/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
16、在EP02上的配置
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 20210818 #守护系统唯一 OGUID 值
INST_INI = /dm/dmdata/EP11/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/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 = 20210819 #守护系统唯一 OGUID 值
INST_INI = /dm/dmdata/EP02/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
17、在第三台虚拟机配置两个监视器,一个确认监视器,一个非确认监视器,方便运维
MON_DW_CONFIRM = 1 #1为确认监视器模式
MON_LOG_PATH = /dm8/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 20210818 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以—IP:PORT的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.33.128:5253
MON_DW_IP = 192.168.33.129:5254
[GRP2]
MON_INST_OGUID = 20210819 #组 GRP2 的唯一 OGUID 值
#以下配置为监视器到组 GRP2 的守护进程的连接信息,以—IP:PORT?的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.33.129:5253
MON_DW_IP = 192.168.33.128:5254
18、在EP01和EP02上分别注册守护进程服务
./dm_service_installer.sh -t dmwatcher -p EP1 -watcher_ini /dm/dmdata/EP01/dmwatcher.ini
./dm_service_installer.sh -t dmwatcher -p EP2 -watcher_ini /dm/dmdata/EP02/dmwatcher.ini
19、分别启动守护进程,并通过观察普通监视器确认集群状态是否正常
20、确认正常后注册监视器服务,并以服务方式启动
./dm_service_installer.sh -t dmmonitor -p EP -monitor_ini /dm8/dmdba/dmdbms/bin/dmmonitor0.ini
Systemctl start DmMonitorEP
到此,dmmpp+主备集群部署分享完成
---------------------------------------------------------------------------------------------------------------------------------
更多技术干货请移步达梦技术社区: