DMDPC 提供具有分布式特性的可扩展、高性能数据库解决方案,以满足具有高并发、大规模数据存储、业务快速扩张等特征的用户业务对数据库的要求。
本章节借助命令行工具部署 DPC 集群。
以客户端的查询 SELECT 操作为例,流程如下:
注:每一个多副本系统中只有一个作为主节点,其余节点均作为备份节点。
本章节是在同一台服务器(CentOS7)上搭建。
RAFT 组名 | 角色 | 实例名 | PORT_NUM | AP_PORT_NUM | 路径 | IP |
---|---|---|---|---|---|---|
RAFT_SP1 | SP | SP | 5236 | 4236 | /dm8/data/dmdpc/sp | 192.168.182.132 |
RAFT_1 | BP | BP1 | 5237 | 4237 | /dm8/data/dmdpc/bp1 | 192.168.182.132 |
RAFT_2 | BP | BP2 | 5247 | 4247 | /dm8/data/dmdpc/bp2 | 192.168.182.132 |
RAFT_3 | BP | BP3 | 5257 | 4257 | /dm8/data/dmdpc/bp3 | 192.168.182.132 |
缺省为 NULL 或者 MP_RAFT | MP | MP | 5238 | 4238 | /dm8/data/dmdpc/mp | 192.168.182.132 |
需要先安装数据库。详细安装步骤可以参考:linux 下如何安装达梦数据库。
./dminit path=/dm8/data/dmdpc/sp instance_name=SP port_num=5236 ap_port_num=4236 dpc_mode=SP
./dminit path=/dm8/data/dmdpc/bp1 instance_name=BP1 port_num=5237 ap_port_num=4237 dpc_mode=BP
./dminit path=/dm8/data/dmdpc/bp2 instance_name=BP2 port_num=5247 ap_port_num=4247 dpc_mode=BP
./dminit path=/dm8/data/dmdpc/bp3 instance_name=BP3 port_num=5257 ap_port_num=4257 dpc_mode=BP
./dminit path=/dm8/data/dmdpc/mp instance_name=MP port_num=5238 ap_port_num=4238 dpc_mode=MP
为 SP、BP 和 MP 所有实例配置 MP.INI 文件。
cd /dm8/data/dmdpc/sp/DAMENG/
cd /dm8/data/dmdpc/bp1/DAMENG/
cd /dm8/data/dmdpc/bp2/DAMENG/
cd /dm8/data/dmdpc/bp3/DAMENG/
cd /dm8/data/dmdpc/mp/DAMENG/
vi mp.ini
mp_host = 192.168.182.132 #MP所在ip
mp_port = 9000 #与MP、BP和SP上的ap_port_num不冲突的端口号
DMDPC 运行过程中,MP 需要始终处于开启状态。
cd /dm8/bin
./dmserver /dm8/data/dmdpc/mp/DAMENG/dm.ini dpc_mode=MP
//搭建DMDPC过程中加入MP、SP和BP,必须登录MP进行操作
cd /dm8/bin
./disql SYSDBA/SYSDBA@192.168.182.132:5238
//注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT'
SP_CREATE_DPC_INSTANCE('MP_RAFT','MP','MP',4238,5238, '192.168.182.132', '192.168.182.132','NORMAL',1,'MP instance');
//注册RAFT组,名为RAFT_1
SP_CREATE_DPC_RAFT('BP','RAFT_1');
//在RAFT_1组内注册BP实例BP1
SP_CREATE_DPC_INSTANCE('RAFT_1','BP1','BP',4237,5237, '192.168.182.132', '192.168.182.132','NORMAL',1,'BP instance');
//注册RAFT_2
SP_CREATE_DPC_RAFT('BP', 'RAFT_2');
//在RAFT_2内注册BP实例BP2
SP_CREATE_DPC_INSTANCE('RAFT_2','BP2','BP',4247,5247, '192.168.182.132', '192.168.182.132', 'NORMAL', 1, 'BP instance');
//注册RAFT_3
SP_CREATE_DPC_RAFT('BP', 'RAFT_3');
//在RAFT_3内注册BP实例BP3
SP_CREATE_DPC_INSTANCE('RAFT_3','BP3','BP',4257,5257, '192.168.182.132', '192.168.182.132', 'NORMAL', 1, 'BP instance');
//注册一个BP组,名为BG_1
SP_CREATE_DPC_BP_GROUP('BG_1', 'bp group1');
//往BP组中添加RAFT组
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_1');
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_2');
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_3');
//增加SP,也要注册RAFT组
SP_CREATE_DPC_RAFT('SP', 'RAFT_SP1');
//在RAFT_SP1内注册SP实例SP1
SP_CREATE_DPC_INSTANCE('RAFT_SP1','SP','SP',4236,5236, '192.168.182.132', '192.168.182.132','NORMAL', 2, 'SP instance');
注:将 SP 和 BP 节点加入 DMDPC 集群中的步骤必须在 SP、BP 第一次启动前完成!
//注册一个容错域:FDOM_1 (可选)
SP_CREATE_FAULT_DOMAIN ('FDOM_1','shanghai');
//往容错域中添加实例
SP_FAULT_DOMAIN_MV_INST('FDOM_1','MP');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP1');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP2');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP3');
查询系统表,检查上一步骤的注册是否成功。能查到相关信息表示注册成功。
SQL> select * from DPC_BP_GROUP;
行号 ID NAME DESCRIPTION RAFT_NUM RAFT_INFO INFO1 INFO2 INFO3
---------- ----------- ---- ----------- ----------- -------------- ----------- -------------------- ----------
1 0 BG_1 bp group1 3 0x010002000300 0 NULL NULL
已用时间: 1.501(毫秒). 执行号:65614.
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 BP RAFT_3 1 NULL NULL NULL
5 4 -1 SP RAFT_SP1 1 NULL NULL NULL
已用时间: 1.456(毫秒). 执行号:65615.
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 4238 5238 192.168.182.132 NORMAL 4 1 MP instance 192.168.182.132 NULL NULL
NULL
2 1 4097 BP1 BP 4237 5237 192.168.182.132 NORMAL 6 1 BP instance 192.168.182.132 NULL NULL
NULL
3 2 4098 BP2 BP 4247 5247 192.168.182.132 NORMAL 6 1 BP instance 192.168.182.132 NULL NULL
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 3 4099 BP3 BP 4257 5257 192.168.182.132 NORMAL 6 1 BP instance 192.168.182.132 NULL NULL
NULL
5 4 4100 SP SP 4236 5236 192.168.182.132 NORMAL 6 2 SP instance 192.168.182.132 NULL NULL
NULL
已用时间: 1.605(毫秒). 执行号:65616.
启动 SP 和 BP 没有先后之分;BP节点是的启动模式是BP还是BS,在dpc_mode后写BS或BP即可。
cd /dm8/bin
./dmserver /dm8/data/dmdpc/bp1/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc/bp2/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc/bp3/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc/sp/DAMENG/dm.ini dpc_mode=SP
DMDPC 集群搭建完毕。
当BP处于下述情况时,表示无可用BP,系统异常,报错“无效的系统状态”。无可用BP的情况为:
1.BP处于非OPEN状态;
2.BP尚未成功启动;
3.BP宕机。
cd /dm8/bin
./disql SYSDBA/SYSDBA@192.168.182.132:5236
SQL> select * from v$instance;
行号 NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION DB_VERSION START_TIME STATUS$ MODE$ OGUID DSC_SEQNO DSC_ROLE
---------- ---- ------------- --------------- --------------------- -------------------------- ------------------- ------------------- ------- ------ ----------- ----------- --------
BUILD_VERSION BUILD_TIME
----------------------------------- --------------------
1 SP SP 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:42:10 OPEN NORMAL 783216211 0 NULL
1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02
2 MP MP 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:04:09 OPEN NORMAL 0 0 NULL
1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02
3 BP1 BP1 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:35:23 OPEN NORMAL 0 0 NULL
1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02
行号 NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION DB_VERSION START_TIME STATUS$ MODE$ OGUID DSC_SEQNO DSC_ROLE
---------- ---- ------------- --------------- --------------------- -------------------------- ------------------- ------------------- ------- ------ ----------- ----------- --------
BUILD_VERSION BUILD_TIME
----------------------------------- --------------------
4 BP2 BP2 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:36:07 OPEN NORMAL 0 0 NULL
1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02
5 BP3 BP3 1 localhost.localdomain DM Database Server x64 V8 DB Version: 0x7000c 2024-04-09 01:55:08 OPEN NORMAL 0 0 NULL
1-3-62-2023.11.09-208042-20067-ENT Nov 16 2023 14:27:02
已用时间: 15.396(毫秒). 执行号:16777220.
MP、SP、BP 全部正常启动,且均处于 OPEN 状态,此时 DMDPC 集群搭建完毕。
查看当前节点的 DPC_MODE 模式信息。0:无;1:MP;2:BP;3:SP;4:BS
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
已用时间: 132.850(毫秒). 执行号:16777221.
退出 SP->退出 BP->退出 MP(必须按照顺序 exit 退出,否则可能引起宕机)。
主副本间要同步数据,因此多副本实例都需要开启归档。
本章节是在同一台服务器(CentOS7)上搭建。
需要先安装数据库。详细安装步骤可以参考:linux 下如何安装达梦数据库。
cd /dm8/bin
./dminit path=/dm8/data/dmdpc_bp/sp instance_name=SP port_num=6000 ap_port_num=7000 dpc_mode=SP
./dminit path=/dm8/data/dmdpc_bp/mp instance_name=MP port_num=6001 ap_port_num=7001 dpc_mode=MP
//初始化 RAFT_1 组中的 BP 实例
./dminit path=/dm8/data/dmdpc_bp/bp11 instance_name=BP11 port_num=6011 ap_port_num=7011 dpc_mode=BP
./dminit path=/dm8/data/dmdpc_bp/bp12 instance_name=BP12 port_num=6012 ap_port_num=7012 dpc_mode=BP
./dminit path=/dm8/data/dmdpc_bp/bp13 instance_name=BP13 port_num=6013 ap_port_num=7013 dpc_mode=BP
//初始化 RAFT_2 组中的 BP 实例
./dminit path=/dm8/data/dmdpc_bp/bp21 instance_name=BP21 port_num=6021 ap_port_num=7021 dpc_mode=BP
./dminit path=/dm8/data/dmdpc_bp/bp22 instance_name=BP22 port_num=6022 ap_port_num=7022 dpc_mode=BP
./dminit path=/dm8/data/dmdpc_bp/bp23 instance_name=BP23 port_num=6023 ap_port_num=7023 dpc_mode=BP
//初始化 RAFT_3 组中的 BP 实例
./dminit path=/dm8/data/dmdpc_bp/bp31 instance_name=BP31 port_num=6031 ap_port_num=7031 dpc_mode=BP
./dminit path=/dm8/data/dmdpc_bp/bp32 instance_name=BP32 port_num=6032 ap_port_num=7032 dpc_mode=BP
./dminit path=/dm8/data/dmdpc_bp/bp33 instance_name=BP33 port_num=6033 ap_port_num=7033 dpc_mode=BP
为 SP、BP 和 MP 所有实例配置 MP.INI 文件。
cd /dm8/data/dmdpc_bp/sp/DAMENG/
cd /dm8/data/dmdpc_bp/bp11/DAMENG/
cd /dm8/data/dmdpc_bp/bp12/DAMENG/
cd /dm8/data/dmdpc_bp/bp13/DAMENG/
cd /dm8/data/dmdpc_bp/bp21/DAMENG/
cd /dm8/data/dmdpc_bp/bp22/DAMENG/
cd /dm8/data/dmdpc_bp/bp23/DAMENG/
cd /dm8/data/dmdpc_bp/bp31/DAMENG/
cd /dm8/data/dmdpc_bp/bp32/DAMENG/
cd /dm8/data/dmdpc_bp/bp33/DAMENG/
cd /dm8/data/dmdpc_bp/mp/DAMENG/
vi mp.ini
mp_host = 192.168.182.132 #MP所在ip
mp_port = 9001 #与MP、BP和SP上的ap_port_num不冲突的端口号
DMDPC 运行过程中,MP 需要始终处于开启状态。
cd /dm8/bin
./dmserver /dm8/data/dmdpc_bp/mp/DAMENG/dm.ini dpc_mode=MP
//搭建DMDPC过程中加入MP、SP和BP,必须登录MP进行操作
cd /dm8/bin
./disql SYSDBA/SYSDBA@192.168.182.132:6001
//注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT'
SP_CREATE_DPC_INSTANCE(NULL,'MP','MP',7001,6001, '192.168.182.132', '192.168.182.132','NORMAL',1,'MP instance');
//注册RAFT组,名为RAFT_1
SP_CREATE_DPC_RAFT('BP', 'RAFT_1');
//在RAFT_1组内注册BP实例BP11、BP12、BP13
//所有实例均以STANDBY模式、INVALID状态注册进MP,实例启动后,在RAFT组内选举出有效主库后,会自动更新MP中的模式、状态信息。
SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP11', 'BP', 7011, 6011, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP12', 'BP', 7012, 6012, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP13', 'BP', 7013, 6013, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance');
//注册RAFT组,名为RAFT_2
SP_CREATE_DPC_RAFT('BP', 'RAFT_2');
//在RAFT_2内注册BP实例BP21、BP22、BP23
//所有实例均以STANDBY模式、INVALID状态注册进MP,实例启动后,在RAFT组内选举出有效主库后,会自动更新MP中的模式、状态信息。
SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP21', 'BP', 7021, 6021, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP22', 'BP', 7022, 6022, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP23', 'BP', 7023, 6023, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance');
//注册RAFT组,名为RAFT_3
SP_CREATE_DPC_RAFT('BP', 'RAFT_3');
//在RAFT_2内注册BP实例BP31、BP32、BP33
//所有实例均以STANDBY模式、INVALID状态注册进MP,实例启动后,在RAFT组内选举出有效主库后,会自动更新MP中的模式、状态信息。
SP_CREATE_DPC_INSTANCE('RAFT_3', 'BP31', 'BP', 7031, 6031, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_3', 'BP32', 'BP', 7032, 6032, '192.168.182.132', '192.168.182.132','STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_3', 'BP33', 'BP', 7033, 6033, '192.168.182.132', '192.168.182.132','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', 'RAFT_1');
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_2');
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_3');
//增加SP,也要注册RAFT组
SP_CREATE_DPC_RAFT('SP', 'RAFT_SP1');
//在RAFT_SP1内注册SP实例SP
SP_CREATE_DPC_INSTANCE('RAFT_SP1', 'SP', 'SP', 7000, 6000, '192.168.182.132', '192.168.182.132','NORMAL', 2, 'SP instance');
注:将SP和BP节点加入DMDPC集群中的步骤必须在SP、BP第一次启动前完成
SP_CREATE_FAULT_DOMAIN ('FDOM_1', 'shanghai_1');
SP_CREATE_FAULT_DOMAIN ('FDOM_2', 'shanghai_2');
SP_CREATE_FAULT_DOMAIN ('FDOM_3', 'shanghai_3');
//往容错域中添加实例
SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'MP');
SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP11');
SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP12');
SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP13');
SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP21');
SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP22');
SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP23');
SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP31');
SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP32');
SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP33');
查询系统表,检查上一步骤的注册是否成功。能查到相关信息表示注册成功。
select * from DPC_BP_GROUP;
行号 ID NAME DESCRIPTION RAFT_NUM RAFT_INFO INFO1 INFO2 INFO3
---------- ----------- ---- ----------- ----------- -------------- ----------- -------------------- ----------
1 0 BG_1 bp group1 3 0x010002000300 0 NULL NULL
已用时间: 1.415(毫秒). 执行号:65616.
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 BP RAFT_3 1 NULL NULL NULL
5 4 -1 SP RAFT_SP1 1 NULL NULL NULL
已用时间: 1.118(毫秒). 执行号:65617.
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 7001 6001 192.168.182.132 NORMAL 4 1 MP instance 192.168.182.132 NULL NULL
NULL
2 1 4097 BP11 BP 7011 6011 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
NULL
3 1 4098 BP12 BP 7012 6012 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
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 7013 6013 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
NULL
5 2 4100 BP21 BP 7021 6021 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
NULL
6 2 4101 BP22 BP 7022 6022 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
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 7023 6023 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
NULL
8 3 4103 BP31 BP 7031 6031 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
NULL
9 3 4104 BP32 BP 7032 6032 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
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
----------
10 3 4105 BP33 BP 7033 6033 192.168.182.132 STANDBY 6 0 BP instance 192.168.182.132 NULL NULL
NULL
11 4 4106 SP SP 7000 6000 192.168.182.132 NORMAL 6 2 SP instance 192.168.182.132 NULL NULL
NULL
11 rows got
已用时间: 1.105(毫秒). 执行号:65618.
开启多副本实例的归档并同步。
#修改 BP11 的 dm.ini中的以下参数
ARCH_INI = 1 #打开归档配置
cd /dm8/data/dmdpc_bp/bp11/DAMENG
vi dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/dmdpc_bp/bp11/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
cd /dm8/bin
./dmserver /dm8/data/dmdpc_bp/bp11/DAMENG/dm.ini dpc_mode=BP
退出BP11
对 BP11 进行脱机备份
cd /dm8/bin
./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/dmdpc_bp/bp11/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dm8/data/dmdpc_bp/bp11/DAMENG/bak/BACKUP_01'" USE_AP=2
//还原数据库:
cd /dm8/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp12/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp11/DAMENG/bak/BACKUP_01'" USE_AP=2
//因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤
//更新数据库:
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp12/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
//还原数据库:
cd /dm8/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp13/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp11/DAMENG/bak/BACKUP_01'" USE_AP=2
//因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤
//更新数据库:
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp13/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
开启多副本实例的归档并同步。
ARCH_INI = 1 #打开归档配置
cd /dm8/data/dmdpc_bp/bp21/DAMENG
vi dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/dmdpc_bp/bp21/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
cd /dm8/bin
./dmserver /dm8/data/dmdpc_bp/bp21/DAMENG/dm.ini dpc_mode=BP
退出 BP21
对 BP21 进行脱机备份
cd /dm8/bin
./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/dmdpc_bp/bp21/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dm8/data/dmdpc_bp/bp21/DAMENG/bak/BACKUP_01'" USE_AP=2
//还原数据库:
cd /dm8/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp22/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp21/DAMENG/bak/BACKUP_01'" USE_AP=2
//因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤
//更新数据库:
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp22/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
//还原数据库:
cd /dm8/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp23/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp21/DAMENG/bak/BACKUP_01'" USE_AP=2
//因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤
//更新数据库:
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp23/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
开启多副本实例的归档并同步。
ARCH_INI = 1 #打开归档配置
cd /dm8/data/dmdpc_bp/bp31/DAMENG
vi dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/dmdpc_bp/bp31/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
cd /dm8/bin
./dmserver /dm8/data/dmdpc_bp/bp31/DAMENG/dm.ini dpc_mode=BP
退出 BP31
对 BP31 进行脱机备份
cd /dm8/bin
./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/dmdpc_bp/bp31/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dm8/data/dmdpc_bp/bp31/DAMENG/bak/BACKUP_01'" USE_AP=2
//还原数据库:
cd /dm8/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp32/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp31/DAMENG/bak/BACKUP_01'" USE_AP=2
//因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤
//更新数据库:
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp32/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
//还原数据库:
cd /dm8/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/dmdpc_bp/bp33/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/dmdpc_bp/bp31/DAMENG/bak/BACKUP_01'" USE_AP=2
//因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤
//更新数据库:
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/dmdpc_bp/bp33/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
RAFT_1、RAFT_2、RAFT_3 的 BP 全部都需要。
ARCH_INI = 1 #打开归档配置
ALTER_MODE_STATUS = 0 #不允许用户直接通过SQL语句修改服务器模式
修改 dmarch.ini,配置 RAFT 归档与本地归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
cd /dm8/data/dmdpc_bp/bp11/DAMENG
vi 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 = /dm8/data/dmdpc_bp/bp11/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
cd /dm8/data/dmdpc_bp/bp12/DAMENG
vi dmarch.ini
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 = BP11 #归档目标实例名
ARCH_DEST_ID = 1 #归档目标多副本节点 ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP13 #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/dmdpc_bp/bp12/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
cd /dm8/data/dmdpc_bp/bp13/DAMENG
vi dmarch.ini
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 2000 #选举超时时间
RAFT_SELF_ID = 3 #多副本自身节点 ID
[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
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/dmdpc_bp/bp13/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 0 #本地归档文件总大小,0表示无限制
全部修改完成后, RAFT_1 组中的三个 BP 即配置完成。RAFT_2 和 RAFT_3 组内的实例按上面同样配置,仅需要对路径、实例名等进行区分。
启动 SP 和 BP 没有先后之分,一般在BP启动完毕后再启动SP。
cd /dm8/bin
./dmserver /dm8/data/dmdpc_bp/bp11/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/bp12/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/bp13/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/bp21/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/bp22/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/bp23/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/bp31/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/bp32/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/bp33/DAMENG/dm.ini dpc_mode=BP
./dmserver /dm8/data/dmdpc_bp/sp/DAMENG/dm.ini dpc_mode=SP
启动完成后,RAFT 组内的 BP 会自动选出主库,待主库选举完成后,整个 DMDPC 系统即可正常运行。
cd /dm8/bin
./disql SYSDBA/SYSDBA@192.168.182.132:6000
select * from dpc_instance;
MP、SP、BP 全部正常启动,且均处于 OPEN 状态,此时 DMDPC 集群搭建完毕。
退出副本架构的 DMDPC 需要按正确顺序使用指定命令退出各节点。
exit
命令退出所有 SP;exit all
命令依次退出每个 RAFT 组。exit all
命令或者对其发出信号 SIGUSR1(如 kill -10
)即可对整个 RAFT 组执行协同退出,由有效 Leader 协同其余有效节点正常退出,无效节点不会参与协同退出;exit all
命令的是无效节点,则会转为只在此节点进行退出(exit),多数情况下,无效节点的退出会由于无法推进 C_LSN 强制 HALT;exit all
命令的 BP。使用 exit
命令依次退出所有剩余的无效 BP;exit
命令退出 MP。文章
阅读量
获赞