注册
使用DEM部署DPC
专栏/技术分享/ 文章详情 /

使用DEM部署DPC

LY 2026/08/28 137 0 0
摘要

DPC(分布式计算集群)

DPC概述

DPC架构由计划生成节点(SP)、数据存储节点(BP)和元数据服务器节点(MP)三部分组成。

  • SP(Schedule Planner):对外提供分布式数据库服务,用户可以登录到任意一个SP节点,获得完整的数据库服务。
  • BP(Backend Planner):负责存储数据,执行SP的调度指令并将执行结果返回给SP。
  • MP(Meta Planner):负责存储元数据并向SP、BP提供元数据服务。

部署DPC集群

1 集群规划

服务器规划

主机名称 IP
HOST-A XX.XX.XX.100
HOST-B XX.XX.XX.101
HOST-C XX.XX.XX.234

实例规划

物理主机 角色 实例名 RAFT组名 PORT_NUM AP_PORT_NUM 工作目录
HOST-A SP SP1 RAFT_SP1 5230 1638 /dbdata/dpcdata
HOST-A MP(主副本) MP_A MP_RAFT 5220 1620 /dbdata/dpcdata
HOST-A BP(主副本) BP1_A RAFT_1 5240 1640 /dbdata/dpcdata
HOST-A BP(副本) BP2_B RAFT_2 5241 1641 /dbdata/dpcdata
HOST-A BP(副本) BP3_C RAFT_3 5242 1642 /dbdata/dpcdata
HOST-B MP(副本) MP_B MP_RAFT 5220 1620 /dbdata/dpcdata
HOST-B BP(副本) BP1_B RAFT_1 5240 1640 /dbdata/dpcdata
HOST-B BP(主副本) BP2_A RAFT_2 5241 1641 /dbdata/dpcdata
HOST-B BP(副本) BP3_B RAFT_3 5242 1642 /dbdata/dpcdata
HOST-C MP(副本) MP_C MP_RAFT 5220 1620 /dbdata/dpcdata
HOST-C BP(副本) BP1_C RAFT_1 5240 1640 /dbdata/dpcdata
HOST-C BP(副本) BP2_C RAFT_2 5241 1641 /dbdata/dpcdata
HOST-C BP(主副本) BP3_A RAFT_3 5242 1642 /dbdata/dpcdata

2.2 集群搭建

集群名称

图片1.png

集群类型(分布式集群)

2.png

环境准备(选择对应主机)

3.jpg

实例规划

4.jpg

# DPC集群实例配置文件
# 实例类型 #实例名 #RAFT组 #影子库
# 说明:MP不需要配置RAFT组,影子库默认N

# HOST-A 物理主机
[XX.XX.XX.100]
SP SP1 RAFT_SP1 N
MP MP_A N
BP BP1_A RAFT_1 N
BP BP2_B RAFT_2 N
BP BP3_C RAFT_3 N

# HOST-B 物理主机
[XX.XX.XX.101]
MP MP_B N
BP BP1_B RAFT_1 N
BP BP2_A RAFT_2 N
BP BP3_B RAFT_3 N

# HOST-C 物理主机
[XX.XX.XX.234]
MP MP_C N
BP BP1_C RAFT_1 N
BP BP2_C RAFT_2 N
BP BP3_A RAFT_3 N

SP组、BP组;dm.key默认暂不配置

库初始化参数

图片5.png

dm.ini、dmarch.ini默认配置

服务器执行码(上传dm数据库对应版本的.iso镜像文件)


集群测试

3.1 通过服务名方式(SP和BS)连接集群

(1)服务名配置

TIME_ZONE=(480) LANGUAGE=(cn) # 定义服务名对应的节点列表 DPC_BS=(XX.XX.XX.100:5220,XX.XX.XX.101:5220,XX.XX.XX.234:5220) # BS模式 [DPC_BS] CLUSTER=(DPC) LOGIN_MODE=(1) # BS方式,通过服务名连接MP主副本 SWITCH_TIMES=(60) SWITCH_INTERVAL=(1000)

(2)SP连接

/home/dmdba/dmdbms/bin/disql SYSDBA/'"Dameng@123"'@XX.XX.XX.100:5230

图片6.png

(3)BS连接

/home/dmdba/dmdbms/bin/disql SYSDBA/'"Dameng@123"'@DPC_BS

图片7.png


3.2 创建用户、表空间组

-- 创建表空间 CREATE TABLESPACE EBAPP_001 DATAFILE 'EBAPP_001.DBF' SIZE 1024 AUTOEXTEND ON NEXT 2048 WITH HUGE PATH 'EBAPP_001' STORAGE (ON RAFT_1); CREATE TABLESPACE EBAPP_002 DATAFILE 'EBAPP_002.DBF' SIZE 1024 AUTOEXTEND ON NEXT 2048 WITH HUGE PATH 'EBAPP_002' STORAGE (ON RAFT_2); -- 新建表空间组 SP_TS_GROUP_CREATE('EBAPP_TSG', 'tablespace group_ebapp'); SP_TS_GROUP_ADD_TS('EBAPP_TSG', 'EBAPP_001'); SP_TS_GROUP_ADD_TS('EBAPP_TSG', 'EBAPP_002'); -- 新建用户指定使用哪个表空间组 CREATE USER LSJ_APP IDENTIFIED BY "Dameng@123" DEFAULT TABLESPACE GROUP "EBAPP_TSG"; -- 授权 GRANT "RESOURCE", "SOI", "SVI", "VTI" TO "EHR_APP";

3.3 分布表(LIST / RANGE / HASH)

假设有 3 个 BP,每个 BP 节点 2 个表空间,共 6 个表空间。

3.3.1 HASH 分区

(1)不指定分区,分区数 < 表空间数

分区起始位置随机,后续连续分布在不同节点的表空间上(假设从第 3 个表空间开始)。

CREATE TABLE test_fq1(c1 INT, c2 VARCHAR) PARTITION BY HASH(c1) PARTITIONS 3;
分区1 分区2 分区3
1 2 3
(2)不指定分区,分区数 > 表空间数

起始分区固定在 TS_002,后续连续分布。

CREATE TABLE test_fq2(c1 INT, c2 VARCHAR) PARTITION BY HASH(c1) PARTITIONS 8;
分区1 分区2 分区3 分区4 分区5 分区6 分区7 分区8
6 1,7 2,8 3 4 5
(3)指定表空间组
  • 若表空间组中所有表空间属于同一节点,则全部分区在该节点上。
  • 若表空间组中包含多个不同节点的表空间,则分区优先分布到不同节点。
SP_TS_GROUP_CREATE('TSG_A', 'tablespace group FOR SYSDBA'); SP_TS_GROUP_ADD_TS('TSG_A', 'TS_001'); SP_TS_GROUP_ADD_TS('TSG_A', 'TS_002'); SP_TS_GROUP_ADD_TS('TSG_A', 'TS_013'); SP_TS_GROUP_ADD_TS('TSG_A', 'TS_004'); CREATE TABLE test_fq3(c1 INT, c2 VARCHAR) PARTITION BY HASH(c1) PARTITIONS 3 STORAGE(ON TSG_A);
(4)默认分区数

默认分区数与 BP 的整数倍一致,初始位置固定在 TS_002。

CREATE TABLE test_fq5(c1 INT, c2 VARCHAR) PARTITION BY HASH(c1) PARTITIONS DEFAULT;

3.3.2 RANGE 分区

(1)不指定存储位置
  • 分区数 < 表空间数:起始分区随机。
  • 分区数 > 表空间数:起始分区固定从 TS_002 开始。
CREATE TABLE test_range1(c1 INT, c2 VARCHAR) PARTITION BY RANGE(c1) ( PARTITION p1 VALUES LESS THAN (10), PARTITION p2 VALUES LESS THAN (20), PARTITION p3 VALUES EQU OR LESS THAN (MAXVALUE) );
(2)指定部分分区存储位置

未指定位置的分区(如 p3)存储在 p1 所在的表空间。

CREATE TABLE test_range3(c1 INT, c2 VARCHAR) PARTITION BY RANGE(c1) ( PARTITION p1 VALUES LESS THAN (10) STORAGE (ON TS_001), PARTITION p2 VALUES LESS THAN (20) STORAGE (ON TS_002), PARTITION p3 VALUES EQU OR LESS THAN (MAXVALUE) -- 存储在 TS_001 );
(3)p1 未指定存储位置

p1 位置随机,其余未指定位置的分区以 p1 的表空间为起始连续存放。

CREATE TABLE test_range4(c1 INT, c2 VARCHAR) PARTITION BY RANGE(c1) ( PARTITION p1 VALUES LESS THAN (10), -- 假设在 TS_003 PARTITION p2 VALUES LESS THAN (20) STORAGE (ON TS_002), PARTITION p3 VALUES EQU OR LESS THAN (MAXVALUE) -- 在 TS_004 );

3.3.3 LIST 分区

(1)不指定存储位置
  • 分区数 < 表空间数:起始分区随机。
  • 分区数 > 表空间数:起始分区固定从 TS_002 开始。
(2)每个分区都指定存储位置

各分区存储在指定位置。

CREATE TABLE test_list2(c1 INT, c2 VARCHAR) PARTITION BY LIST(c1) ( PARTITION p1 VALUES (1) STORAGE (ON TS_001), PARTITION p2 VALUES (2) STORAGE (ON TS_002), PARTITION p3 VALUES (DEFAULT) STORAGE (ON TS_003) ) STORAGE (ON TS_001);
(3)仅在语句最后指定存储位置

所有分区都存储在该表空间上。

-- 全部存储在 TS_001 CREATE TABLE test_list3(c1 INT, c2 VARCHAR) PARTITION BY LIST(c1) ( PARTITION p1 VALUES (1), PARTITION p2 VALUES (2), PARTITION p3 VALUES (DEFAULT) ) STORAGE (ON TS_001);

3.4 制造 BP 故障,测试副本接管

1. 查看故障前状态

SELECT INSTANCE_NAME, HOST_NAME, STATUS$, MODE$ FROM V$INSTANCE;

图片8.png

2. 关闭 BP2 的主副本实例

/dbdata/dpcdata/dmdpc/BP2_A/bin/DmServiceBP2_A.sh stop

3. 关闭后再次查看备库接管状态

图片9.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服