mpp动态扩展

一、在 MPP 系统已有的节点的基础上,增加一个节点.

1.动态增加节点

禁止系统 DDL 操作

全局登录 MPP 系统任一节点,执行下面的语句禁止系统的 DDL 操作。

SP_DDL_FORBIDEN(1);

2. 克隆数据库

数据库克隆的目的是把系统中的对象定义信息进行备份,用于恢复到新加的节点上,生成的备份集位于指定的目录备份集中。

(1)若 MPP 系统处于运行状态,采用联机 DDL 克隆方式(需要配置本地归档)

全局登录 MPP 系统任一节点,执行下面的语句。

BACKUP DATABASE DDL_CLONE BACKUPSET 'CLONE';

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

(2)若 MPP 系统处于退出状态,选择 MPP 系统任一节点使用 DMRMAN 工具进行脱机备份。

RMAN>backup database '/dmdbms/data/dameng/dm.ini' ddl_clone backupset

'clone';

生成的备份集保存在当前备份节点 bak 路径中的 clone 目录中。

3. 脱机还原

在新增节点上执行脱机还原。手动拷贝克隆的备份集目录 clone 到新增节点 EP03 的bak 目录中,使用 DMRMAN 工具进行脱机还原并更新数据库。

RMAN>RESTORE DATABASE '/dmdbms/data/dameng/dm.ini' FROM BACKUPSET

'c:\dmdbms\data\dameng\bak\clone';

RMAN>RECOVER DATABASE '/dmdbms/data/dameng/dm.ini' FROM BACKUPSET '

c:\dmdbms\data\dameng\bak\clone';

RMAN>RECOVER DATABASE ' /dmdbms/data/dameng/dm.ini' UPDATE DB_MAGIC;

若要增加多个节点,则依次执行拷贝、脱机还原和更新数据库步骤。

4. 配置新增节点的 dmmal.ini

为新增的节点配置 dmmal.ini,其中包含扩容前 MPP 系统的节点,以及新增节点 EP03的信息。

[MAL_INST1]

MAL_INST_NAME = EP01

MAL_HOST = 192.168.117.129

MAL_PORT = 5270

MAL_INST_HOST = 192.168.117.129

MAL_INST_PORT = 5240

[MAL_INST2]

MAL_INST_NAME = EP02

MAL_HOST = 192.168.117.128

MAL_PORT = 5271

MAL_INST_HOST = 192.168.117.128

MAL_INST_PORT = 5241

[MAL_INST2]

MAL_INST_NAME = EP03

MAL_HOST = 192.168.117.130

MAL_PORT = 5272

MAL_INST_HOST = 192.168.117.130

MAL_INST_PORT = 5242

5. 配置新增节点的 dm.ini

修改新增节点的 dm.ini 文件中的如下配置项:

INSTANCE_NAME = EP03

PORT_NUM = 5242

MAL_INI = 1

MPP_INI = 1

6. MOUNT 方式启动新增节点

以 MOUNT 方式启动新增节点 EP03,

登录后执行如下命令。

SP_DDL_FORBIDEN(1);

ALTER DATABASE OPEN FORCE;

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

7. 动态增加 MAL

分别本地登录 MPP 系统中原有的每个节点,执行下列语句为每个原有节点的 MAL 配置增加新增节点信息。

--设置本地 MAL 配置状态

SF_MAL_CONFIG(1,0);

--增加 MAL 配置

SF_MAL_INST_ADD('MAL_INST3','EP03','192.168.117.130',5272, '192.168.117.130',5242);

--应用 MAL 配置

SF_MAL_CONFIG_APPLY();

--重置本地 MAL 配置状态

SF_MAL_CONFIG(0,0);

8. 增加 MPP 节点,设置表的标记

全局登录 MPP 系统原有节点中的任一个,执行下列语句。

--广播方式设置 MAL 配置状态

SF_MAL_CONFIG(1,1);

--保存老的 HASHMAP

SF_MPP_SAVE_HASHMAP();

--增加 MPP 实例 EP03

SF_MPP_INST_ADD('service_name3', 'EP03');

加节点配置后,之前的连接失效,需要断开连接,重新全局登录,然后执行下列语句。

--设置分布表的重分发状态

SF_MPP_REDIS_STATE_SET_ALL();

--广播方式重置 MAL 配置状态

SF_MAL_CONFIG(0,1);

--增加节点之后,可以放开 DDL 限制

SP_DDL_FORBIDEN(0);

至此,节点 EP03 已经顺利地加入 MPP 系统中。但是,MPP 系统动态扩容并没有完成,在原有 MPP 系统中建立的哈希分布表、复制分布表和随机分布表需要在增加节点后的 MPP系统中进行数据重分发。

9. 数据重分发

MPP 动态增加节点后,原系统中的哈希分布表、复制分布表和随机分布表需要进行数据重分发,范围分布表和 LIST 分布表不需要进行数据重分发。

10.哈希分布表数据重分发

  下面以原有的T_HASH表为例进行哈希分布表的数据重分发。

(1)全局登录新增节点 EP03(如果新增多个节点,则要分别全局登录每个新增节点)

(2)设置本 session 可对表进行重分发(插入和删除),执行如下语句:

SET_SESSION_MPP_REDIS(1);

(3)设置重分发状态,执行如下语句:

SF_MPP_REDIS_STATE_SET('SYSDBA','T_HASH',2);

(4)进行查询插入,执行如下语句:

INSERT INTO T_HASH SELECT * FROM T_HASH WHERE EP_SEQNO('T_HASH')= 2;

--2 为本节点 SEQNO

COMMIT;

(5)设置待删除数据状态,执行如下语句

SF_MPP_REDIS_STATE_SET('SYSDBA','T_HASH',3);

(6)本地登录每个 MPP 系统的原有节点,删除分发出去的数据。

设置本 session 可对表进行重分发(插入和删除),执行如下语句:

SET_SESSION_MPP_REDIS(1);

删除数据

DELETE FROM T1 WHERE EP_SEQNO('T1')=2; --2 为本节点 SEQNO

COMMIT;

(7)所有新增节点执行完上述步骤后,重置表的分发状态为普通状态,执行如下语句:

SF_MPP_REDIS_STATE_SET('SYSDBA','T_HASH',0);

至此,原有 MPP 的哈希分布表已进行了数据重分发,但是还需要更新扩容后的 MPP 系统的控制文件中的数据分布控制结构。

全局登录某个节点,执行如下语句:

SF_MAL_CONFIG(1,1);

SF_MPP_SAVE_HASHMAP();

SF_MAL_CONFIG(0,1);

添加多条数据后,使用系统视图CALL SP_GET_EP_COUNT('SYSDBA','TABLE')查看表 T_HASH 在每个实例上的数据行数,可以看到新的EP节点有存储数据行数。

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值