注册
DM8 分布计算集群(DMDPC)搭建
专栏/培训园地/ 文章详情 /

DM8 分布计算集群(DMDPC)搭建

river+++ 2024/04/24 640 0 0
摘要

1 概述

1.1 场景描述

DMDPC 提供具有分布式特性的可扩展、高性能数据库解决方案,以满足具有高并发、大规模数据存储、业务快速扩张等特征的用户业务对数据库的要求。

本章节借助命令行工具部署 DPC 集群。

1.2 系统架构

  • SP 计划生成节点,负责接收用户请求并生成计划、划分子计划、按照一定规则计算并行度并调度各个子计划,并最终将执行结果返回给用户;不存储数据,配置成单机即可
  • BP 数据存储节点,负责存储数据,BP 节点启动分为 BP 模式和 BS 模式;在 BP 模式下负责存储数据和接收 SP 的子任务调度指令、执行子任务,并返回结果给SP;在 BS 模式下覆盖了 SP 的功能,可以接收用户请求并生成、划分计划,并与其他 BS 节点协调共同执行(该模式下可以不配置 SP 节点)既可以配置成单机,也可以配置成多副本系统
  • MP 元数据服务器节点,存储元数据信息即字典信息,所有DDL操作都会交由MP执行,每个集群只能有一个MP节点;既可以配置成单机,也可以配置成多副本系统

以客户端的查询 SELECT 操作为例,流程如下:
image.png
注:每一个多副本系统中只有一个作为主节点,其余节点均作为备份节点。

1.3 单机与多副本

  • 单机架构下,集群的各节点实例名可以规划为MP1,BP1,BP2,BP3,SP1......
  • 多副本架构下,比如3个BP节点,实例名可规划为(BP11,BP12,BP13)、(BP21,BP22,BP23)、(BP31,BP32,BP33),MP的3副本为(MP11,MP12,MP13);当某个主节点发生故障后,系统会从备份节点中重新选举出新的主节点对外提供服务,相较于单机架构,多副本架构可以消除单点故障。

2 单机架构

2.1 环境说明

本章节是在同一台服务器(CentOS7)上搭建。

RAFT 组名 角色 实例名 PORT_NUM AP_PORT_NUM 路径 IP
RAFT_SP1 SP SP 5236 4236 /dm8/data/dmdpc/sp 192.168.182.132
RAFT_1 BP BP1 5237 4237 /dm8/data/dmdpc/bp1 192.168.182.132
RAFT_2 BP BP2 5247 4247 /dm8/data/dmdpc/bp2 192.168.182.132
RAFT_3 BP BP3 5257 4257 /dm8/data/dmdpc/bp3 192.168.182.132
缺省为 NULL 或者 MP_RAFT MP MP 5238 4238 /dm8/data/dmdpc/mp 192.168.182.132

2.2 数据库安装

需要先安装数据库。详细安装步骤可以参考:linux 下如何安装达梦数据库

2.3 搭建DPC集群

2.3.1 初始化数据库实例

./dminit path=/dm8/data/dmdpc/sp instance_name=SP port_num=5236 ap_port_num=4236 dpc_mode=SP ./dminit path=/dm8/data/dmdpc/bp1 instance_name=BP1 port_num=5237 ap_port_num=4237 dpc_mode=BP ./dminit path=/dm8/data/dmdpc/bp2 instance_name=BP2 port_num=5247 ap_port_num=4247 dpc_mode=BP ./dminit path=/dm8/data/dmdpc/bp3 instance_name=BP3 port_num=5257 ap_port_num=4257 dpc_mode=BP ./dminit path=/dm8/data/dmdpc/mp instance_name=MP port_num=5238 ap_port_num=4238 dpc_mode=MP

2.3.2 配置 mp.ini

为 SP、BP 和 MP 所有实例配置 MP.INI 文件。

cd /dm8/data/dmdpc/sp/DAMENG/ cd /dm8/data/dmdpc/bp1/DAMENG/ cd /dm8/data/dmdpc/bp2/DAMENG/ cd /dm8/data/dmdpc/bp3/DAMENG/ cd /dm8/data/dmdpc/mp/DAMENG/ vi mp.ini mp_host = 192.168.182.132 #MP所在ip mp_port = 9000 #与MP、BP和SP上的ap_port_num不冲突的端口号

2.3.3 启动 MP

DMDPC 运行过程中,MP 需要始终处于开启状态。

cd /dm8/bin ./dmserver /dm8/data/dmdpc/mp/DAMENG/dm.ini dpc_mode=MP

2.3.4 将 MP、SP 和 BP 加入集群

  1. 登录 MP
//搭建DMDPC过程中加入MP、SP和BP,必须登录MP进行操作 cd /dm8/bin ./disql SYSDBA/SYSDBA@192.168.182.132:5238
  1. 增加MP节点
//注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT' SP_CREATE_DPC_INSTANCE('MP_RAFT','MP','MP',4238,5238, '192.168.182.132', '192.168.182.132','NORMAL',1,'MP instance');
  1. 增加 BP 节点(注册 BP 的 RAFT 组,每个 BP 都有各自的 RAFT 组)
//注册RAFT组,名为RAFT_1 SP_CREATE_DPC_RAFT('BP','RAFT_1'); //在RAFT_1组内注册BP实例BP1 SP_CREATE_DPC_INSTANCE('RAFT_1','BP1','BP',4237,5237, '192.168.182.132', '192.168.182.132','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',4247,5247, '192.168.182.132', '192.168.182.132', 'NORMAL', 1, 'BP instance'); //注册RAFT_3 SP_CREATE_DPC_RAFT('BP', 'RAFT_3'); //在RAFT_3内注册BP实例BP3 SP_CREATE_DPC_INSTANCE('RAFT_3','BP3','BP',4257,5257, '192.168.182.132', '192.168.182.132', '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_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_3');
  1. 增加 SP 节点(注册 SP 的 RAFT 组,每个 SP 也都有各自的 RAFT 组)
//增加SP,也要注册RAFT组 SP_CREATE_DPC_RAFT('SP', 'RAFT_SP1'); //在RAFT_SP1内注册SP实例SP1 SP_CREATE_DPC_INSTANCE('RAFT_SP1','SP','SP',4236,5236, '192.168.182.132', '192.168.182.132','NORMAL', 2, 'SP instance');

注:将 SP 和 BP 节点加入 DMDPC 集群中的步骤必须在 SP、BP 第一次启动前完成!

  1. 注册容错域:FDOM_1(可选)
//注册一个容错域: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_FAULT_DOMAIN_MV_INST('FDOM_1','BP3');

2.3.5 检查注册是否成功

查询系统表,检查上一步骤的注册是否成功。能查到相关信息表示注册成功。

SQL> select * from DPC_BP_GROUP; 行号 ID NAME DESCRIPTION RAFT_NUM RAFT_INFO INFO1 INFO2 INFO3 ---------- ----------- ---- ----------- ----------- -------------- ----------- -------------------- ---------- 1 0 BG_1 bp group1 3 0x010002000300 0 NULL NULL 已用时间: 1.501(毫秒). 执行号:65614. SQL> select * from DPC_BP_RAFT; 行号 RAFT_ID GROUP_ID DPC_MODE NAME IS_VALID INFO1 INFO2 INFO3 ---------- ----------- ----------- -------- -------- ----------- ----------- -------------------- ---------- 1 0 -1 MP MP_RAFT 1 NULL NULL NULL 2 1 -1 BP RAFT_1 1 NULL NULL NULL 3 2 -1 BP RAFT_2 1 NULL NULL NULL 4 3 -1 BP RAFT_3 1 NULL NULL NULL 5 4 -1 SP RAFT_SP1 1 NULL NULL NULL 已用时间: 1.456(毫秒). 执行号:65615. SQL> select * from DPC_INSTANCE; 行号 RAFT_ID INST_ID NAME DPC_MODE XMAL_PORT INST_PORT IP_INTERNAL SYS_MODE SYS_STATUS STATUS DESCRIPTION IP_EXTERNAL INFO1 INFO2 ---------- ----------- ----------- ---- -------- ----------- ----------- --------------- -------- ----------- ----------- ----------- --------------- ----------- -------------------- INFO3 ---------- 1 0 4096 MP MP 4238 5238 192.168.182.132 NORMAL 4 1 MP instance 192.168.182.132 NULL NULL NULL 2 1 4097 BP1 BP 4237 5237 192.168.182.132 NORMAL 6 1 BP instance 192.168.182.132 NULL NULL NULL 3 2 4098 BP2 BP 4247 5247 192.168.182.132 NORMAL 6 1 BP instance 192.168.182.132 NULL NULL NULL 行号 RAFT_ID INST_ID NAME DPC_MODE XMAL_PORT INST_PORT IP_INTERNAL SYS_MODE SYS_STATUS STATUS DESCRIPTION IP_EXTERNAL INFO1 INFO2 ---------- ----------- ----------- ---- -------- ----------- ----------- --------------- -------- ----------- ----------- ----------- --------------- ----------- -------------------- INFO3 ---------- 4 3 4099 BP3 BP 4257 5257 192.168.182.132 NORMAL 6 1 BP instance 192.168.182.132 NULL NULL NULL 5 4 4100 SP SP 4236 5236 192.168.182.132 NORMAL 6 2 SP instance 192.168.182.132 NULL NULL NULL 已用时间: 1.605(毫秒). 执行号:65616.

2.3.6 启动 SP 和 BP

启动 SP 和 BP 没有先后之分;BP节点是的启动模式是BP还是BS,在dpc_mode后写BS或BP即可。

cd /dm8/bin ./dmserver /dm8/data/dmdpc/bp1/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc/bp2/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc/bp3/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc/sp/DAMENG/dm.ini dpc_mode=SP

DMDPC 集群搭建完毕。

当BP处于下述情况时,表示无可用BP,系统异常,报错“无效的系统状态”。无可用BP的情况为:
1.BP处于非OPEN状态;
2.BP尚未成功启动;
3.BP宕机。

2.3.7 连接

  1. 连接对外提供服务的 SP即可。
cd /dm8/bin ./disql SYSDBA/SYSDBA@192.168.182.132:5236
  1. 验证环境搭建是否成功,可以在 SP 上执行查询 V$instance,看是否所有 RAFT 组中实例都能够查到
SQL> select * from v$instance; 行号 NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION DB_VERSION START_TIME STATUS$ MODE$ OGUID DSC_SEQNO DSC_ROLE ---------- ---- ------------- --------------- --------------------- -------------------------- ------------------- ------------------- ------- ------ ----------- ----------- -------- BUILD_VERSION BUILD_TIME ----------------------------------- -------------------- 1 SP SP 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:42:10 OPEN NORMAL 783216211 0 NULL 1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02 2 MP MP 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:04:09 OPEN NORMAL 0 0 NULL 1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02 3 BP1 BP1 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:35:23 OPEN NORMAL 0 0 NULL 1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02 行号 NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION DB_VERSION START_TIME STATUS$ MODE$ OGUID DSC_SEQNO DSC_ROLE ---------- ---- ------------- --------------- --------------------- -------------------------- ------------------- ------------------- ------- ------ ----------- ----------- -------- BUILD_VERSION BUILD_TIME ----------------------------------- -------------------- 4 BP2 BP2 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:36:07 OPEN NORMAL 0 0 NULL 1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02 5 BP3 BP3 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:55:08 OPEN NORMAL 0 0 NULL 1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02 已用时间: 15.396(毫秒). 执行号:16777220.

MP、SP、BP 全部正常启动,且均处于 OPEN 状态,此时 DMDPC 集群搭建完毕。

2.4 查看集群状态

查看当前节点的 DPC_MODE 模式信息。0:无;1:MP;2:BP;3:SP;4:BS

SQL> select * from V$dm_ini where para_name='DPC_MODE' and sf_get_ep_seqno(rowid)=SF_GET_SELF_EP_SEQNO; 行号 PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE DEFAULT_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE SYNC_FLAG SYNC_LEVEL ---------- --------- ---------- --------- --------- ------------- ------- ---------- ---------- --------------------------------------------- --------- --------- ---------- 1 DPC_MODE 3 0 4 0 N 3 0 dpc mode, 0: None, 1: MP, 2: BP, 3: SP, 4: BS READ ONLY NOT_SYNC NO_SYNC 已用时间: 132.850(毫秒). 执行号:16777221.

2.5 连接退出 DMDPC

退出 SP->退出 BP->退出 MP(必须按照顺序 exit 退出,否则可能引起宕机)。

3 多副本架构(MP 单副本 BP 多副本为例)

主副本间要同步数据,因此多副本实例都需要开启归档。

3.1 环境说明

本章节是在同一台服务器(CentOS7)上搭建。
image.png

3.2 数据库安装

需要先安装数据库。详细安装步骤可以参考:linux 下如何安装达梦数据库

3.3 搭建 DPC 集群

3.3.1 初始化数据库实例

cd /dm8/bin ./dminit path=/dm8/data/dmdpc_bp/sp instance_name=SP port_num=6000 ap_port_num=7000 dpc_mode=SP ./dminit path=/dm8/data/dmdpc_bp/mp instance_name=MP port_num=6001 ap_port_num=7001 dpc_mode=MP //初始化 RAFT_1 组中的 BP 实例 ./dminit path=/dm8/data/dmdpc_bp/bp11 instance_name=BP11 port_num=6011 ap_port_num=7011 dpc_mode=BP ./dminit path=/dm8/data/dmdpc_bp/bp12 instance_name=BP12 port_num=6012 ap_port_num=7012 dpc_mode=BP ./dminit path=/dm8/data/dmdpc_bp/bp13 instance_name=BP13 port_num=6013 ap_port_num=7013 dpc_mode=BP //初始化 RAFT_2 组中的 BP 实例 ./dminit path=/dm8/data/dmdpc_bp/bp21 instance_name=BP21 port_num=6021 ap_port_num=7021 dpc_mode=BP ./dminit path=/dm8/data/dmdpc_bp/bp22 instance_name=BP22 port_num=6022 ap_port_num=7022 dpc_mode=BP ./dminit path=/dm8/data/dmdpc_bp/bp23 instance_name=BP23 port_num=6023 ap_port_num=7023 dpc_mode=BP //初始化 RAFT_3 组中的 BP 实例 ./dminit path=/dm8/data/dmdpc_bp/bp31 instance_name=BP31 port_num=6031 ap_port_num=7031 dpc_mode=BP ./dminit path=/dm8/data/dmdpc_bp/bp32 instance_name=BP32 port_num=6032 ap_port_num=7032 dpc_mode=BP ./dminit path=/dm8/data/dmdpc_bp/bp33 instance_name=BP33 port_num=6033 ap_port_num=7033 dpc_mode=BP

3.3.2 配置 mp.ini

为 SP、BP 和 MP 所有实例配置 MP.INI 文件。

cd /dm8/data/dmdpc_bp/sp/DAMENG/ cd /dm8/data/dmdpc_bp/bp11/DAMENG/ cd /dm8/data/dmdpc_bp/bp12/DAMENG/ cd /dm8/data/dmdpc_bp/bp13/DAMENG/ cd /dm8/data/dmdpc_bp/bp21/DAMENG/ cd /dm8/data/dmdpc_bp/bp22/DAMENG/ cd /dm8/data/dmdpc_bp/bp23/DAMENG/ cd /dm8/data/dmdpc_bp/bp31/DAMENG/ cd /dm8/data/dmdpc_bp/bp32/DAMENG/ cd /dm8/data/dmdpc_bp/bp33/DAMENG/ cd /dm8/data/dmdpc_bp/mp/DAMENG/ vi mp.ini mp_host = 192.168.182.132 #MP所在ip mp_port = 9001 #与MP、BP和SP上的ap_port_num不冲突的端口号

3.3.3 启动 MP

DMDPC 运行过程中,MP 需要始终处于开启状态。

cd /dm8/bin ./dmserver /dm8/data/dmdpc_bp/mp/DAMENG/dm.ini dpc_mode=MP

3.3.4 将 MP、SP 和 BP 加入集群

  1. 登录 MP
//搭建DMDPC过程中加入MP、SP和BP,必须登录MP进行操作 cd /dm8/bin ./disql SYSDBA/SYSDBA@192.168.182.132:6001
  1. 增加MP节点
//注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT' SP_CREATE_DPC_INSTANCE(NULL,'MP','MP',7001,6001, '192.168.182.132', '192.168.182.132','NORMAL',1,'MP instance');
  1. 增加 BP 节点(注册 BP 的 RAFT 组,每个 BP 都有各自的 RAFT 组)
//注册RAFT组,名为RAFT_1 SP_CREATE_DPC_RAFT('BP', 'RAFT_1'); //在RAFT_1组内注册BP实例BP11、BP12、BP13 //所有实例均以STANDBY模式、INVALID状态注册进MP,实例启动后,在RAFT组内选举出有效主库后,会自动更新MP中的模式、状态信息。 SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP11', 'BP', 7011, 6011, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance'); SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP12', 'BP', 7012, 6012, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance'); SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP13', 'BP', 7013, 6013, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance'); //注册RAFT组,名为RAFT_2 SP_CREATE_DPC_RAFT('BP', 'RAFT_2'); //在RAFT_2内注册BP实例BP21、BP22、BP23 //所有实例均以STANDBY模式、INVALID状态注册进MP,实例启动后,在RAFT组内选举出有效主库后,会自动更新MP中的模式、状态信息。 SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP21', 'BP', 7021, 6021, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance'); SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP22', 'BP', 7022, 6022, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance'); SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP23', 'BP', 7023, 6023, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance'); //注册RAFT组,名为RAFT_3 SP_CREATE_DPC_RAFT('BP', 'RAFT_3'); //在RAFT_2内注册BP实例BP31、BP32、BP33 //所有实例均以STANDBY模式、INVALID状态注册进MP,实例启动后,在RAFT组内选举出有效主库后,会自动更新MP中的模式、状态信息。 SP_CREATE_DPC_INSTANCE('RAFT_3', 'BP31', 'BP', 7031, 6031, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance'); SP_CREATE_DPC_INSTANCE('RAFT_3', 'BP32', 'BP', 7032, 6032, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance'); SP_CREATE_DPC_INSTANCE('RAFT_3', 'BP33', 'BP', 7033, 6033, '192.168.182.132', '192.168.182.132','STANDBY', 0, '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_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_3');
  1. 增加 SP 节点
//增加SP,也要注册RAFT组 SP_CREATE_DPC_RAFT('SP', 'RAFT_SP1'); //在RAFT_SP1内注册SP实例SP SP_CREATE_DPC_INSTANCE('RAFT_SP1', 'SP', 'SP', 7000, 6000, '192.168.182.132', '192.168.182.132','NORMAL', 2, 'SP instance');

注:将SP和BP节点加入DMDPC集群中的步骤必须在SP、BP第一次启动前完成

  1. 注册三个容错域:FDOM_1、FDOM_2、FDOM_3(可选)
SP_CREATE_FAULT_DOMAIN ('FDOM_1', 'shanghai_1'); SP_CREATE_FAULT_DOMAIN ('FDOM_2', 'shanghai_2'); SP_CREATE_FAULT_DOMAIN ('FDOM_3', 'shanghai_3'); //往容错域中添加实例 SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'MP'); SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP11'); SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP12'); SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP13'); SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP21'); SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP22'); SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP23'); SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP31'); SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP32'); SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP33');

3.3.5 检查注册是否成功

查询系统表,检查上一步骤的注册是否成功。能查到相关信息表示注册成功。

select * from DPC_BP_GROUP; 行号 ID NAME DESCRIPTION RAFT_NUM RAFT_INFO INFO1 INFO2 INFO3 ---------- ----------- ---- ----------- ----------- -------------- ----------- -------------------- ---------- 1 0 BG_1 bp group1 3 0x010002000300 0 NULL NULL 已用时间: 1.415(毫秒). 执行号:65616. select * from DPC_BP_RAFT; 行号 RAFT_ID GROUP_ID DPC_MODE NAME IS_VALID INFO1 INFO2 INFO3 ---------- ----------- ----------- -------- -------- ----------- ----------- -------------------- ---------- 1 0 -1 MP MP_RAFT 1 NULL NULL NULL 2 1 -1 BP RAFT_1 1 NULL NULL NULL 3 2 -1 BP RAFT_2 1 NULL NULL NULL 4 3 -1 BP RAFT_3 1 NULL NULL NULL 5 4 -1 SP RAFT_SP1 1 NULL NULL NULL 已用时间: 1.118(毫秒). 执行号:65617. select * from DPC_INSTANCE; 行号 RAFT_ID INST_ID NAME DPC_MODE XMAL_PORT INST_PORT IP_INTERNAL SYS_MODE SYS_STATUS STATUS DESCRIPTION IP_EXTERNAL INFO1 INFO2 ---------- ----------- ----------- ---- -------- ----------- ----------- --------------- -------- ----------- ----------- ----------- --------------- ----------- -------------------- INFO3 ---------- 1 0 4096 MP MP 7001 6001 192.168.182.132 NORMAL 4 1 MP instance 192.168.182.132 NULL NULL NULL 2 1 4097 BP11 BP 7011 6011 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 3 1 4098 BP12 BP 7012 6012 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 行号 RAFT_ID INST_ID NAME DPC_MODE XMAL_PORT INST_PORT IP_INTERNAL SYS_MODE SYS_STATUS STATUS DESCRIPTION IP_EXTERNAL INFO1 INFO2 ---------- ----------- ----------- ---- -------- ----------- ----------- --------------- -------- ----------- ----------- ----------- --------------- ----------- -------------------- INFO3 ---------- 4 1 4099 BP13 BP 7013 6013 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 5 2 4100 BP21 BP 7021 6021 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 6 2 4101 BP22 BP 7022 6022 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 行号 RAFT_ID INST_ID NAME DPC_MODE XMAL_PORT INST_PORT IP_INTERNAL SYS_MODE SYS_STATUS STATUS DESCRIPTION IP_EXTERNAL INFO1 INFO2 ---------- ----------- ----------- ---- -------- ----------- ----------- --------------- -------- ----------- ----------- ----------- --------------- ----------- -------------------- INFO3 ---------- 7 2 4102 BP23 BP 7023 6023 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 8 3 4103 BP31 BP 7031 6031 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 9 3 4104 BP32 BP 7032 6032 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 行号 RAFT_ID INST_ID NAME DPC_MODE XMAL_PORT INST_PORT IP_INTERNAL SYS_MODE SYS_STATUS STATUS DESCRIPTION IP_EXTERNAL INFO1 INFO2 ---------- ----------- ----------- ---- -------- ----------- ----------- --------------- -------- ----------- ----------- ----------- --------------- ----------- -------------------- INFO3 ---------- 10 3 4105 BP33 BP 7033 6033 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL NULL 11 4 4106 SP SP 7000 6000 192.168.182.132 NORMAL 6 2 SP instance 192.168.182.132 NULL NULL NULL 11 rows got 已用时间: 1.105(毫秒). 执行号:65618.

3.3.6 配置 BP11

开启多副本实例的归档并同步。

  1. 开启 BP11 归档
#修改 BP11 的 dm.ini中的以下参数 ARCH_INI = 1 #打开归档配置
  1. 配置 BP11 的本地归档 dmarch.ini。此处先只配本地归档,避免提前发起 RAFT 选举
cd /dm8/data/dmdpc_bp/bp11/DAMENG vi dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/dmdpc_bp/bp11/DAMENG/arch #本地归档文件路径 ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
  1. 正常启动 BP11 到 Open 状态
cd /dm8/bin ./dmserver /dm8/data/dmdpc_bp/bp11/DAMENG/dm.ini dpc_mode=BP

3.3.7 同步 BP RAFT _1组内数据

  1. 退出BP11

  2. 对 BP11 进行脱机备份

cd /dm8/bin ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/dmdpc_bp/bp11/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dm8/data/dmdpc_bp/bp11/DAMENG/bak/BACKUP_01'" USE_AP=2
  1. 将 BP11 的备份文件脱机还原到 BP12
//还原数据库: cd /dm8/bin ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp12/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp11/DAMENG/bak/BACKUP_01'" USE_AP=2 //因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤 //更新数据库: ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp12/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
  1. 将 BP11 的备份文件脱机还原到 BP13
//还原数据库: cd /dm8/bin ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp13/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp11/DAMENG/bak/BACKUP_01'" USE_AP=2 //因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤 //更新数据库: ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp13/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2

3.3.8 配置 BP21

开启多副本实例的归档并同步。

  1. 开启 BP21 归档
ARCH_INI = 1 #打开归档配置
  1. 配置 BP21 的本地归档 dmarch.ini。此处先只配本地归档,避免提前发起 RAFT 选举
cd /dm8/data/dmdpc_bp/bp21/DAMENG vi dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/dmdpc_bp/bp21/DAMENG/arch #本地归档文件路径 ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
  1. 正常启动 BP21 到 Open 状态
cd /dm8/bin ./dmserver /dm8/data/dmdpc_bp/bp21/DAMENG/dm.ini dpc_mode=BP

3.3.9 同步 BP RAFT _2 组内数据

  1. 退出 BP21

  2. 对 BP21 进行脱机备份

cd /dm8/bin ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/dmdpc_bp/bp21/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dm8/data/dmdpc_bp/bp21/DAMENG/bak/BACKUP_01'" USE_AP=2
  1. 将 BP21 的备份文件脱机还原到 BP22
//还原数据库: cd /dm8/bin ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp22/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp21/DAMENG/bak/BACKUP_01'" USE_AP=2 //因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤 //更新数据库: ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp22/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
  1. 将 BP21 的备份文件脱机还原到 BP23
//还原数据库: cd /dm8/bin ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp23/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp21/DAMENG/bak/BACKUP_01'" USE_AP=2 //因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤 //更新数据库: ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp23/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2

3.3.10 配置 BP31

开启多副本实例的归档并同步。

  1. 开启 BP31 归档
ARCH_INI = 1 #打开归档配置
  1. 配置 BP31 的本地归档 dmarch.ini。此处先只配本地归档,避免提前发起 RAFT 选举
cd /dm8/data/dmdpc_bp/bp31/DAMENG vi dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/dmdpc_bp/bp31/DAMENG/arch #本地归档文件路径 ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
  1. 正常启动 BP31 到 Open 状态
cd /dm8/bin ./dmserver /dm8/data/dmdpc_bp/bp31/DAMENG/dm.ini dpc_mode=BP

3.3.11 同步 BP RAFT _3 组内数据

  1. 退出 BP31

  2. 对 BP31 进行脱机备份

cd /dm8/bin ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/dmdpc_bp/bp31/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dm8/data/dmdpc_bp/bp31/DAMENG/bak/BACKUP_01'" USE_AP=2
  1. 将 BP31 的备份文件脱机还原到 BP32
//还原数据库: cd /dm8/bin ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp32/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp31/DAMENG/bak/BACKUP_01'" USE_AP=2 //因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤 //更新数据库: ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp32/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
  1. 将 BP31 的备份文件脱机还原到 BP33
//还原数据库: cd /dm8/bin ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp33/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp31/DAMENG/bak/BACKUP_01'" USE_AP=2 //因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤 //更新数据库: ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp33/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2

3.3.12 开启 BP 的归档配置

RAFT_1、RAFT_2、RAFT_3 的 BP 全部都需要。

ARCH_INI = 1 #打开归档配置 ALTER_MODE_STATUS = 0 #不允许用户直接通过SQL语句修改服务器模式

3.3.13 配置 BP RAFT 归档文件

修改 dmarch.ini,配置 RAFT 归档与本地归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。

  1. 配置 BP11 归档文件 dmarch.ini
    当前实例为BP11,需要向BP12、BP13同步数据,因此RAFT归档中的 ARCH_DEST分别配置为 BP12、 BP13。
    dmarch.ini 文件内容如下:
cd /dm8/data/dmdpc_bp/bp11/DAMENG vi dmarch.ini XMAL_HB_INTERVAL = 5 #节点通信检测间隔 RAFT_HB_INTERVAL = 150 #选举心跳间隔 RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库 RAFT_SELF_ID = 1 #多副本自身节点ID [ARCHIVE_RAFT1] ARCH_TYPE = RAFT #RAFT归档 ARCH_DEST = BP12 #归档目标实例名 ARCH_DEST_ID = 2 #归档目标多副本节点ID [ARCHIVE_RAFT2] ARCH_TYPE = RAFT #RAFT归档 ARCH_DEST = BP13 #归档目标 实例名 ARCH_DEST_ID = 3 #归档目标多副本节点ID [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/dmdpc_bp/bp11/DAMENG/arch #本地归档文件路径 ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
  1. 配置 BP12 归档文件 dmarch.ini
cd /dm8/data/dmdpc_bp/bp12/DAMENG vi dmarch.ini XMAL_HB_INTERVAL = 5 #节点通信检测间隔 RAFT_HB_INTERVAL = 150 #选举心跳间隔 RAFT_VOTE_INTERVAL = 2000 #选举超时时间 RAFT_SELF_ID = 2 #多副本自身节点 ID [ARCHIVE_RAFT1] ARCH_TYPE = RAFT #RAFT 归档 ARCH_DEST = BP11 #归档目标实例名 ARCH_DEST_ID = 1 #归档目标多副本节点 ID [ARCHIVE_RAFT2] ARCH_TYPE = RAFT #RAFT 归档 ARCH_DEST = BP13 #归档目标实例名 ARCH_DEST_ID = 3 #归档目标多副本节点 ID [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/dmdpc_bp/bp12/DAMENG/arch #本地归档文件路径 ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
  1. 配置 BP13 归档文件 dmarch.ini
cd /dm8/data/dmdpc_bp/bp13/DAMENG vi dmarch.ini XMAL_HB_INTERVAL = 5 #节点通信检测间隔 RAFT_HB_INTERVAL = 150 #选举心跳间隔 RAFT_VOTE_INTERVAL = 2000 #选举超时时间 RAFT_SELF_ID = 3 #多副本自身节点 ID [ARCHIVE_RAFT1] ARCH_TYPE = RAFT #RAFT 归档 ARCH_DEST = BP11 #归档目标实例名 ARCH_DEST_ID = 1 #归档目标多副本节点 ID [ARCHIVE_RAFT2] ARCH_TYPE = RAFT #RAFT 归档 ARCH_DEST = BP12 #归档目标实例名 ARCH_DEST_ID = 2 #归档目标多副本节点 ID [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/dmdpc_bp/bp13/DAMENG/arch #本地归档文件路径 ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制

全部修改完成后, RAFT_1 组中的三个 BP 即配置完成。RAFT_2 和 RAFT_3 组内的实例按上面同样配置,仅需要对路径、实例名等进行区分。

3.3.14 启动 SP 和 BP

启动 SP 和 BP 没有先后之分,一般在BP启动完毕后再启动SP。

cd /dm8/bin ./dmserver /dm8/data/dmdpc_bp/bp11/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/bp12/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/bp13/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/bp21/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/bp22/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/bp23/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/bp31/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/bp32/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/bp33/DAMENG/dm.ini dpc_mode=BP ./dmserver /dm8/data/dmdpc_bp/sp/DAMENG/dm.ini dpc_mode=SP

启动完成后,RAFT 组内的 BP 会自动选出主库,待主库选举完成后,整个 DMDPC 系统即可正常运行。

3.3.15 连接

  1. 连接对外提供服务的 SP即可。
cd /dm8/bin ./disql SYSDBA/SYSDBA@192.168.182.132:6000
  1. 验证环境搭建是否成功,可以在 SP 上执行查询 dpc_instance,看是否所有 RAFT 组中实例都能够查到
select * from dpc_instance;

MP、SP、BP 全部正常启动,且均处于 OPEN 状态,此时 DMDPC 集群搭建完毕。

3.3.16 退出 DMDPC

退出副本架构的 DMDPC 需要按正确顺序使用指定命令退出各节点。

  1. 使用 exit 命令退出所有 SP;
  2. 使用 exit all 命令依次退出每个 RAFT 组。
    在 BP 的每个 RAFT 组内中任一有效节点输入 exit all 命令或者对其发出信号 SIGUSR1(如 kill -10)即可对整个 RAFT 组执行协同退出,由有效 Leader 协同其余有效节点正常退出,无效节点不会参与协同退出;
    如果执行 exit all 命令的是无效节点,则会转为只在此节点进行退出(exit),多数情况下,无效节点的退出会由于无法推进 C_LSN 强制 HALT;
  3. 退出未参与 exit all 命令的 BP。使用 exit 命令依次退出所有剩余的无效 BP;
  4. 使用 exit 命令退出 MP。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服