DMDPC 分布计算集群搭建
一个最小的 DMDPC 集群包含一个 BP、一个 SP 和一个 MP。可以在部署完毕后随时增添新的 BP、SP 节点。至少需要两台 BP 才方便看出子任务的各种计划形态和调度,本试验将在一部 Linux 虚拟机上通过创建四个实例的方式进行集群搭建
环境
DMDPC 集群规划部署 1 个 SP,2 个 BP 和 1 个 MP,其中,BP 采用单机模式,未配置为多副本系统,配置如下所示,路径前缀 ~ 代表 /home/dmdba/dmdbms/data
RAFT 组名 | 实例名称 | IP | PORT_NUM | AP_PORT_NUM | 路径 |
---|---|---|---|---|---|
RAFT_SP1 | SP1 | 192.168.244.150 | 5236 | 6000 | ~/sp1 |
RAFT_1 | BP1 | 192.168.244.150 | 5237 | 6001 | ~/bp1 |
RAFT_2 | BP2 | 192.168.244.150 | 5238 | 6002 | ~/bp2 |
缺省为 NULL 或者MP_RAFT | MP | 192.168.244.150 | 5239 | 6003 | ~/mp |
DPC 配置
初始化数据库实例
在虚拟机上完成 DM8 的安装后创建以下四个实例
./dminit path=/home/dmdba/dmdbms/data/sp1 instance_name=SP1 port_num=5236 ap_port_num=6000 dpc_mode=SP
./dminit path=/home/dmdba/dmdbms/data/bp1 instance_name=BP1 port_num=5237 ap_port_num=6001 dpc_mode=BP
./dminit path=/home/dmdba/dmdbms/data/bp2 instance_name=BP2 port_num=5238 ap_port_num=6002 dpc_mode=BP
./dminit path=/home/dmdba/dmdbms/data/mp instance_name=MP port_num=5239 ap_port_num=6003 dpc_mode=MP
为 SP、BP 和 MP 配置 MP.INI 文件
在四个实例的 DAMENG 目录下配置 mp.ini 文件
vi mp.ini
~~~
mp_host = 192.168.244.150
mp_port = 9000 #与MP、BP和SP上的ap_port_num不冲突的端口号
~~~
启动 MP
DMDPC 运行过程中,MP 需要始终处于开启状态
./dmserver /home/dmdba/dmdbms/data/mp/DAMENG/dm.ini dpc_mode=MP
将 MP、SP 和 BP 加入集群
增加 1 个 MP、1 个 SP 和 2 个 BP 节点,只有在注册当前登录 MP 节点后,才可以注册其余节点。后续增加 MP、SP 节点和 BP 节点无先后之分
//搭建DMDPC过程中加入MP、SP和BP,必须登录MP进行操作
DIsql SYSDBA/SYSDBA@192.168.244.150:5239
//增加MP节点
//注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT'
SP_CREATE_DPC_INSTANCE(NULL,'MP','MP',6003,5239, '192.168.244.150', '192.168.244.150','NORMAL',1,'MP instance');
//增加两个BP节点:BP1和BP2
//注册RAFT组,名为RAFT_1
SP_CREATE_DPC_RAFT('BP','RAFT_1');
//在RAFT_1组内注册BP实例BP1
SP_CREATE_DPC_INSTANCE('RAFT_1','BP1','BP',6001,5237, '192.168.244.150', '192.168.244.150','NORMAL',1,'BP instance');
//注册RAFT_2
SP_CREATE_DPC_RAFT('BP', 'RAFT_2');
//在RAFT_2内注册BP实例BP2
SP_CREATE_DPC_INSTANCE('RAFT_2','BP2','BP',6002,5238, '192.168.244.150', '192.168.244.150', 'NORMAL', 1, 'BP instance');
//注册一个BP组,名为BG_1
SP_CREATE_DPC_BP_GROUP('BG_1', 'bp group1');
//往BP组中添加RAFT组
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_1');
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_2');
//增加SP节点:SP1
//增加SP,也要注册RAFT组
SP_CREATE_DPC_RAFT('SP', 'RAFT_SP1');
//在RAFT_SP1内注册SP实例SP1
SP_CREATE_DPC_INSTANCE('RAFT_SP1','SP1','SP',6000,5236, '192.168.244.150', '192.168.244.150','NORMAL', 2, 'SP instance');
//注册一个容错域:FDOM_1 (可选,本试验中不进行该操作)
SP_CREATE_FAULT_DOMAIN ('FDOM_1','shanghai');
//往容错域中添加实例
SP_FAULT_DOMAIN_MV_INST('FDOM_1','MP');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP1');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP2');
注意:将SP和BP节点加入DMDPC集群中的步骤必须在SP、BP第一次启动前完成
检查注册是否成功
查询系统表,检查上一步骤的注册是否成功,能查到相关信息表示注册成功
select * from DPC_BP_GROUP;
select * from DPC_BP_RAFT;
select * from DPC_INSTANCE;
启动 SP 和 BP
启动 SP 和 BP 没有先后之分
启动 SP
./dmserver /home/dmdba/dmdbms/data/sp1/DAMENG/dm.ini dpc_mode=SP
启动 BP
./dmserver /home/dmdba/dmdbms/data/bp1/DAMENG/dm.ini dpc_mode=BP
./dmserver /home/dmdba/dmdbms/data/bp2/DAMENG/dm.ini dpc_mode=BP
至此 DMDPC 集群搭建完毕,用户只需要连接对外提供服务的 SP,即可获得完整的数据库服务
注意
- 将 SP 和 BP 节点加入 DMDPC 集群中的步骤必须在 SP、BP 第一次启动前完成
- 当BP处于下述情况时,表示无可用BP,系统异常,报错“无效的系统状态”,无可用BP的情况为:
1.BP处于非OPEN状态;
2.BP尚未成功启动;
3.BP宕机- 只有出于监控目的进行 V$ 视图的查询,或出于维护需要时,才允许直连 MP 和 BP,否则搭建完成后,不允许再连接 MP 和 BP
- 切勿在 MP 和 BP 上执行大量 SQL 语句,否则可能会导致系统崩溃
退出 DMDPC
使用 exit 命令退出 DMDPC 需要按照正确的顺序有序进行,按照如下顺序:退出 SP -> 退出 BP -> 退出 MP
如果没有按正常顺序退出,可能会导致剩下的机器直接宕机,此时只能对其他的机器采用强杀,这种服务器异常退出的情况,当再次重启的时候,服务器需要做大量的REDO日志,因此重启的时间会稍长一些,其它没有影响
达梦在线服务平台:https://eco.dameng.com