一个最小的 DMDPC 集群包含一个 BP、一个 SP 和一个 MP。可以在部署完毕后随时增添新的 BP、SP 节点。至少需要两台 BP 才方便看出子任务的各种计划形态和调度。
容错域:多个 MP、BP 节点在同一个物理区域内的集合,也就是机房、城市、地区等,一个物理区域发生灾难故障,其他区域进行接管。
BS模式:属于BP节点一种启动模式,常规BP模式仅作为后台数据存储节点,不可以进行数据交互。BS模式同时具有BP和SP的功能,如果查询或修改的数据都在直连的 BP 本地,则类似于单节点,执行时无网络交互的代价。
dminit path=/dmdata/data/dpc_data/sp1 instance_name=SP1 PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5236 ap_port_num=6000 dpc_mode=SP
dminit path=/dmdata/data/dpc_data/mp1 instance_name=MP PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5240 ap_port_num=6001 dpc_mode=MP
dminit path=/dmdata/data/dpc_data/mp2 instance_name=MP PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5241 ap_port_num=6002 dpc_mode=MP
dminit path=/dmdata/data/dpc_data/mp3 instance_name=MP PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5242 ap_port_num=6003 dpc_mode=MP
dminit path=/dmdata/data/dpc_data/bp1 instance_name=BP1 PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5250 ap_port_num=6004 dpc_mode=BP
dminit path=/dmdata/data/dpc_data/bp11 instance_name=BP11 PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5251 ap_port_num=6005 dpc_mode=BP
dminit path=/dmdata/data/dpc_data/bp12 instance_name=BP12 PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5252 ap_port_num=6006 dpc_mode=BP
dminit path=/dmdata/data/dpc_data/bp2 instance_name=BP2 PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5260 ap_port_num=6007 dpc_mode=BP
dminit path=/dmdata/data/dpc_data/bp21 instance_name=BP21 PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5261 ap_port_num=6008 dpc_mode=BP
dminit path=/dmdata/data/dpc_data/bp22 instance_name=BP22 PAGE_SIZE=32 EXTENT_SIZE=32 port_num=5262 ap_port_num=6009 dpc_mode=BP[MP1]
mp_host = 192.168.126.128
mp_port = 9001 #与MP、BP和SP上的ap_port_num不冲突的端口号
[MP2]
mp_host = 192.168.126.128
mp_port = 9002 #与MP、BP和SP上的ap_port_num不冲突的端口号
[MP3]
mp_host = 192.168.126.128
mp_port = 9003 #与MP、BP和SP上的ap_port_num不冲突的端口号[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/data/dpc_data/mp1/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0表示无限制打开 MP1 归档配置。(后面MP2和MP3也要如此配置)vi dm.ini
ARCH_INI = 1 #打开归档配置
ALTER_MODE_STATUS = 0 #不允许用户直接通过SQL语句修改服务器模式dmserver /dmdata/data/dpc_data/mp1/DAMENG/dm.ini dpc_mode=MPdisql SYSDBA/SYSDBA@LOCALHOST:5240//增加MP节点
//注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT'
SP_CREATE_DPC_INSTANCE('MP_RAFT','MP1','MP',6001,5240, '192.168.126.128', '192.168.126.128','STANDBY',0,'MP instance');
SP_CREATE_DPC_INSTANCE('MP_RAFT','MP2','MP',6002,5241, '192.168.126.128', '192.168.126.128','STANDBY',0,'MP instance');
SP_CREATE_DPC_INSTANCE('MP_RAFT','MP3','MP',6003,5242, '192.168.126.128', '192.168.126.128','STANDBY',0,'MP instance');
//增加两个BP节点:BP1和BP2
//注册RAFT组,名为RAFT_1
SP_CREATE_DPC_RAFT('BP','RAFT_1');
//在RAFT_1组内注册BP实例BP1、BP11、BP12
//所有实例均以STANDBY模式、INVALID状态注册进MP,实例启动后,在RAFT组内选举出有效主库后,会自动更新MP中的模式、状态信息。
SP_CREATE_DPC_INSTANCE('RAFT_1','BP1','BP',6004,5250, '192.168.126.128', '192.168.126.128','STANDBY',0,'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_1','BP11','BP',6005,5251, '192.168.126.128', '192.168.126.128','STANDBY',0,'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_1','BP12','BP',6006,5252, '192.168.126.128', '192.168.126.128','STANDBY',0,'BP instance');
//注册RAFT_2
SP_CREATE_DPC_RAFT('BP', 'RAFT_2');
//在RAFT_2内注册BP实例BP2、BP21、BP22
SP_CREATE_DPC_INSTANCE('RAFT_2','BP2','BP',6007,5260, '192.168.126.128', '192.168.126.128', 'STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_2','BP21','BP',6007,5260, '192.168.126.128', '192.168.126.128', 'STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_2','BP22','BP',6007,5260, '192.168.126.128', '192.168.126.128', '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节点:SP1
//增加SP,也要注册RAFT组
SP_CREATE_DPC_RAFT('SP', 'RAFT_SP1');
//在RAFT_SP1内注册SP实例SP1
SP_CREATE_DPC_INSTANCE('RAFT_SP1','SP1','SP',6000,5236, '192.168.126.128', '192.168.126.128','NORMAL', 2, 'SP instance');
//注册一个容错域:FDOM_1 (可选)
SP_CREATE_FAULT_DOMAIN ('FDOM_1','beijing1');
SP_CREATE_FAULT_DOMAIN ('FDOM_2','beijing2');
SP_CREATE_FAULT_DOMAIN ('FDOM_3','shanghai1');
//往容错域中添加实例
SP_FAULT_DOMAIN_MV_INST('FDOM_1','MP1');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP1');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP2');
SP_FAULT_DOMAIN_MV_INST('FDOM_2','MP2');
SP_FAULT_DOMAIN_MV_INST('FDOM_2','BP11');
SP_FAULT_DOMAIN_MV_INST('FDOM_2','BP21');
SP_FAULT_DOMAIN_MV_INST('FDOM_3','MP3');
SP_FAULT_DOMAIN_MV_INST('FDOM_3','BP12');
SP_FAULT_DOMAIN_MV_INST('FDOM_3','BP22');在MP节点上检查上一步骤的注册是否成功。能查到相关信息表示注册成功。
select * from DPC_BP_GROUP; -- 记录系统中注册的每个 BP 组信息
select * from DPC_BP_RAFT; -- 记录系统中注册的每个 RAFT 组信息。
select * from DPC_INSTANCE; -- 记录系统中所有实例对象信息。dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/dpc_data/mp1/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dmdata/data/dpc_data/mp1/BACKUP_01'" USE_AP=2//还原到MP1
dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/dpc_data/mp2/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/data/dpc_data/mp1/DAMENG/BACKUP_01'" USE_AP=2
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/dpc_data/mp2/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
//还原到MP2
dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/dpc_data/mp3/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/data/dpc_data/mp1/DAMENG/BACKUP_01'" USE_AP=2
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/dpc_data/mp3/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 1 #多副本自身节点ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/data/dpc_data/mp1/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0表示无限制
[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 #归档目标多副本节点IDnohup dmserver /dmdata/data/dpc_data/mp1/DAMENG/dm.ini dpc_mode=MP MOUNT &
nohup dmserver /dmdata/data/dpc_data/mp2/DAMENG/dm.ini dpc_mode=MP MOUNT &
nohup dmserver /dmdata/data/dpc_data/mp3/DAMENG/dm.ini dpc_mode=MP MOUNT &启动完成后,RAFT 组内的 MP 会自动选出主库,待主库选举完成后,整个 MP 系统即可正常运行。
ARCH_INI = 1 #打开归档配置
ALTER_MODE_STATUS = 0 #不允许用户直接通过SQL语句修改服务器模式配置 BP11 的本地归档 dmarch.ini。此处先只配本地归档,避免提前发起 RAFT 选举
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/data/dpc_data/bp1/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0表示无限制dmserver /dmdata/data/dpc_data/bp1/DAMENG/dm.ini dpc_mode=bpdmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/dpc_data/bp1/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dmdata/data/dpc_data/bp1/DAMENG/BACKUP_01'" USE_AP=2//还原数据库:
dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/dpc_data/bp11/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/data/dpc_data/bp1/DAMENG/BACKUP_01'" USE_AP=2
//因为脱机备份没有产生任何REDO日志,所以此处省略恢复数据库的操作步骤
//更新数据库:
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/dpc_data/bp11/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
//还原数据库:
dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/dpc_data/bp12/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/data/dpc_data/bp1/DAMENG/BACKUP_01'" USE_AP=2
//因为脱机备份没有产生任何REDO日志,所以此处省略恢复数据库的操作步骤
//更新数据库:
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/dpc_data/bp12/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2配置BP1的RAFT归档dmarch.ini。BP12、BP13和RAFT_2组配置可参考此步骤进行配置。只是需要对路径、实例名等进行区分。
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 1 #多副本自身节点ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/data/dpc_data/bp1/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #本地单个归档文件最大值,单位MB
ARCH_SPACE_LIMIT = 1024 #本地归档文件总大小,0表示无限制
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT #RAFT归档
ARCH_DEST = BP11 #归档目标实例名
ARCH_DEST_ID = 2 #归档目标多副本节点ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT #RAFT归档
ARCH_DEST = BP12 #归档目标 实例名
ARCH_DEST_ID = 3 #归档目标多副本节点IDnohup dmserver /dmdata/data/dpc_data/sp1/DAMENG/dm.ini dpc_mode=SP &
nohup dmserver /dmdata/data/dpc_data/bp1/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp11/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp12/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp2/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp21/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp22/DAMENG/dm.ini dpc_mode=BP MOUNT &启动完成后,RAFT 组内的 BP 会自动选出主库,待主库选举完成后,整个 DMDPC 系统即可正常运行。
使用 exit 命令退出 DMDPC 需要按照正确的顺序有序进行。
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/mp1/DAMENG/dm.ini -dpc_mode MP -p MP1
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/mp2/DAMENG/dm.ini -dpc_mode MP -p MP2
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/mp3/DAMENG/dm.ini -dpc_mode MP -p MP3
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/sp1/DAMENG/dm.ini -dpc_mode SP -p SP1
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp1/DAMENG/dm.ini -dpc_mode BP -p BP1
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp11/DAMENG/dm.ini -dpc_mode BP -p BP11
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp12/DAMENG/dm.ini -dpc_mode BP -p BP12
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp2/DAMENG/dm.ini -dpc_mode BP -p BP2
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp21/DAMENG/dm.ini -dpc_mode BP -p BP21
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp22/DAMENG/dm.ini -dpc_mode BP -p BP22如果没有按正常顺序退出,可能会导致剩下的机器直接宕机。此时,只能对其他的机器采用强杀。这种服务器异常退出的情况,当再次重启的时候,服务器需要做大量的REDO日志,因此重启的时间会稍长一些,其它没有影响。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




