DPC架构由计划生成节点(SP)、数据存储节点(BP)和元数据服务器节点(MP)三部分组成。
| 主机名称 | 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 |
# 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
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)
/home/dmdba/dmdbms/bin/disql SYSDBA/'"Dameng@123"'@XX.XX.XX.100:5230
/home/dmdba/dmdbms/bin/disql SYSDBA/'"Dameng@123"'@DPC_BS
-- 创建表空间
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 个 BP,每个 BP 节点 2 个表空间,共 6 个表空间。
分区起始位置随机,后续连续分布在不同节点的表空间上(假设从第 3 个表空间开始)。
CREATE TABLE test_fq1(c1 INT, c2 VARCHAR) PARTITION BY HASH(c1) PARTITIONS 3;
| 分区1 | 分区2 | 分区3 |
|---|---|---|
| 1 | 2 | 3 |
起始分区固定在 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 |
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);
默认分区数与 BP 的整数倍一致,初始位置固定在 TS_002。
CREATE TABLE test_fq5(c1 INT, c2 VARCHAR) PARTITION BY HASH(c1) PARTITIONS DEFAULT;
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)
);
未指定位置的分区(如 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
);
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
);
各分区存储在指定位置。
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);
所有分区都存储在该表空间上。
-- 全部存储在 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);
SELECT INSTANCE_NAME, HOST_NAME, STATUS$, MODE$ FROM V$INSTANCE;
/dbdata/dpcdata/dmdpc/BP2_A/bin/DmServiceBP2_A.sh stop
文章
阅读量
获赞
