DM MPP 系统管理

DM web版数据库管理工具(DEM)提供了图形化部署与监控DM MPP的功能。数据库管理员对规划好DM MPP系统的机器与端口,就可以使用DEM的集群部署功能,根据页面的指示一步步地搭建好DM MPP环境。部署完成后还可以使用DEM的集群监控功能对MPP集群的运行情况进行监控。

本章还介绍了如何为运行中的DM MPP系统动态扩容以及MPP环境的DDL克隆与还原。

4.1 使用DEM部署与监控DM MPP

DEM提供DM MPP的图形化搭建与管理功能。关于DEM工具的启动,请查看DEM相关文档。DEM启动后,通过浏览器访问,如下图所示:

DEM工具主界面

图5.1 DEM工具主界面

在DEM中,对于集群的管理包括集群部署和集群监控。集群部署在“客户端工具”栏点击“部署集群”可以打开,集群监控在“监控及告警”栏的“数据库”监控中添加对集群的监控即可打开。

建议

在使用DEM对集群进行部署和监控之前需要在各节点所在机器部署DM数据库代理工具DMAgent。

4.1.1 使用DEM部署DM MPP

在DEM的“客户端工具”栏,选择部署集群工具,打开新建集群部署的对话框,如下图:

新建集群部署对话框

图5.2 新建集群部署对话框

输入集群名称,点击“确定”后,进入“选择部署集群类型”界面:

选择部署集群类型

图5.3 选择部署集群类型

选择集群类型为“MPP”,点击“下一步”后,进入“环境准备”界面:

MPP部署-环境准备

图5.4 MPP部署-环境准备

参数详解:

刷新:刷新主机列表。

搜索:输入IP地址,快速搜索指定主机。

选择要部署MPP的主机,点击“下一步”,进入“实例规划”界面:

MPP部署-实例规划

图5.5 MPP部署-实例规划

参数详解:

部署名称:部署名称,会在各部署主机的工作目录创建对应名称的目录来存储该集群。

参数配置:统一配置实例列表中所有实例的参数。另外也可以通过双击实例列表中某一个实例的某一个参数进行单独配置。

添加实例:添加实例,可以在选择的主机中添加实例,添加之后会出现在实例列表中。

删除实例:删除选中的实例。

注册服务:如果想让dmserver服务开机自启动,则需把dmserver注册成服务,注册完成后重启机器时,就会自动启动dmserver服务。

配置服务名:配置注册的服务名,默认dmserver服务名为DmService_实例名。

在配置好各实例的参数后,点击“下一步”,进入“数据准备”页面。

MPP部署-数据准备

图5.6 MPP部署-数据准备

参数详解:

初始化新库:初始化一个新库,作为守护系统的实例。

使用已存在的库:指定已经存在的库作为守护系统的实例。指定库所在的主机、工作空间、INI路径、库的登录用户名和密码。

备好数据之后,点击“下一步”,进入“dm.ini配置”界面,配置dm.ini相关参数。

MPP部署-dm.ini配置

图5.7 MPP部署-dm.ini配置

可以在这个页面中对dm.ini的相关参数进行配置。

点击“下一步”,进入“dmmal.ini配置”界面,配置dmmal.ini相关参数。

MPP部署-dmmal.ini配置

图5.8 MPP部署-dmmal.ini配置

可以在这个页面中对dmmal.ini的相关参数进行配置。

点击“下一步”,进入“dmarch.ini配置”界面,配置dmarch.ini参数。

MPP部署-dmarch.ini配置

图5.9 MPP部署-dmarch.ini配置

MPP环境下并不要求必须配置归档,但用户也可以根据应用实际需要进行配置,选中“是否配置归档”选择框,即可进行配置。

点击“下一步”,进入“上传服务器文件”界面,选择上传的服务器文件。

MPP部署-上传服务器文件

图5.10 MPP部署-上传服务器文件

参数说明:

各节点将使用同一个达梦数据库服务器文件:选择该选项,则为所有为Linux的主机上传一份服务器文件,为所有为windows的主机上传一份服务器文件。

各节点将单独配置达梦数据库服务器文件:为每一个主机单独上传服务器文件。

使用ssl通讯加密:如果上传的服务器是使用ssl通讯加密的,则需要上传客户端SYSDBA的ssl密钥文件,和输入ssl验证密码。

点击“下一步”,进入“详情总览”界面。列出将要部署的集群环境的所有配置信息:

MPP部署-详情总览

图5.11 MPP部署-详情总览

点击“下一步”,开始执行部署任务。执行过程如下:

MPP部署-执行部署任务

图5.12 MPP部署-执行部署任务

参数说明:

刷新:刷新任务列表。

查看部署信息:对部署配置信息进行详细浏览。

停止所有任务:停止执行所有任务。

回滚任务:执行结束后,可以回滚所有执行的任务,清除环境。

重做失败任务:重新执行失败的任务。

等待一段时间,只要之前的配置都没有错误,就能成功完成MPP的部署了,如下图所示。

MPP部署-完成执行部署任务

图5.13 MPP部署-完成执行部署任务

至此,DM MPP环境部署完成,如果点击“添加到监控”可直接将配置好的MPP集群添加到监控中。

4.1.2 使用DEM监控DM MPP运行

在DEM的“监控与告警”栏,双击“数据库”,在DEM右边面板打开数据库监控面板。

数据库监控面板

图5.14 数据库监控面板

选择工具栏“添加”按钮,下拉选择“集群”。打开集群添加对话框:

集群添加对话框

图5.15 集群添加对话框

添加好需要监控的MPP集群后,点击“确定”,就可以对MPP集群进行监控了。

集群监控面板

图5.16 集群监控面板

对集群的监控与管理操作包括集群分析,集群管理,启动/停止集群,sql监控,表监控等,具体操作请查看DEM联机帮助。

4.2 MPP系统动态扩容

DM MPP将多个DM数据库实例组织为一个并行计算网络,为用户提供高性价比的海量数据存储和处理能力。但即使DMMPP的成本代价极低,用户也常常不能在最初部署MPP时就部署好足够应用持续运行很长时间的系统规模。在应用系统运行几年后,随着应用数据规模的不断增加,需要为运行中的MPP系统进一步扩充MPP容量是一个常见的需求。为此,DM MPP提供了系统动态扩容功能,在不影响数据库应用的情况下,可以为DM MPP集群动态增加新的EP。

下面介绍DM MPP系统动态扩容的具体步骤。

4.2.1 环境准备

以本书4.2节搭建的DM MPP系统为例,此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;

4.2.2 动态增加节点

  1. 禁止系统DDL操作

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

SP_DDL_FORBIDEN(1);
  1. 克隆数据库

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

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

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

BACKUP DATABASE DDL_CLONE BACKUPSET 'CLONE';

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

  • 若MPP系统处于退出状态,选择MPP系统任一节点使用DMRMAN工具进行脱机备份。
RMAN>backup database 'c:\dmdbms\data\dameng\dm.ini' ddl_clone backupset 'clone';

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

  1. 脱机还原

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

RMAN>RESTORE DATABASE 'c:\dmdbms\data\dameng\dm.ini' FROM BACKUPSET
'c:\dmdbms\data\dameng\bak\clone';

RMAN>RECOVER DATABASE 'c:\dmdbms\data\DAMENG\dm.ini' FROM BACKUPSET 'c:\dmdbms\data\dameng\bak\clone';
RMAN>RECOVER DATABASE ' c:\dmdbms\data\DAMENG\dm.ini' UPDATE DB_MAGIC;

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

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

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

[MAL_INST1]

MAL_INST_NAME = EP01

MAL_HOST = 192.168.0.12

MAL_PORT = 5269

MAL_INST_HOST = 192.168.1.11

MAL_INST_PORT = 5236

[MAL_INST2]

MAL_INST_NAME = EP02

MAL_HOST = 192.168.0.22

MAL_PORT = 5270

MAL_INST_HOST = 192.168.1.21

MAL_INST_PORT = 5237

[MAL_INST3]

MAL_INST_NAME = EP03

MAL_HOST = 192.168.0.32

MAL_PORT = 5271

MAL_INST_HOST = 192.168.1.31

MAL_INST_PORT = 5238

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

INSTANCE_NAME = EP03

PORT_NUM = 5238

MAL_INI = 1

MPP_INI = 0
  1. MOUNT方式启动新增节点

以MOUNT方式启动新增节点EP03,登录后执行如下命令。

SP_DDL_FORBIDEN(1);

ALTER DATABASE OPEN FORCE;

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

  1. 动态增加MAL

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

--设置本地MAL配置状态

SF_MAL_CONFIG(1,0);

--增加MAL配置

SF_MAL_INST_ADD('MAL_INST3','EP03','192.168.0.32',5271, '192.168.1.31',5238);

--应用MAL配置

SF_MAL_CONFIG_APPLY();

--重置本地MAL配置状态

SF_MAL_CONFIG(0,0);
  1. 增加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系统中进行数据重分发。

4.2.3 数据重分发

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

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

创建的T1和T2表都是哈希分布表,其中T1为普通表,T2为HUGE表,下面以这两个表为例进行哈希分布表的数据重分发。

具体步骤如下:

  1. 全局登录新增节点EP03(如果新增多个节点,则要分别全局登录每个新增节点)
  2. 设置本session可对表进行重分发(插入和删除),执行如下语句:
SET_SESSION_MPP_REDIS(1);
  1. 设置重分发状态,执行如下语句:
SF_MPP_REDIS_STATE_SET('SYSDBA','T1',2);

SF_MPP_REDIS_STATE_SET('SYSDBA','T2',2);
  1. 进行查询插入,执行如下语句:
INSERT INTO T1 SELECT * FROM T1 WHERE EP_SEQNO('T1')= 2; --2为本节点SEQNO

COMMIT;

INSERT INTO T2 SELECT * FROM T2 WHERE EP_SEQNO('T2')= 2; --2为本节点SEQNO

COMMIT;
  1. 设置待删除数据状态,执行如下语句:
SF_MPP_REDIS_STATE_SET('SYSDBA','T1',3);

SF_MPP_REDIS_STATE_SET('SYSDBA','T2',3);
  1. 本地登录每个MPP系统的原有节点,删除分发出去的数据。

执行如下语句:

SET_SESSION_MPP_REDIS(1);
  • 对于普通表T1,执行如下语句:
DELETE FROM T1 WHERE EP_SEQNO('T1')=2; --2为本节点SEQNO

如果新增了多个节点,则需要删除分发到所有这些新增节点的数据,语句形如:

DELETE FROM T1 WHERE EP_SEQNO('T1')=新加节点MPP序号1 OR
EP_SEQNO('T1')=新加节点MPP序号2 ......
  • 对于HUGE表T2,由于直接使用DELETE效率较低,采用查询插入再删除表的方式:
--放开本地登录下的DDL限制

SP_SET_SESSION_LOCAL_TYPE(1);

CREATE TABLE STR_TAB(A VARCHAR);

INSERT INTO STR_TAB SELECT TABLEDEF('SYSDBA','T2') FROM DUAL;

ALTER TABLE T2 RENAME TO T2_REDIS;

DECLARE

sqltxt VARCHAR;

BEGIN

SELECT * INTO sqltxt FROM STR_TAB;

EXECUTE IMMEDIATE sqltxt;

END;

/

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

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

DROP TABLE T2_REDIS;

DROP TABLE STR_TAB;

COMMIT;

在这个步骤中需要注意的是,如果表上建有二级索引,则需要重新创建二级索引。

  1. 所有新增节点执行完上述步骤后,重置表的分发状态为普通状态,执行如下语句:
SF_MPP_REDIS_STATE_SET('SYSDBA','T1',0);
  1. 复制分布表数据重分发

创建的表T3是复制分布表,下面以T3为例进行复制分布表的数据重分发。

具体步骤如下:

  1. 本地登录新增节点EP03(如果新增多个节点,则要分别本地登录每个新增节点),执行如下语句:
SET_SESSION_MPP_REDIS(1);

SP_SET_SESSION_LOCAL_TYPE(1); --放开本地登录下的DDL限制
  1. 创建新增节点EP03到某一原有节点间的外部链接(如果新增多个节点,则要为每个新增节点创建一个这样的外部链接)
CREATE LINK LINK_EP01 CONNECT WITH SYSDBA IDENTIFIED BY SYSDBA USING 'EP01';

3)执行查询插入

INSERT INTO T3 SELECT * FROM T3@LINK_EP01;

4)删除外部链接

DROP LINK LINK_EP01;

5)全局登录MPP系统,重置表的分发状态为普通状态,执行如下语句:

SET_SESSION_MPP_REDIS(1);

SF_MPP_REDIS_STATE_SET('SYSDBA','T3',0);
  1. 随机分布表数据重分发

创建的表T4是随机分布表,下面以T4为例进行随机分布表的数据重分发。

具体步骤如下:

  1. 本地登录新增节点EP03(如果新增多个节点,则要分别本地登录每个新增节点),执行如下语句:
SET_SESSION_MPP_REDIS(1);

SP_SET_SESSION_LOCAL_TYPE(1); --放开本地登录下的DDL限制
  1. 设置表的重分发状态
SF_MPP_REDIS_STATE_SET('SYSDBA','T4',2);
  1. 创建EP03与每个原有节点间的外部链接(如果新增多个节点,则要为每个新增节点创建这样的外部链接)
CREATE LINK LINK1 CONNECT WITH SYSDBA IDENTIFIED BY SYSDBA USING 'EP01';

CREATE LINK LINK2 CONNECT WITH SYSDBA IDENTIFIED BY SYSDBA USING 'EP02';
  1. 本地登录每个原有节点,查出每个原有节点上表T4的min(ROWID)和max(ROWID)。
SELECT MIN(ROWID),MAX(ROWID) FROM T4;
  1. 在新增节点EP03上,分别使用连接每个原有节点的外部链接执行查询插入。
INSERT INTO T4 SELECT * FROM T4@LINK1 WHERE ROWID

BETWEEN V_MIN1 AND V_MIN1 + (V_MAX1 - V_MIN1)*1/3;

INSERT INTO T4 SELECT * FROM T4@LINK2 WHERE ROWID

BETWEEN V_MIN2 AND V_MIN2 + (V_MAX2 - V_MIN2)*1/3;

说明:V_MIN1和V_MAX1对应第4)步中查询出的EP01上的min(ROWID)和max(ROWID);V_MIN2和V_MAX2对应第4步中查询出的EP02上的min(ROWID)和max(ROWID);1/3中的3表示动态增加节点后的节点总数。

如果有多个新增节点,则节点2、节点3……上执行的查询插入语句形如:

INSERT INTO T4 SELECT * FROM T4@LINKx WHERE ROWID

BETWEEN V_MINx + (V_MAXx - V_MINx)*N_SEQ/N_SITE_NEW_TOTAL+ 1 AND
V_MINx + (V_MAXx - V_MINx)*(N_SEQ + 1)/N_SITE_NEW_TOTAL;

说明:V_MINx和V_MAXx的意义与前面说明的一致;N_SEQ表示新增节点序号,新增节点1的N_SEQ为0,新增节点2的N_SEQ为1……;N_SITE_NEW_TOTAL表示动态增加节点后的节点总数。

6)全局登录某一节点,设置表的待删除数据状态

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

7)本地登录每个原有节点,删除分发出去的数据,执行如下语句:

SET_SESSION_MPP_REDIS(1);

DELETE FROM T4 WHERE ROWID BETWEEN V_MIN AND V_MIN +(V_MAX-V_MIN)*1/3;

说明:V_MIN和V_MAX对应第4)步中查询出的min(ROWID)和max(ROWID);1/3中的1表示新增节点数;3表示动态增加节点后的节点总数。

8)每个原有节点都完成删除后,都执行提交操作。

COMMIT;

9)全局登录某个节点,重置表的分发状态为普通状态,执行如下语句:

SET_SESSION_MPP_REDIS(1);

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

10)本地登录EP03,删除之前创建的到每个原有节点的外部链接(如果新增多个节点,则要本地登录每个新增节点删除这些外部链接)

DROP LINK LINK1;

DROP LINK LINK2;

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

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

SF_MAL_CONFIG(1,1);

SF_MPP_SAVE_HASHMAP();

SF_MAL_CONFIG(0,1);

MPP系统动态扩容全部完成!

4.3 MPP环境的DDL 克隆与还原

DDL克隆可以把系统中的对象定义信息进行备份,之后再还原到别的数据库节点。利用这个功能,可以将一个MPP系统的对象定义信息克隆并还原到另一个MPP系统中,且两个MPP系统的节点数不必一致。

需要注意的是,由于MPP环境下执行DDL克隆时会将dmmpp.ctl也一并备份还原,若还原的MPP环境与备份环境不一致时,会导致还原后的MPP系统不能正确启动。因此在执行完还原操作后,需要使用使用dmctlcvt工具,将当前环境的dmmpp.ini再次生成dmmpp.ctl,替换还原生成的dmmpp.ctl。

微信扫码
分享文档
扫一扫
联系客服