注册
部署DPC集群
技术分享/ 文章详情 /

部署DPC集群

キミの笑顔 2024/06/07 1018 0 0

1、硬件环境

数据库版本:DM Database 64 V8 03134284172-20240321-222308-20093
操作系统:Redhat 7.9

2、环境规划

虚拟机部署采用2sp,1bp,1mp进行部署。
RAFT组名	角色	实例	IP	PORT_NUM	AP_PORT_NUM
SP_RAFT1	SP	SP1	192.*.*.17	5236	6000
SP_RAFT2	SP	SP2	192.*.*.17	5237	6001
BP_RAFT1
	BP	BP11	192.*.*.18	5236	6002
	BP	BP12	192.*.*.18	5237	6003
	BP	BP13	192.*.*.18	5238	6004
MP_RAFT	MP	MP1	192.*.*.17	5238	6005
	MP	MP2	192.*.*.17	5239	6006
	MP	MP3	192.*.*.17	5240	6007

3、初始化实例

3.1、初始化SP、MP

初始化SP:
./dminit path=/dm8/sp/sp1 instance_name=SP1 port_num=5236 ap_port_num=6000 page_size=32 log_size=2048 dpc_mode=SP
./dminit path=/dm8/sp/sp2 instance_name=SP2 port_num=5237 ap_port_num=6001 page_size=32 log_size=2048 dpc_mode=SP

初始化MP:
-- 初始化
./dminit path=/dm8/mp/mp1 instance_name=MP1 port_num=5238 ap_port_num=6005 page_size=32 log_size=2048 dpc_mode=MP
./dminit path=/dm8/mp/mp2 instance_name=MP2 port_num=5239 ap_port_num=6006 page_size=32 log_size=2048 dpc_mode=MP
./dminit path=/dm8/mp/mp3 instance_name=MP3 port_num=5240 ap_port_num=6007 page_size=32 log_size=2048 dpc_mode=MP

3.2、初始化BP

初始化BP:
-- 初始化
./dminit path=/dm8/bp/bp1 instance_name=BP1 port_num=5236 ap_port_num=6002 page_size=32 log_size=2048 dpc_mode=BP
./dminit path=/dm8/bp/bp2 instance_name=BP2 port_num=5237 ap_port_num=6003 page_size=32 log_size=2048 dpc_mode=BP
./dminit path=/dm8/bp/bp3 instance_name=BP3 port_num=5238 ap_port_num=6004 page_size=32 log_size=2048 dpc_mode=BP

4、配置mp.ini

-- mp.ini
# mp_port 端口号必须与 MP、BP 和 SP 上的 ap_port_num 端口号不冲突 
[MP1] 
mp_host = 192.*.*.17 
mp_port = 9000 
[MP2] 
mp_host = 192.*.*.17 
mp_port = 9001 
[MP3] 
mp_host = 192.*.*.17 
mp_port = 9002

注意:需要拷贝mp.ini到SP、BP、MP各实例的INI路径下。

5、配置并启动MP1

5.1、开启本地归档

-- 归档参数
ARCH_INI = 1

-- dmarch.ini 此处先只配本地归档,避免提前发起 RAFT 选举
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL			 
ARCH_DEST = /dm8/mp/mp1/arch 
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800 

5.2、启动MP1

-- 启动
./dmserver /dm8/mp/mp1/DAMENG/dm.ini dpc_mode=MP

6、添加SP、BP、MP到集群

只有在注册当前登录 MP 节点后,才可以注册其余节点。

6.1、添加MP节点

//增加 MP 节点 
//注册当前 MP 实例,MP 的 RAFT 组名可以指定为'MP_RAFT'或缺省 NULL
SP_CREATE_DPC_INSTANCE('MP_RAFT', 'MP1', 'MP', 6008, 5238, '192.*.*.17','', 'STANDBY', 0, 'MP instance');
SP_CREATE_DPC_INSTANCE('MP_RAFT', 'MP2', 'MP', 6009, 5239, '192.*.*.17', '','STANDBY', 0, 'MP instance');
SP_CREATE_DPC_INSTANCE('MP_RAFT', 'MP3', 'MP', 6010, 5240, '192.*.*.17', '', 'STANDBY', 0, 'MP instance');

6.2、添加BP节点

// 增加BP节点
//注册 RAFT 组,名为 BP_RAFT1
SP_CREATE_DPC_RAFT('BP', 'BP_RAFT1');

//在 BP_RAFT1 组内注册 BP 实例 BP1
SP_CREATE_DPC_INSTANCE('BP_RAFT1', 'BP1', 'BP', 6002, 5236, '192.*.*.18', '','STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('BP_RAFT1', 'BP2', 'BP', 6003, 5237, '192.*.*.18', '','STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('BP_RAFT1', 'BP3', 'BP', 6004, 5238, '192.*.*.18', '','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', 'BP_RAFT1');

6.3、添加SP节点

//增加 SP 节点
//增加 SP,也要注册 RAFT 组
SP_CREATE_DPC_RAFT('SP', 'SP_RAFT1');

//在 SP_RAFT1 内注册 SP 实例 SP1
SP_CREATE_DPC_INSTANCE('SP_RAFT1', 'SP1', 'SP', 6000, 5236, '192.*.*.17', '','NORMAL', 1, 'SP instance');


//增加 SP 节点
//增加 SP,也要注册 RAFT 组
SP_CREATE_DPC_RAFT('SP', 'SP_RAFT2');

//在 SP_RAFT2 内注册 SP 实例 SP2
SP_CREATE_DPC_INSTANCE('SP_RAFT2', 'SP2', 'SP', 6001, 5237, '192.*.*.17', '','NORMAL', 1, 'SP instance');

6.4、检验是否添加成功

-- BP组
select * from DPC_BP_GROUP;
查看是否添加成功。

-- RAFT组
select * from DPC_BP_RAFT;
查看是否添加成功。

-- 实例
select * from DPC_INSTANCE;
查看是否添加成功。

7、准备MP RAFT组内数据

7.1、脱机备份MP1

-- 备份
backup database  '/dm8/mp/mp1/DAMENG/dm.ini' full backupset '/dm8/mp/mp1/bak/full_bak' parallel 8;

7.2、还原MP2

-- 还原MP2
restore database '/dm8/mp/mp2/DAMENG/dm.ini' from backupset '/dm8/mp/mp2/bak/full_bak';
recover database '/dm8/mp/mp2/DAMENG/dm.ini' from backupset '/dm8/mp/mp2/bak/full_bak';
recover database '/dm8/mp/mp2/DAMENG/dm.ini' update db_magic;

7.3、还原MP3

-- 还原MP3
restore database '/dm8/mp/mp3/DAMENG/dm.ini' from backupset '/dm8/mp/mp3/bak/full_bak';
recover database '/dm8/mp/mp3/DAMENG/dm.ini' from backupset '/dm8/mp/mp3/bak/full_bak';
recover database '/dm8/mp/mp3/DAMENG/dm.ini' update db_magic;

7.4、参数修改

-- MP1、MP2、MP3
ARCH_INI =1
ALTER_MODE_STATUS = 0 

7.5、配置RAFT归档

7.5.1、MP1归档配置

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 = MP2 #归档目标实例名 
ARCH_DEST_ID = 2 #归档目标多副本节点 ID

[ARCHIVE_RAFT2] 
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = MP3 #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL			 
ARCH_DEST = /dm8/mp/mp1/arch 
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800 

7.5.2、MP2归档配置

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 = MP1 #归档目标实例名
ARCH_DEST_ID = 1 #归档目标多副本节点 ID

[ARCHIVE_RAFT2] 
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = MP3 #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL			 
ARCH_DEST = /dm8/mp/mp2/arch 
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800

7.5.3、MP3归档配置

XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 2500 #选举超时时间
RAFT_SELF_ID = 3 #多副本自身节点 ID

[ARCHIVE_RAFT1] 
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = MP1 #归档目标实例名
ARCH_DEST_ID = 1 #归档目标多副本节点 ID

[ARCHIVE_RAFT2] 
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = MP2 #归档目标实例名
ARCH_DEST_ID = 2 #归档目标多副本节点 ID

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL			 
ARCH_DEST = /dm8/mp/mp2/arch 
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800

7.6、启动MP

7.6.1、启动MP1

-- 修改启动脚本
DM_HOME="/dm8/dmdbms"
INI_PATH=/dm8/mp/mp1/DAMENG/dm.ini
DPC_MODE=MP

#mount or open
START_MODE=mount

-- 启动MP1
./DmService_MP1 start

7.6.2、启动MP2

-- 修改启动脚本
DM_HOME="/dm8/dmdbms"
INI_PATH=/dm8/mp/mp2/DAMENG/dm.ini
DPC_MODE=MP

#mount or open
START_MODE=mount

-- 启动MP2
./DmService_MP2 start

7.6.3、启动MP3

-- 修改启动脚本
DM_HOME="/dm8/dmdbms"
INI_PATH=/dm8/mp/mp2/DAMENG/dm.ini
DPC_MODE=MP

#mount or open
START_MODE=mount

-- 启动MP3
./DmService_MP2 start

8、准备BP RAFT组内数据

8.1、BP1本地归档

-- 归档参数
ARCH_INI = 1

-- 归档配置,此处先只配本地归档,避免提前发起 RAFT 选举
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL			 
ARCH_DEST = /dm8/bp/bp1/arch 
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800 

-- 正常启动BP1和关闭BP1
./dmserver /dm8/bp/bp1/DAMENG/dm.ini dpc_mode=BP

关闭:ctrl+c

8.2、脱机备份BP1

-- 备份
backup database  '/dm8/bp/bp1/DAMENG/dm.ini' full backupset '/dm8/bp/bp1/bak/full_bak' parallel 8;

8.3、还原BP2

-- 还原BP2
restore database '/dm8/bp/bp2/DAMENG/dm.ini' from backupset '/dm8/bp/bp1/bak/full_bak';
recover database '/dm8/bp/bp2/DAMENG/dm.ini' from backupset '/dm8/bp/bp1/bak/full_bak';
recover database '/dm8/bp/bp2/DAMENG/dm.ini' update db_magic;

8.4、还原BP3

-- 还原BP3
restore database '/dm8/bp/bp3/DAMENG/dm.ini' from backupset '/dm8/bp/bp1/bak/full_bak';
recover database '/dm8/bp/bp3/DAMENG/dm.ini' from backupset '/dm8/bp/bp1/bak/full_bak';
recover database '/dm8/bp/bp3/DAMENG/dm.ini' update db_magic;

8.5、参数修改

-- BP1、BP2、BP3
ARCH_INI =1
ALTER_MODE_STATUS = 0 

8.6、配置RAFT归档

8.6.1、BP1归档配置

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 = BP2 #归档目标实例名
ARCH_DEST_ID = 2 #归档目标多副本节点 ID
[ARCHIVE_RAFT2] 
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP3 #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL			 
ARCH_DEST = /dm8/bp/bp1/arch 
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800 

8.6.2、BP2归档配置

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 = BP1 #归档目标实例名
ARCH_DEST_ID = 1 #归档目标多副本节点 ID
[ARCHIVE_RAFT2] 
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP3 #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL			 
ARCH_DEST = /dm8/bp/bp2/arch 
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800

8.6.3、BP3归档配置

XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 2500 #选举超时时间
RAFT_SELF_ID = 3 #多副本自身节点 ID

[ARCHIVE_RAFT1] 
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP1 #归档目标实例名
ARCH_DEST_ID = 1 #多副本归档目标节点 ID
[ARCHIVE_RAFT2] 
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP2 #归档目标实例名
ARCH_DEST_ID = 2 #多副本归档目标节点 ID

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL			 
ARCH_DEST = /dm8/bp/bp3/arch 
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800 

8.7、启动BP

8.7.1、启动BP1

-- 修改启动脚本
DM_HOME="/dm8/dmdbms"
INI_PATH=/dm8/bp/bp1/DAMENG/dm.ini
DPC_MODE=BP

#mount or open
START_MODE=mount

-- 启动BP1
./DmService_BP1 start

8.7.2、启动BP2

-- 修改启动脚本
DM_HOME="/dm8/dmdbms"
INI_PATH=/dm8/bp/bp2/DAMENG/dm.ini
DPC_MODE=BP

#mount or open
START_MODE=mount

-- 启动BP1
./DmService_BP2 start

8.7.3、启动BP3

-- 修改启动脚本
DM_HOME="/dm8/dmdbms"
INI_PATH=/dm8/bp/bp3/DAMENG/dm.ini
DPC_MODE=BP

#mount or open
START_MODE=mount

-- 启动BP1
./DmService_BP3 start

9、启动SP

9.1、启动SP1

-- 修改启动脚本
DM_HOME="/dm8/dmdbms"
INI_PATH=/dm8/sp/sp1/DAMENG/dm.ini
DPC_MODE=SP

#mount or open
START_MODE=open

-- 启动SP1
./DmService_SP1 start

9.2、启动SP2

-- 修改启动脚本
DM_HOME="/dm8/dmdbms"
INI_PATH=/dm8/sp/sp2/DAMENG/dm.ini
DPC_MODE=SP

#mount or open
START_MODE=open

-- 启动SP2
./DmService_SP2 start

10、查看集群状态

登录计算节点SP查看集群状态。验证是否部署成功。

10.1、实例状态查看

-- 实例状态
select * from V$instance;
查看集群活跃实例是否正常。

10.2、归档状态查看

-- 查看归档
select * from v$arch_status;
查看归档状态是否正常。

10.3、正常启动及停止集群

10.3.1、启动集群

1、启动所有MP实例
./DmService_MP1 start
./DmService_MP2 start
./DmService_MP3 start

2、启动所有BP实例         -- 启动SP与BP顺序可更改
./DmService_BP1 start
./DmService_BP2 start
./DmService_BP3 start

3、启动所有SP实例
./DmService_SP1 start
./DmService_SP1 start

10.3.2、停止集群

1、停掉所有SP实例
./DmService_SP1 stop
./DmService_SP2 stop

2、停掉所有BP实例
./DmService_BP1 stop
./DmService_BP2 stop
./DmService_BP3 stop

3、停掉所有MP实例
./DmService_MP1 stop
./DmService_MP2 stop
./DmService_MP3 stop
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服