2021-04-01

DM8MPP动态扩展节点

前言:
本篇博文为DM8MPP系列的第二篇,主旨为介绍达梦数据库MPP产品如何进行动态扩展节点,本篇发布内容是基于上一篇博文进行操作撰写的,不明之处请读者参考上一篇博文。具体博文链接如下:
DM8MPP安装部署操作手册
链接:https://blog.csdn.net/qq_42770030/article/details/113179638?spm=1001.2014.3001.5501

一、 环境准备
1.1 主机规划

节点名称IP Addr数据版本
Red Hat MPP3192.168.175.169(内外网)dm8_20201103_x86_rh6_64_sec_8.1.1.144

1.2 系统规划

实例名MAL_INST_HOSTMAL_INST_PORTMAL_HOSTMAL端口MPP_SEQNO
EP03192.168.175.1695238192.168.175.16952712

1.3 DM8数据库安装
在节点EP03进行DM8数据库安装和实例初始化,具体安装过程参考DM8安装操作手册。
1.4 数据准备
本次动态节点扩展以两节点DM8MPP系统为例,具体搭建过程参考DM8MPP安装部署操作手册;此MPP系统已有EP01和EP02两个节点,现在要再增加一个节点EP03。设当前的两节点 MPP 系统中已有哈希分布表 T1(普通表)和 T2(HUGE 表)、复制分布表 T3 和随机分布表 T4,具体建表和数据插入语句如下:

--哈希分布表 T1
DROP TABLE T1;
CREATE TABLE T1(C1 INT,C2 INT,C3 INT,C4 VARCHAR(10)) DISTRIBUTED BY HASH(C1);

DECLARE
i INT;
BEGIN
FOR i IN 1..1000 LOOP
INSERT INTO T1 VALUES (i,i+1,i+2,'adasf');
END LOOP;
END;
/
COMMIT;

--哈希分布表 T2
DROP TABLE T2;
CREATE HUGE TABLE T2(C1 INT,C2 INT,C3 INT,C4 VARCHAR(10)) DISTRIBUTED BY HASH(C1);

DECLARE
i INT;
BEGIN
FOR i IN 1..10 LOOP
INSERT INTO T2 VALUES (i,i+1,i+2,'adasf');
END LOOP;
END;
/
COMMIT;

--复制分布表 T3
DROP TABLE T3;
CREATE TABLE T3(C1 INT,C2 INT,C3 INT,C4 VARCHAR(10)) DISTRIBUTED FULLY;

DECLARE
i INT;
BEGIN
FOR i IN 1..1000 LOOP
INSERT INTO T3 VALUES (i,i+1,i+2,'adasf');
END LOOP;
END;
/
COMMIT;

--随机分布表 T4
DROP TABLE T4;
CREATE TABLE T4(C1 INT,C2 INT,C3 INT,C4 VARCHAR(10)) DISTRIBUTED RANDOMLY;

DECLARE
i INT;
BEGIN
FOR i IN 1..1000 LOOP
INSERT INTO T4 VALUES (i,i+1,i+2,'adasf');
END LOOP;
END;
/
COMMIT; 

二、动态增加节点
2.1 禁止原先DM8MPP系统DDL操作
全局登录DM8MPP系统任一节点,执行下面的语句禁止系统的DDL操作,本次操作登陆EP01节点:

SP_DDL_FORBIDEN(1);

如图:
在这里插入图片描述

2.2 克隆数据库
数据库克隆的目的是把原DM8MPP系统中的对象定义信息进行备份,用于恢复到新加的节点上,生成的备份集位于指定的目录备份集中,数据库克隆的方式有两种:
1)若MPP系统处于运行状态,采用联机DDL克隆方式(需要配置本地归档),全局登录MPP系统任一节点,执行下面的语句:

BACKUP DATABASE DDL_CLONE BACKUPSET 'CLONE';

执行完成后生成的备份集保存在当前登陆节点的bak路径中的clone目录中。
2)若MPP系统处于退出状态,选择MPP系统任一节点使用DMRMAN工具进行脱机备份,备份语句如下

RMAN>backup database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' ddl_clone backupset 'clone';

执行完成后生成的备份集保存在当前登陆节点的bak路径中的clone目录中。

本次操作的DM8MPP系统没有配置归档,所以采用脱机备份的方式进行数据库克隆,操作如下显示:
在这里插入图片描述

2.3 脱机还原
在新增节点上执行脱机还原。手动拷贝克隆的备份集目录 clone 到新增节点 EP03 的
bak 目录中,命令:

scp -r /home/dmdba/dmdbms/data/DAMENG/bak/clone dmdba@192.168.175.166:/home/dmdba/dmdbms/data/DAMENG/bak/

如图:
在这里插入图片描述

使用 DMRMAN 工具对节点EP03进行脱机还原并更新数据库,命令如下:

RMAN>RESTORE DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/data/DAMENG/bak/clone';
RMAN>RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/data/DAMENG/bak/clone';
RMAN>RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC; 

如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 配置新增节点EP03的dmmal.ini
为新增的节点配置dmmal.ini,其中包含扩容前DM8MPP系统的节点,以及新增节点EP03的信息,内容如下:

[MAL_INST1]
MAL_INST_NAME = EP01
MAL_HOST = 192.168.175.164
MAL_PORT = 5269
MAL_INST_HOST = 192.168.175.164
MAL_INST_PORT = 5236
[MAL_INST2]
MAL_INST_NAME = EP02
MAL_HOST = 192.168.175.165
MAL_PORT = 5270
MAL_INST_HOST = 192.168.175.165
MAL_INST_PORT = 5237
[MAL_INST3]
MAL_INST_NAME = EP03
MAL_HOST = 192.168.175.169
MAL_PORT = 5271
MAL_INST_HOST = 192.168.175.169
MAL_INST_PORT = 5238

2.5 配置节点EP03的dm.ini
修改新增节点EP03的dm.ini文件中的如下配置项:
INSTANCE_NAME = EP03
PORT_NUM = 5238
MAL_INI = 1
MPP_INI = 0

如图所示:
在这里插入图片描述

2.6 MOUNT方式启动新增节点EP03
以MOUNT方式启动新增节点 EP03,启动命令:

./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount

在这里插入图片描述

登录后按顺序执行如下命令:

SP_DDL_FORBIDEN(1);
ALTER DATABASE OPEN FORCE;

如图:
在这里插入图片描述

注意:以MOUNT方式启动的目的是防止启动后有用户执行DDL操作,因此先禁止DDL后
OPEN。

2.7 动态增加各节点的MAL
开启DM8MPP系统,分别本地登录中原有的EP01和EP02,登陆方式:
EP01:

./disql SYSDBA/SYSDBA*LOCAL@192.168.175.164:5236

如图:
在这里插入图片描述

EP02:

./disql SYSDBA/SYSDBA*LOCAL@192.168.175.165:5237

如图:
在这里插入图片描述

执行下列语句为每个原有节点的 MAL 配置增加新增节点信息,执行命令:

--设置本地 MAL 配置状态
SF_MAL_CONFIG(1,0);
--增加 MAL 配置
SF_MAL_INST_ADD('MAL_INST3','EP03','192.168.175.169',5271, '192.168.175.169',5238);
--应用 MAL 配置
SF_MAL_CONFIG_APPLY();
--重置本地 MAL 配置状态
SF_MAL_CONFIG(0,0);

如图:
在这里插入图片描述

2.8 增加DM8MPP节点,设置表的标记
选择EP01全局登录DM8MPP 系统,如图:
在这里插入图片描述

执行下列语句:

--广播方式设置 MAL 配置状态
SF_MAL_CONFIG(1,1);
--保存老的HASHMAP
SF_MPP_SAVE_HASHMAP();
--增加MPP实例EP03
SF_MPP_INST_ADD('service_name3', 'EP03');

如图:
在这里插入图片描述

增加节点配置后,之前的连接失效,需要断开连接后重新启动三个节点的数据库服务,重新从EP01全局登录,然后执行下列语句:

--设置分布表的重分发状态
SF_MPP_REDIS_STATE_SET_ALL();
--广播方式重置 MAL 配置状态
SF_MAL_CONFIG(0,1);
--增加节点之后,可以放开 DDL 限制
SP_DDL_FORBIDEN(0);

如图:
在这里插入图片描述

至此,节点EP03已经顺利地加入DM8MPP系统中。但DM8MPP 系统动态扩容并没有完成,在原有系统中建立的哈希分布表、复制分布表和随机分布表需要在增加节点后的 MPP系统中进行数据重分发!!!本篇暂不对数据重分发做详细介绍,下篇再对DM8MPP系统的数据重分发进行讲解说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值