注册
命令行部署 DMDPC
技术分享/ 文章详情 /

命令行部署 DMDPC

赵国伟 2025/06/06 208 0 0

一、资源规划

     DMDPC 集群规划部署 1 个 SP,2 个 BP 和 1 个 MP。MP 采用单机模式,BP 采 用多副本模式(每个 BP 配置成 3 副本)。
1748936866073.png

二、初始化数据库实例

初始化 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 文件

     为 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

//启动 MP

dmserver /data/mp/DAMENG/dm.ini dpc_mode=MP 

五、将 MP、SP 和 BP 加入集群

     增加 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. 

七、配置 BP11

1. 配置 BP11 的 dm.ini

ARCH_INI = 1  #打开归档配置 

2. 配置 BP11 的本地归档 dmarch.ini。

此处先只配本地归档,避免提前发起 RAFT 选举

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL  #本地归档类型 
ARCH_DEST = /data/bp11/DAMENG/arch  #本地归档文件路径 
ARCH_FILE_SIZE = 128  #本地单个归档文件最大值,单位 MB 
ARCH_SPACE_LIMIT= 1024  #本地归档文件总大小,0 表示无限制 

3. 正常启动 BP11 到 Open 状态

dmserver /data/bp11/DAMENG/dm.ini dpc_mode=bp 

八、准备 BP RAFT 组内数据

     RAFT_1 和 RAFT_2 组内的 BP 数据准备方式完全相同,只是路径不同,这里对组 RAFT_1 的数据准备步骤进行说明,RAFT_2 组参考这个步骤执行即可。注意,RAFT_2 组和 RAFT_1 组要各自按照此小节介绍的方式准备数据,RAFT_2 组不能直接使用 RAFT_1 组的备份集执 行还原恢复。

1. 退出 BP11 并进行脱机备份

首先,退出 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

2. 将 BP11 的备份文件脱机还原到 BP12

//还原数据库:

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)
  • 因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤

//更新数据库:

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 ~]$ 

3. 将 BP11 的备份文件脱机还原到 BP13

//还原数据库:

[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)
  • 因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤

//更新数据库:

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 ~]$ 

4.RAFT_2 组内的 BP 数据准备

– 备份 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 

九、配置 BP dm.ini

     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 语句修改服务器模式 

十、配置 BP RAFT 归档文件

     修改 DMARCH.INI,配置 RAFT 归档与本地归档。RAFT_1 组配置如下,RAFT_2 组配 置可参考此步骤进行配置。 除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。

1. 配置 BP11 归档文件 dmarch.ini

     当前实例为 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 表示无限制 

2.配置 BP12 归档配置文件 DMARCH.INI

     当前实例为 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 

3.配置 BP13 归档配置文件 DMARCH.INI

     当前实例为 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 即配置完成。

4.RAFT_2 组中的三个 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 和 RAFT 组内所有 BP

//启动 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 状态。

十二、连接 SP

     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

     退出副本架构的 DMDPC 需要按正确顺序使用指定命令退出各节点。

  • 第一步 使用 exit 命令退出所有 SP;
  • 第二步 使用 exit all 命令依次退出每个 RAFT 组。在 BP 的每个 RAFT 组内中任一有效节点输入 exit all 命令或者对其发出信号 SIGUSR1(如 kill -10)即可对整个 RAFT 组执行协同退出,由有效 Leader 协同其余有效节点正常退出,无效节点不会参与协同退出。如果执行 exit all 命令的是无效节点,则会转为只在此节点进行退出(exit),多数情况下,无效节 点的退出会由于无法推进 C_LSN 强制 HALT;
  • 第三步 退出未参与 exit all 命令的 BP。使用 exit 命令依次退出所有剩余的无效 BP;
  • 第四步 使用 exit 命令退出 MP。 如果没有按正常顺序退出,可能会导致剩下的机器直接宕机。此时,只能对其 他的机器采用强杀。这种服务器异常退出的情况,当再次重启的时候,服务器 需要做大量的 REDO 日志,因此重启的时间会稍长一些,其它没有影响。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服