DMDPC 集群规划部署 1 个 SP,2 个 BP 和 1 个 MP。MP 采用单机模式,BP 采 用多副本模式(每个 BP 配置成 3 副本)。
初始化 8 个实例,分别为 SP、MP 和 6 个 BP 角色。
//初始化sp
[dmdba@DMDPC ~]$ dminit path=/data/sp1 instance_name=SP1 port_num=5236 ap_port_num=6000 dpc_mode=SP SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-10
write to dir [/data/sp1/DAMENG].
create dm database success. 2025-05-22 17:20:28
//初始化mp
[dmdba@DMDPC ~]$ dminit path=/data/mp instance_name=MP port_num=5237 ap_port_num=6001 dpc_mode=MP SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/mp/DAMENG/DAMENG01.log
log file path: /data/mp/DAMENG/DAMENG02.log
write to dir [/data/mp/DAMENG].
create dm database success. 2025-05-22 17:20:40
//初始化 RAFT_1 组中的 BP 实例
[dmdba@DMDPC ~]$ dminit path=/data/bp11 instance_name=BP11 port_num=5238 ap_port_num=6002 dpc_mode=BP SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/bp11/DAMENG/DAMENG01.log
log file path: /data/bp11/DAMENG/DAMENG02.log
write to dir [/data/bp11/DAMENG].
create dm database success. 2025-05-22 17:21:03
[dmdba@DMDPC ~]$ dminit path=/data/bp12 instance_name=BP12 port_num=5239 ap_port_num=6003 dpc_mode=BP SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/bp12/DAMENG/DAMENG01.log
log file path: /data/bp12/DAMENG/DAMENG02.log
write to dir [/data/bp12/DAMENG].
create dm database success. 2025-05-22 17:21:13
[dmdba@DMDPC ~]$ dminit path=/data/bp13 instance_name=BP13 port_num=5240 ap_port_num=6004 dpc_mode=BP SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/bp13/DAMENG/DAMENG01.log
log file path: /data/bp13/DAMENG/DAMENG02.log
write to dir [/data/bp13/DAMENG].
create dm database success. 2025-05-22 17:21:41
//初始化 RAFT_2 组中的 BP 实例
[dmdba@DMDPC ~]$ dminit path=/data/bp21 instance_name=BP21 port_num=5241 ap_port_num=6005 dpc_mode=BP SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/bp21/DAMENG/DAMENG01.log
log file path: /data/bp21/DAMENG/DAMENG02.log
write to dir [/data/bp21/DAMENG].
create dm database success. 2025-05-22 17:22:01
[dmdba@DMDPC ~]$ dminit path=/data/bp22 instance_name=BP22 port_num=5242 ap_port_num=6006 dpc_mode=BP SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/bp22/DAMENG/DAMENG01.log
log file path: /data/bp22/DAMENG/DAMENG02.log
write to dir [/data/bp22/DAMENG].
create dm database success. 2025-05-22 17:22:10
[dmdba@DMDPC ~]$ dminit path=/data/bp23 instance_name=BP23 port_num=5243 ap_port_num=6007 dpc_mode=BP SYSDBA_PWD=Dameng_123 SYSAUDITOR_PWD=Dameng_123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/bp23/DAMENG/DAMENG01.log
log file path: /data/bp23/DAMENG/DAMENG02.log
write to dir [/data/bp23/DAMENG].
create dm database success. 2025-05-22 17:22:18
为 SP、BP 和 MP 实例配置 MP.INI 文件。 MP.INI 文件内容如下:
mp_host = 10.12.10.123
mp_port = 9000 #与 MP、BP 和 SP 上的 ap_port_num 不冲突的端口号
将 MP.INI 文件内容分别写入 SP(SP1)、两个 RAFT 组内的所有 BP(BP11、BP12、BP13、 BP21、BP22、BP23)和 MP 中。打开 cmd 命令行工具执行:
//向 SP 写入 MP.INI
[dmdba@DMDPC ~]$ echo mp_host = 10.12.10.123 > /data/sp1/DAMENG/mp.ini
[dmdba@DMDPC ~]$ echo mp_host = 10.12.10.123 > /data/sp1/DAMENG/mp.ini && echo mp_port = 9000 >> /data/sp1/DAMENG/mp.ini
[dmdba@DMDPC ~]$ cat /data/sp1/DAMENG/mp.ini
mp_host = 10.12.10.123
mp_port = 9000
[dmdba@DMDPC ~]$
//向两个 RAFT 组内的所有 BP 写入 MP.INI,不同 BP 需要切换到不同 的路径下,这里以 BP11 的路径为例(或者直接拷贝 SP 上的 MP.INI 到 所有 BP 的库目录下)
[dmdba@DMDPC ~]$ echo mp_host = 10.12.10.123 > /data/bp11/DAMENG/mp.ini && echo mp_port = 9000 >> /data/bp11/DAMENG/mp.ini && cat /data/bp11/DAMENG/mp.ini
mp_host = 10.12.10.123
mp_port = 9000
//为 MP 配置 MP.INI 文件
[dmdba@DMDPC ~]$ echo mp_host = 10.12.10.123 > /data/mp/DAMENG/mp.ini && echo mp_port = 9000 >> /data/mp/DAMENG/mp.ini && cat /data/mp/DAMENG/mp.ini
mp_host = 10.12.10.123
mp_port = 9000
//启动 MP
dmserver /data/mp/DAMENG/dm.ini dpc_mode=MP
增加 1 个 MP、1 个 SP 和 6 个 BP 节点。只有在注册当前登录 MP 节点后,才可以注册 其余节点。后续增加 MP、SP 节点和 BP 节点无先后之分。
//搭建 DMDPC 过程中加入 MP、SP 和 BP,必须登录 MP 进行操作
[dmdba@DMDPC ~]$ disql SYSDBA/Dameng_123@10.12.10.123:5237
服务器[10.12.10.123:5237]:处于普通打开状态
登录使用时间 : 17.334(ms)
disql V8
SQL>
//增加 MP 节点
//注册当前 MP 实例,MP 的 RAFT 组名可以指定为 NULL 或者’MP_RAFT’
SQL> SP_CREATE_DPC_INSTANCE(NULL,'MP','MP',6001,5237, '10.12.10.123', '10.12.10.123','NORMAL',1,'MP instance');
DMSQL 过程已成功完成
已用时间: 8.560(毫秒). 执行号:73101.
//增加 BP 节点
//注册 RAFT 组,名为 RAFT_1
SQL> SP_CREATE_DPC_RAFT('BP', 'RAFT_1');
DMSQL 过程已成功完成
已用时间: 3.347(毫秒). 执行号:73102.
//在 RAFT_1 组内注册 BP 实例 BP11、BP12、BP13
//所有实例均以 STANDBY 模式、INVALID 状态注册进 MP,实例启动后,在RAFT 组内选举出有效主库后,会自动更新 MP 中的模式、状态信息。
SQL> SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP11', 'BP', 6002, 5238, '10.12.10.123', '10.12.10.123','STANDBY', 0, 'BP instance');
DMSQL 过程已成功完成
已用时间: 4.844(毫秒). 执行号:73103.
SQL> SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP12', 'BP', 6003, 5239, '10.12.10.123', '10.12.10.123','STANDBY', 0, 'BP instance');
DMSQL 过程已成功完成
已用时间: 3.755(毫秒). 执行号:73104.
SQL> SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP13', 'BP', 6004, 5240, '10.12.10.123', '10.12.10.123','STANDBY', 0, 'BP instance');
DMSQL 过程已成功完成
已用时间: 4.332(毫秒). 执行号:73105.
//注册 RAFT 组,名为 RAFT_2
SQL> SP_CREATE_DPC_RAFT('BP', 'RAFT_2');
DMSQL 过程已成功完成
已用时间: 3.561(毫秒). 执行号:73106.
//在 RAFT_2 内注册 BP 实例 BP21、BP22、BP23
SQL> SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP21', 'BP', 6005, 5241, '10.12.10.123', '10.12.10.123','STANDBY', 0, 'BP instance');
DMSQL 过程已成功完成
已用时间: 4.239(毫秒). 执行号:73107.
SQL> SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP22', 'BP', 6006, 5242, '10.12.10.123', '10.12.10.123','STANDBY', 0, 'BP instance');
DMSQL 过程已成功完成
已用时间: 4.684(毫秒). 执行号:73108.
SQL> SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP23', 'BP', 6007, 5243, '10.12.10.123', '10.12.10.123','STANDBY', 0, 'BP instance');
DMSQL 过程已成功完成
已用时间: 3.954(毫秒). 执行号:73109.
//注册一个 BP 组,名为 BG_1
SQL> SP_CREATE_DPC_BP_GROUP('BG_1', 'bp group1');
DMSQL 过程已成功完成
已用时间: 3.623(毫秒). 执行号:73110.
//在 BP 组内添加 RAFT 组
SQL> SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_1');
DMSQL 过程已成功完成
已用时间: 3.990(毫秒). 执行号:73111.
SQL> SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_2');
DMSQL 过程已成功完成
已用时间: 3.080(毫秒). 执行号:73112.
//增加 SP 节点 也要注册 RAFT 组
SQL> SP_CREATE_DPC_RAFT('SP', 'RAFT_SP1');
DMSQL 过程已成功完成
已用时间: 3.704(毫秒). 执行号:73113.
//在 RAFT_SP1 内注册 SP 实例 SP1
SQL> SP_CREATE_DPC_INSTANCE('RAFT_SP1', 'SP1', 'SP', 6000, 5236, '10.12.10.123', '10.12.10.123','NORMAL', 2, 'SP instance');
DMSQL 过程已成功完成
已用时间: 5.521(毫秒). 执行号:73114.
//注册三个容错域:FDOM_1 FDOM_2 FDOM_3
SQL> SP_CREATE_FAULT_DOMAIN ('FDOM_1', 'shanghai_1');
DMSQL 过程已成功完成
已用时间: 4.469(毫秒). 执行号:73115.
SQL> SP_CREATE_FAULT_DOMAIN ('FDOM_2', 'shanghai_2');
DMSQL 过程已成功完成
已用时间: 3.549(毫秒). 执行号:73116.
SQL> SP_CREATE_FAULT_DOMAIN ('FDOM_3', 'shanghai_3');
DMSQL 过程已成功完成
已用时间: 3.619(毫秒). 执行号:73117.
//往容错域中添加实例
SQL> SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'MP');
DMSQL 过程已成功完成
已用时间: 4.215(毫秒). 执行号:73118.
SQL> SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP11');
DMSQL 过程已成功完成
已用时间: 3.386(毫秒). 执行号:73119.
SQL> SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP21');
DMSQL 过程已成功完成
已用时间: 3.368(毫秒). 执行号:73120.
SQL> SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP12');
DMSQL 过程已成功完成
已用时间: 3.348(毫秒). 执行号:73121.
SQL> SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP22');
DMSQL 过程已成功完成
已用时间: 3.603(毫秒). 执行号:73122.
SQL> SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP13');
DMSQL 过程已成功完成
已用时间: 5.611(毫秒). 执行号:73123.
SQL> SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP23');
DMSQL 过程已成功完成
已用时间: 3.389(毫秒). 执行号:73124.
将 SP 和 BP 节点加入 DMDPC 集群中的步骤必须在 SP、BP 第一次启动前完成!
查询系统表,检查上一步骤的注册是否成功。能查到相关信息表示注册成功。
SQL> select * from DPC_BP_GROUP;
行号 ID NAME DESCRIPTION RAFT_NUM RAFT_INFO INFO1 INFO2 INFO3
---------- ----------- ---- ----------- ----------- ---------- ----------- -------------------- ----------
1 0 BG_1 bp group1 2 0x01000200 0 NULL NULL
已用时间: 1.433(毫秒). 执行号:73125.
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 SP RAFT_SP1 1 NULL NULL NULL
已用时间: 1.208(毫秒). 执行号:73126.
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 6001 5237 10.12.10.123 NORMAL 4 1 MP instance 10.12.10.123 74536
0 NULL
2 1 4097 BP11 BP 6002 5238 10.12.10.123 STANDBY 6 0 BP instance 10.12.10.123 65536
0 NULL
3 1 4098 BP12 BP 6003 5239 10.12.10.123 STANDBY 6 0 BP instance 10.12.10.123 131072
0 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 6004 5240 10.12.10.123 STANDBY 6 0 BP instance 10.12.10.123 196608
0 NULL
5 2 4100 BP21 BP 6005 5241 10.12.10.123 STANDBY 6 0 BP instance 10.12.10.123 65536
0 NULL
6 2 4101 BP22 BP 6006 5242 10.12.10.123 STANDBY 6 0 BP instance 10.12.10.123 131072
0 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 6007 5243 10.12.10.123 STANDBY 6 0 BP instance 10.12.10.123 196608
0 NULL
8 3 4103 SP1 SP 6000 5236 10.12.10.123 NORMAL 6 2 SP instance 10.12.10.123 NULL
0 NULL
8 rows got
已用时间: 1.314(毫秒). 执行号:73127.
ARCH_INI = 1 #打开归档配置
此处先只配本地归档,避免提前发起 RAFT 选举
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/bp11/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT= 1024 #本地归档文件总大小,0 表示无限制
dmserver /data/bp11/DAMENG/dm.ini dpc_mode=bp
RAFT_1 和 RAFT_2 组内的 BP 数据准备方式完全相同,只是路径不同,这里对组 RAFT_1 的数据准备步骤进行说明,RAFT_2 组参考这个步骤执行即可。注意,RAFT_2 组和 RAFT_1 组要各自按照此小节介绍的方式准备数据,RAFT_2 组不能直接使用 RAFT_1 组的备份集执 行还原恢复。
首先,退出 BP11。 其次,对 BP11 进行脱机备份。
dmdba@DMDPC ~]$ dmrman CTLSTMT="BACKUP DATABASE '/data/bp11/DAMENG/dm.ini' FULL TO
> BACKUP_01 BACKUPSET '/data/bp11/BACKUP_01'" USE_AP=2
dmrman V8
BACKUP DATABASE '/data/bp11/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/data/bp11/BACKUP_01'
file dm.key not found, use default license!
Processing backupset /data/bp11/BACKUP_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.408
//还原数据库:
dmdba@DMDPC ~]$ dmrman CTLSTMT="RESTORE DATABASE '/data/bp12/DAMENG/dm.ini' FROM
> BACKUPSET '/data/bp11/BACKUP_01'" USE_AP=2
dmrman V8
RESTORE DATABASE '/data/bp12/DAMENG/dm.ini' FROM BACKUPSET '/data/bp11/BACKUP_01'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
restore successfully.
time used: 649.160(ms)
//更新数据库:
dmdba@DMDPC ~]$ dmrman CTLSTMT="RECOVER DATABASE '/data/bp12/DAMENG/dm.ini' UPDATE
> DB_MAGIC" USE_AP=2
dmrman V8
RECOVER DATABASE '/data/bp12/DAMENG/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
recover successfully!
time used: 00:00:01.123
[dmdba@DMDPC ~]$
//还原数据库:
[dmdba@DMDPC ~]$ dmrman CTLSTMT="RESTORE DATABASE '/data/bp13/DAMENG/dm.ini' FROM
> BACKUPSET '/data/bp11/BACKUP_01'" USE_AP=2
dmrman V8
RESTORE DATABASE '/data/bp13/DAMENG/dm.ini' FROM BACKUPSET '/data/bp11/BACKUP_01'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
restore successfully.
time used: 655.789(ms)
//更新数据库:
dmdba@DMDPC ~]$ dmrman CTLSTMT="RECOVER DATABASE '/data/bp13/DAMENG/dm.ini' UPDATE
> DB_MAGIC" USE_AP=2
dmrman V8
RECOVER DATABASE '/data/bp13/DAMENG/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
recover successfully!
time used: 00:00:01.135
[dmdba@DMDPC ~]$
– 备份 bp21
dmrman CTLSTMT="BACKUP DATABASE '/data/bp21/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/data/bp21/BACKUP_01'" USE_AP=2
– 还原到 bp22
dmrman CTLSTMT="RESTORE DATABASE '/data/bp22/DAMENG/dm.ini' FROM BACKUPSET '/data/bp21/BACKUP_01'" USE_AP=2
dmrman CTLSTMT="RECOVER DATABASE '/data/bp22/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
–还原到 bp23
dmrman CTLSTMT="RESTORE DATABASE '/data/bp23/DAMENG/dm.ini' FROM BACKUPSET '/data/bp21/BACKUP_01'" USE_AP=2
dmrman CTLSTMT="RECOVER DATABASE '/data/bp23/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
RAFT_1 组各实例(BP11、BP12、BP13)和 RAFT_2 组各实例(BP21、BP22、BP23)中 dm.ini 文件的配置方法完全相同。下面以 BP11 的 dm.ini 为例进行介绍。dm.ini 文件配置如下:
ARCH_INI = 1 #打开归档配置
ALTER_MODE_STATUS = 0 #不允许用户直接通过 SQL 语句修改服务器模式
修改 DMARCH.INI,配置 RAFT 归档与本地归档。RAFT_1 组配置如下,RAFT_2 组配 置可参考此步骤进行配置。 除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
当前实例为 BP11,需要向 BP12、BP13 同步数据,因此 RAFT 归档中的 ARCH_DEST 分 别配置为 BP12、BP13。 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 = /data/bp11/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0 表示无限制
当前实例为 BP12,系统配置完成后,可能在各种故障处理中,BP12 可能选为 Leader。 而原来的 Leader 会切换为 Follower。此时 BP12 需要向 BP11 和 BP13 同步数据,因此 RAFT 归档的 ARCH_DEST 分别配置为 BP11 和 BP13。
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 2 #多副本自身节点 ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/bp12/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0 表示无限制
[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
当前实例为 BP13,系统配置完成后,可能在各种故障处理中,BP13 可能选为组内 Leader。 而原来的 Leader 会切换为 Follower。此时 BP13 需要向 BP11 和 BP12 同步数据,因此 RAFT 归档的 ARCH_DEST 分别配置为 BP11 和 BP12。
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 3 #多副本自身节点 ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/bp13/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0 表示无限制
[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
全部修改完成后,RAFT_1 组中的三个 BP 即配置完成。
– bp21
[dmdba@DMDPC ~]$ cat /data/bp21/DAMENG/dmarch.ini
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 1 #多副本自身节点 ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/bp21/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0 表示无限制
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP22 #归档目标实例名
ARCH_DEST_ID = 2 #归档目标多副本节点 ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP23 #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID
– bp22
[dmdba@DMDPC ~]$ cat /data/bp22/DAMENG/dmarch.ini
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 2 #多副本自身节点 ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/bp22/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0 表示无限制
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP21 #归档目标实例名
ARCH_DEST_ID = 1 #归档目标多副本节点 ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP23 #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID
– bp23
[dmdba@DMDPC ~]$ cat /data/bp23/DAMENG/dmarch.ini
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 3 #多副本自身节点 ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/bp23/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0 表示无限制
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP21 #归档目标实例名
ARCH_DEST_ID = 1 #归档目标多副本节点 ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP22 #归档目标实例名
ARCH_DEST_ID = 2 #归档目标多副本节点 ID
[dmdba@DMDPC ~]$
//启动 SP。
dmserver /data/sp1/DAMENG/dm.ini dpc_mode=SP
//启动 BP。每个组三个 BP 的启动顺序没有要求
dmserver /data/bp11/DAMENG/dm.ini dpc_mode=BP MOUNT
dmserver /data/bp12/DAMENG/dm.ini dpc_mode=BP MOUNT
dmserver /data/bp13/DAMENG/dm.ini dpc_mode=BP MOUNT
dmserver /data/bp21/DAMENG/dm.ini dpc_mode=BP MOUNT
dmserver /data/bp22/DAMENG/dm.ini dpc_mode=BP MOUNT
dmserver /data/bp23/DAMENG/dm.ini dpc_mode=BP MOUNT
启动完成后,RAFT 组内的 BP 会自动选出主库,待主库选举完成后,整个 DMDPC 系统即可正常运行。 至此,DMDPC 集群搭建完毕。 MP、SP、BP 全部正常启动,且均处于 OPEN 状态,才是一个正常的 DMDPC 系统!
当 BP 处于下述情况时,表示无可用 BP,系统异常,报错“无效的系统状态”。 无可用 BP 的情况为:
1.BP 处于非 OPEN 状态;
2.BP 尚未成功启动;
3.BP 全部宕机;
4.BP 如果是多副本环境,确认是否所有 BP 组都已经选举出主库,并且主库也已切换为 Primary 模式和
Open 状态。
DMDPC 搭建完成后,用户只需要连接对外提供服务的 SP,即可获得完整的数据库服务。 只有出于监控目的进行 V$视图的查询,或出于维护需要时,才允许直连 MP 和 BP,否 则不允许再连接 MP 和 BP。切勿在 MP 和 BP 上执行大量 SQL 语句,否则可能会导致系统崩溃。
//查看dpc集群基本信息
[dmdba@DMDPC ~]$ disql sysdba/Dameng_123@localhost:5236
服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 4.905(ms)
disql V8
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
已用时间: 135.942(毫秒). 执行号:12583013.
SQL> select * from DPC_BP_GROUP;
行号 ID NAME DESCRIPTION RAFT_NUM RAFT_INFO INFO1 INFO2 INFO3
---------- ----------- ---- ----------- ----------- ---------- ----------- -------------------- ----------
1 0 BG_1 bp group1 2 0x01000200 0 NULL NULL
已用时间: 46.906(毫秒). 执行号:12583014.
SQL> SELECT SF_GET_SELF_EP_SEQNO();
行号 SF_GET_SELF_EP_SEQNO()
---------- ----------------------
1 3
已用时间: 5.494(毫秒). 执行号:12583015.
SQL> SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
行号 NAME
---------- ----
1 SP1
已用时间: 27.191(毫秒). 执行号:12583016.
SQL> SELECT NAME FROM V$INSTANCE;
行号 NAME
---------- ----
1 SP1
2 MP
3 BP21
4 BP11
已用时间: 18.589(毫秒). 执行号:12583017.
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 SP RAFT_SP1 1 NULL NULL NULL
已用时间: 45.051(毫秒). 执行号:12583018.
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 6001 5237 10.12.10.123 NORMAL 4 1
MP instance 10.12.10.123 74536 0 NULL
2 1 4097 BP11 BP 6002 5238 10.12.10.123 PRIMARY 4 1
BP instance 10.12.10.123 65536 0 NULL
3 1 4098 BP12 BP 6003 5239 10.12.10.123 STANDBY 4 0
BP instance 10.12.10.123 131072 0 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 6004 5240 10.12.10.123 STANDBY 4 0
BP instance 10.12.10.123 196608 0 NULL
5 2 4100 BP21 BP 6005 5241 10.12.10.123 PRIMARY 4 1
BP instance 10.12.10.123 65536 0 NULL
6 2 4101 BP22 BP 6006 5242 10.12.10.123 STANDBY 4 0
BP instance 10.12.10.123 131072 0 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 6007 5243 10.12.10.123 STANDBY 4 0
BP instance 10.12.10.123 196608 0 NULL
8 3 4103 SP1 SP 6000 5236 10.12.10.123 NORMAL 4 1
SP instance 10.12.10.123 NULL 0 NULL
8 rows got
已用时间: 39.135(毫秒). 执行号:12583019.
SQL>
退出副本架构的 DMDPC 需要按正确顺序使用指定命令退出各节点。
文章
阅读量
获赞