1、DPC集群简介
1.1 什么是DMDPC集群
达梦分布计算集群英文全称 DM Distributed Processing Cluster,简称 DMDPC。DMDPC是基于达梦数据库管理系统研发的一款同时支持在线分析处理和在线事务处理的新型分布式数据库系统。
1.2 DMDPC集群有哪些特性
具有高可用、高可扩展、高性能、高吞吐量、透明易用等特性。
1.3 DMDPC的产品架构
DMDPC架构包括元数据节点MP、计算节点 SP 和存储节点BP。通过计算节点SP对外提供分布式数据库服务;通过数据存储节点BP访问数据并进行简单的过滤、投影以及分组操作;通过元数据服务器节点MP获取SP、BP节点的数据字典信息。既支持计算与存储分离,又支持动态增删节点。
1.4 DMDPC的主要应用场景
主要用于以下应用场景:在运营商、金融、电力、电商平台、物联网等超大型企业级应用领域,通常需要满足用户持续增长的海量数据存储需求以及持续增长的业务请求压力,因此,达梦新一代分布式计算集群 DMDPC应运而生。
下面,为了让大家更深入地了解DMDPC集群,我来介绍一下如何通过命令行部署4节点的单副本DPC集群:
2 单机架构
2.1 环境说明
本章节是在4台服务器(CentOS7)上搭建单副本DPC集群。
RAFT 组名 角色 实例名 PORT_NUM AP_PORT_NUM 路径 IP
RAFT_SP1 SP SP1 5236 1630 /dmdpc/dmdpc/sp 192.168.56.107
RAFT_SP2 SP SP2 5236 1630 /dmdpc/dmdpc/sp 192.168.56.108
RAFT_SP3 SP SP3 5236 1630 /dmdpc/dmdpc/sp 192.168.56.109
RAFT_SP4 SP SP4 5236 1630 /dmdpc/dmdpc/sp 192.168.56.110
RAFT_1 BP BP1_A 5240 1640 /dmdpc/dmdpc/bp1 192.168.56.107
RAFT_2 BP BP2_A 5240 1640 /dmdpc/dmdpc/bp2 192.168.56.108
RAFT_3 BP BP3_A 5240 1640 /dmdpc/dmdpc/bp3 192.168.56.109
RAFT_4 BP BP4_A 5240 1640 /dmdpc/dmdpc/bp3 192.168.56.110
MP_RAFT MP MP_A 5220 1620 /dmdpc/dmdpc/bp3 192.168.56.110 MP_PORT 9000
2.2 数据库安装
前置条件:需要在4个节点上先安装好达梦数据库,数据库的安装目录为/dm8,DPC集群的部署目录为/dmdpc
2.3 搭建DPC集群
2.3.1 初始化数据库实例
在1节点上,初始化SP的数据库实例:SP1
./dminit path=/dmdpc/dmdpc/SP1 instance_name=SP1 port_num=5236 ap_port_num=1630 dpc_mode=SP db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
在2,3,4节点上,初始化其余三个SP实例备用(SP2,SP3,SP4)
./dminit path=/dmdpc/dmdpc/SP2 instance_name=SP2 port_num=5236 ap_port_num=1630 dpc_mode=SP db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
./dminit path=/dmdpc/dmdpc/SP3 instance_name=SP3 port_num=5236 ap_port_num=1630 dpc_mode=SP db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
./dminit path=/dmdpc/dmdpc/SP4 instance_name=SP4 port_num=5236 ap_port_num=1630 dpc_mode=SP db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
在4个节点上,初始化4个BP实例:
./dminit path=/dmdpc/dmdpc/BP1_A instance_name=BP1_A port_num=5240 ap_port_num=1640 dpc_mode=BP log_size=2048 db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
./dminit path=/dmdpc/dmdpc/BP2_A instance_name=BP2_A port_num=5240 ap_port_num=1640 dpc_mode=BP log_size=2048 db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
./dminit path=/dmdpc/dmdpc/BP3_A instance_name=BP3_A port_num=5240 ap_port_num=1640 dpc_mode=BP log_size=2048 db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
./dminit path=/dmdpc/dmdpc/BP4_A instance_name=BP4_A port_num=5240 ap_port_num=1640 dpc_mode=BP log_size=2048 db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
在节点4上初始化MP实例:
./dminit path=/dmdpc/dmdpc/MP_A instance_name=MP_A port_num=5220 ap_port_num=1620 dpc_mode=MP log_size=2048 db_name=DAMENG RLOG_GEN_FOR_HUGE=1 page_size=32 extent_size=32 charset=1 case_sensitive=1 USE_NEW_HASH=1
2.3.2 配置 mp.ini
为 SP、BP 和 MP 所有实例配置 MP.INI 文件。
vim /dmdpc/dmdpc/SP1/DAMENG/mp.ini
vim /dmdpc/dmdpc/BP1_A/DAMENG/mp.ini
vim /dmdpc/dmdpc/BP2_A/DAMENG/mp.ini
vim /dmdpc/dmdpc/BP3_A/DAMENG/mp.ini
vim /dmdpc/dmdpc/BP4_A/DAMENG/mp.ini
vim /dmdpc/dmdpc/MP_A/DAMENG/mp.ini
–在以上各节点mp.ini中添加以下信息:
[MP_A]
mp_host = 192.168.56.110
mp_port = 9000
2.3.3 以下归档在单副本可以不配置:
2.3.3.1配置MP_A的本地归档dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdpc/dmdpc/MP_A/DAMENG/archs
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
2.3.4创建MP_A的server服务:
2.3.4.1从模板目录中复制文件且授权
cp /dmdpc/dmdpc/SP1/bin/service_template/DmService /dmdpc/dmdpc/SP1/bin/DmService_SP1
cp /dmdpc/dmdpc/BP1_A/bin/service_template/DmService /dmdpc/dmdpc/BP1_A/bin/DmService_BP1_A
cp /dmdpc/dmdpc/BP2_A/bin/service_template/DmService /dmdpc/dmdpc/BP2_A/bin/DmService_BP2_A
cp /dmdpc/dmdpc/BP3_A/bin/service_template/DmService /dmdpc/dmdpc/BP3_A/bin/DmService_BP3_A
cp /dmdpc/dmdpc/BP4_A/bin/service_template/DmService /dmdpc/dmdpc/BP4_A/bin/DmService_BP4_A
cp /dmdpc/dmdpc/MP_A/bin/service_template/DmService /dmdpc/dmdpc/MP_A/bin/DmService_MP_A
chmod 755 /dmdpc/dmdpc/mp/bin/DmService_MP_A
2.3.4.2修改DmService_MP_A文件中相应的路径
#修改内容
DM_HOME="/dmdpc/dmdpc/MP_A"
INI_PATH="/dmdpc/dmdpc/MP_A/DAMENG/dm.ini"
DPC_MODE=“MP”
2.3.5 启动 MP
DMDPC 运行过程中,MP 需要始终处于开启状态。
cd /dmdpc/dmdpc/MP_A/bin
./dmserver /dmdpc/dmdpc/MP_A/DAMENG/dm.ini dpc_mode=MP
2.3.6 将MP、SP和BP加入集群
2.3.6.1.登录 MP
//搭建DMDPC过程中加入MP、SP和BP,必须登录MP进行操作
cd /dmdpc/dmdpc/MP_A/bin
./disql SYSDBA/SYSDBA@192.168.56.110:5220
2.3.6.2.增加MP节点
//注册当前MP实例,MP的RAFT组名可以指定为NULL或者’MP_RAFT’
SP_CREATE_DPC_INSTANCE(NULL,‘MP_A’,‘MP’,1620,5220,‘192.168.56.110’,‘192.168.56.110’,‘NORMAL’, 1, ‘MP instance’);
#以BP1 RAFT为示例
2.3.6.3 注册RAFT组,名为RAFT_1,
SP_CREATE_DPC_RAFT(’’,‘BP’,‘RAFT_1’);
SP_CREATE_DPC_RAFT(’’,‘BP’,‘RAFT_2’);
SP_CREATE_DPC_RAFT(’’,‘BP’,‘RAFT_3’);
SP_CREATE_DPC_RAFT(’’,‘BP’,‘RAFT_4’);
SP_CREATE_DPC_INSTANCE(‘RAFT_1’,‘BP1_A’,‘BP’, 1640, 5240,‘192.168.56.107’,‘192.168.56.107’,‘NORMAL’, 1,‘BP instance’);
SP_CREATE_DPC_INSTANCE(‘RAFT_2’,‘BP2_A’,‘BP’, 1640, 5240,‘192.168.56.108’,‘192.168.56.108’,‘NORMAL’, 1,‘BP instance’);
SP_CREATE_DPC_INSTANCE(‘RAFT_3’,‘BP3_A’,‘BP’, 1640, 5240,‘192.168.56.109’,‘192.168.56.109’,‘NORMAL’, 1,‘BP instance’);
SP_CREATE_DPC_INSTANCE(‘RAFT_4’,‘BP4_A’,‘BP’, 1640, 5240,‘192.168.56.110’,‘192.168.56.110’,‘NORMAL’, 1,‘BP instance’);
2.3.6.4增加SP节点
注册其他SP RAFT组的命令相同,但是RAFT组名、实例名、端口号不同
注意:SP的RAFT组只能容纳一个SP,因此每新增一个SP实例,需新创建RAFT组
#以SP1为例:
–增加SP1,也要创建册RAFT_SP1组,参数1为空串
SP_CREATE_DPC_RAFT(’’,‘SP’,‘RAFT_SP1’);
–其余三个备用(RAFT_SP2,RAFT_SP3,RAFT_SP4)
SP_CREATE_DPC_RAFT(’’,‘SP’,‘RAFT_SP2’);
SP_CREATE_DPC_RAFT(’’,‘SP’,‘RAFT_SP3’);
SP_CREATE_DPC_RAFT(’’,‘SP’,‘RAFT_SP4’);
–在RAFT_SP1内注册SP实例SP1
SP_CREATE_DPC_INSTANCE(‘RAFT_SP1’,‘SP1’,‘SP’,1630,5236,‘192.168.56.107’,‘192.168.56.107’,‘NORMAL’, 1,‘SP instance’);
–其余三个备用(SP2,SP3,SP4)
SP_CREATE_DPC_INSTANCE(‘RAFT_SP2’,‘SP2’,‘SP’,1630,5236,‘192.168.56.108’,‘192.168.56.108’,‘NORMAL’, 1,‘SP instance’);
SP_CREATE_DPC_INSTANCE(‘RAFT_SP3’,‘SP3’,‘SP’,1630,5236,‘192.168.56.109’,‘192.168.56.109’,‘NORMAL’, 1,‘SP instance’);
SP_CREATE_DPC_INSTANCE(‘RAFT_SP4’,‘SP4’,‘SP’,1630,5236,‘192.168.56.110’,‘192.168.56.110’,‘NORMAL’, 1,‘SP instance’);
2.3.6.5 删除实例
SP_DROP_DPC_INSTANCE(‘MP_A’);
SP_DROP_DPC_INSTANCE(‘SP1’);
SP_DROP_DPC_INSTANCE(‘SP2’);
SP_DROP_DPC_INSTANCE(‘SP3’);
SP_DROP_DPC_INSTANCE(‘SP4’);
2.3.7 添加检查
–##查看所有实例的信息
select * from DPC_INSTANCE;
–##查看所有的RAFT组信息
select * from DPC_BP_RAFT;
–##查看BP组信息
select * from DPC_BP_GROUP;
2.8 创建SP和BP的server服务:
2.8.1从模板目录中复制文件且授权
cp /dm8/bin/service_template/DmService /dmdpc/dmdpc/sp/bin/DmService_SP1
chmod 755 /dmdpc/dmdpc/sp/bin/DmService_SP1
2.8.2 修改DmService_SP1文件中相应的路径
#修改内容
DM_HOME="/dmdpc/dmdpc/sp"
INI_PATH="/dmdpc/dmdpc/sp/DAMENG/dm.ini"
DPC_MODE=“SP”
cp /dm8/bin/service_template/DmService /dmdpc/dmdpc/bp/bin/DmService_BP1_A
chmod 755 /dmdpc/dmdpc/bp/bin/DmService_BP1_A
2.8.3修改DmService_SP1文件中相应的路径
#修改内容
DM_HOME="/dmdpc/dmdpc/bp"
INI_PATH="/dmdpc/dmdpc/bp/DAMENG/dm.ini"
DPC_MODE=“BP”
2.9 删除BP
同样, 当业务规模缩小时, 用户也可以从集群中移除 BP。 删除 BP 节点的流程: 第一步,移除实例;第二步,删除 RAFT 组,必须保证 RAFT 组内的 BP 实例已全部移除,才能删掉RAFT;第三步,删除
使用的过程如下:
//第一步 移除 BP 实例
SP_DROP_DPC_INSTANCE(‘BP1_A’);
SP_DROP_DPC_INSTANCE(‘BP2_A’);
SP_DROP_DPC_INSTANCE(‘BP3_A’);
SP_DROP_DPC_INSTANCE(‘BP4_A’);
//第二步 删除 RAFT 组
SP_DROP_DPC_BP_RAFT(‘RAFT_1’);
SP_DROP_DPC_BP_RAFT(‘RAFT_2’);
SP_DROP_DPC_BP_RAFT(‘RAFT_3’);
SP_DROP_DPC_BP_RAFT(‘RAFT_4’);
//第三步 删除 BP 组
SP_DROP_DPC_BP_GROUP(‘BG_1’);
2.10 删除SP
动态移除 SP 的流程:第一步,移除实例;第二步,移除 RAFT 组,必须保证 RAFT 组内的 SP 实例已经移除,才能删掉 RAFT。
使用的过程如下:
//第一步 移除 SP 实例
SP_DROP_DPC_INSTANCE(‘SP1’);
SP_DROP_DPC_INSTANCE(‘SP2’);
SP_DROP_DPC_INSTANCE(‘SP3’);
SP_DROP_DPC_INSTANCE(‘SP4’);
//第二步 删除 RAFT 组
SP_DROP_DPC_BP_RAFT(‘RAFT_SP1’);
SP_DROP_DPC_BP_RAFT(‘RAFT_SP2’);
SP_DROP_DPC_BP_RAFT(‘RAFT_SP3’);
SP_DROP_DPC_BP_RAFT(‘RAFT_SP4’);
2.11 验证服务
最后,启动BP,SP节点服务,验证服务是否正常。
在4个节点上,检查所有端口是否启动:netstat -ntl
文章
阅读量
获赞