【达梦数据库】DM8 分布计算集群(DMDPC)搭建

1 概述

1.1 场景描述

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

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

1.2 系统架构

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

以客户端的查询 SELECT 操作为例,流程如下:

1发送请求
2申请获取字典信息
3返回字典信息
4生成执行计划
5不同BP间可能存在数据交换
6执行子计划
7返回查询结果
客户端
SP
MP
BP

注:每一个多副本系统中只有一个作为主节点,其余节点均作为备份节点。

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_NUMAP_PORT_NUM路径IP
RAFT_SP1SPSP52364236/dm8/data/dmdpc/sp192.168.182.132
RAFT_1BPBP152374237/dm8/data/dmdpc/bp1192.168.182.132
RAFT_2BPBP252474247/dm8/data/dmdpc/bp2192.168.182.132
RAFT_3BPBP352574257/dm8/data/dmdpc/bp3192.168.182.132
缺省为 NULL 或者 MP_RAFTMPMP52384238/dm8/data/dmdpc/mp192.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)上搭建。

RAFT 组名角色实例名PORT_NUMAP_PORT_NUM路径IP
RAFT_SP1SPSP60007000/dm8/data/dmdpc/sp192.168.182.132
RAFT_1BPBP1160117011/dm8/data/dmdpc/bp11192.168.182.132
BPBP1260127012/dm8/data/dmdpc/bp12192.168.182.132
BPBP1360137013/dm8/data/dmdpc/bp13192.168.182.132
RAFT_2BPBP2160217021/dm8/data/dmdpc/bp21192.168.182.132
BPBP2260227022/dm8/data/dmdpc/bp22192.168.182.132
BPBP2360237023/dm8/data/dmdpc/bp23192.168.182.132
RAFT_3BPBP3160317031/dm8/data/dmdpc/bp31192.168.182.132
BPBP3260327032/dm8/data/dmdpc/bp32192.168.182.132
BPBP3360337033/dm8/data/dmdpc/bp33192.168.182.132
缺省为 NULL 或者 MP_RAFTMPMP60017001/dm8/data/dmdpc/mp192.168.182.132

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。
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值