DMDPC
1 简介
达梦分布计算集群英文全称 DM Distributed Processing Cluster,简称 DMDPC。
DMDPC 是基于达梦数据库管理系统研发的一款同时支持在线分析处理和在线事务处理的新型分布式数据库系统。它既具备传统单机数据库的绝大部分功能,又提供了分布式计算集群才拥有的高可用、高扩展、高性能、高吞吐量和对用户透明等高级特性。
DMDPC 关注和解决的是大数据、计算与存储分离、高可用、支持全部的 SQL 标准、拥有完整的事务处理能力和集群规模能够动态伸缩的业务场景。在这些场景中,用户经常会遇到以下问题:
- 大量的复杂查询操作要求优化器能够生成优良的执行计划,并且执行引擎能够充分利用多机器、多核的硬件资源;
- 某些行业对数据一致性和多副本备份容灾有较高要求,同时希望维护成本足够低和故障恢复时间足够短;
- 用户的业务规模有峰值,要求所需的机器资源能够灵活地添加和删除。
为了解决上述问题,DM 提供了全新的、一站式的分布式数据库解决方案 DMDPC。
2 系统架构
DMDPC 架构旨在提供具有分布式特性的可扩展、高性能数据库解决方案,以满足具有高并发、大规模数据存储、业务快速扩张等特征的用户业务对数据库的要求。
一个完整的 DMDPC 架构由计划生成节点 SP、数据存储节点 BP 和元数据服务器节点 MP 三部分组成。SP 对外提供分布式数据库服务,用户可以登录到任意一个 SP 节点,获得完整的数据库服务;BP 负责存储数据,执行 SP 的调度指令并将执行结果返回给 SP;MP 负责存储元数据并向 SP、BP 提供元数据服务。
SP 节点不存储数据,配置成单机即可。MP 和 BP 节点既可以配置成单机,也可以配置成多副本系统。其中每一个多副本系统中只有一个作为主节点,其余节点均作为备份节点。
下图是一个典型的 DMDPC 架构图。左侧为单机 DMDPC,右侧为配有多副本系统的 DMDPC
2.1 计划生成节点
计划生成节点,英文全称为 SQL Processor,简称为 SP。
SP 为 DMDPC 集群中对外提供数据库服务的节点,负责接收用户请求并生成计划、划分子计划、按照一定规则计算并行度并调度各个子计划,并最终将执行结果返回给用户。对于一次客户端请求任务来说,客户端连接的 SP 负责生成、划分并调度计划,其它的 SP 和 BP 负责执行计划。各个子计划并行度的计算依据数据规模、计划代价以及有无分区智能连接优化(PWJ),且最大并行度值受限于 MAX_PARALLEL_DEGREE 参数。
SP 的实现是在已有的成熟达梦单机数据库处理框架的基础上新增了分布式计算处理。因此 SP 具备以下特征:
- 全部的 SQL 标准支持:包括复杂关联查询、存储过程、视图、序列等某些分布式数据库难以支持的特性。
- SP 节点自身无状态:每个 SP 节点上不存储任何数据字典信息和用户数据,一个集群中可以存在多个 SP 节点。连接上任何一个 SP 节点都可以获得完整的数据库服务。
- SP 具备子计划的执行能力:因为 SP 和 BP 是由同一套代码编译出来的,只是不同的启动参数决定了担任不同的角色,所以 SP 和 BP 一样具有操作符的执行能力。例如:从资源均衡利用和计算存储分离角度来考虑,DMDPC 将部分子计划安排在 SP 上执行。
- 支持动态增删节点。
2.2 数据存储节点
数据存储节点,英文全称为 Backend Processor,简称为 BP。
BP 为 DMDPC 集群中数据实际存储的节点,负责存储数据和接收 SP 的子任务调度指令,执行子任务,并返回结果给 SP。
一个 DMDPC 集群可配置多个 BP 节点同时提供服务,且可以随着用户业务量变化动态增删 BP 节点。为了保障 BP 节点能够持续提供服务,每一个 BP 节点又可以配置成一个 BP 多副本系统。
2.3 元数据服务器节点
元数据服务器节点,英文全称为 Metadata Processor,简称为 MP。
MP 为 DMDPC 集群中提供元数据服务(即字典信息服务)的节点。所有 DDL 请求都会经过 SP 转发给 MP 执行,元数据信息全部存储在 MP。
一个 DMDPC 集群只能配置一个 MP 节点提供服务。为了保障 MP 节点能持续提供服务,MP 节点可以配置成一个 MP 多副本系统
3 多副本系统
在现实环境中,DMDPC 运行过程中有可能会碰到各种故障情况,比如系统掉电或者出现硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况,因此需要对 BP 或 MP 采用多副本系统架构进行存储,以保障 DMDPC 的数据安全和高可用性,避免出现数据损坏和丢失,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。
DM 多副本系统由 N 个节点实例组成,N 必须是大于 1 的奇数。只有配置了 RAFT 归档的实例才能加入多副本系统。
目前一个多副本系统最多支持部署 9 个节点实例。同一个 RAFT 组中的所有节点(三个或三个以上)共同构成一个多副本系统。实例之间通过 XMAL 模块进行 TCP 消息通讯。各个节点实例之间基于 RAFT 协议选举出一个领导者作为主库,其他实例作为备库(也就是副本)角色运行。主库会自动向备库同步日志,备库接收并重新应用日志,从而达到主备库之间数据保持一致的目的。
3.1 BP 多副本架构
如下图展示了三个 BP 域的集群架构,每个 BP 域中都包含多个 BP。同一个 RAFT 组的多个 BP 保存了同样数据的多个副本。例如:BP1、BP1’和 BP1”三者内容完全相同。同一个 RAFT 组中的所有 BP 节点共同构成一个 BP 多副本系统。同一个 RAFT 组中的多个副本中只有一个作为主节点对外提供服务,其余节点均作为备份节点。当主节点发生故障后,系统会从备份节点中(BP1’,BP1”)重新选举出新的主节点对外提供服务。
在 BP 多副本系统中,可通过 V$ARCH_STATUS 和 V$RLOG_RAFT_INFO 来查看整个系统中主备环境的运行状况。
3.2 MP 多副本架构
如下图展示了三个 MP 域的集群架构,每个 MP 域中最多只包含 1 个 MP。同一个 RAFT 组的多个 MP 保存了同样数据的多个副本。例如:MP1、MP1’和 MP1”三者内容完全相同。同一个 RAFT 中的三个 MP 节点共同构成一个 MP 多副本系统。同一个 RAFT 组中的多个副本中只有一个作为主节点对外提供服务,其余节点均作为备份节点。当主节点发生故障后,系统会从备份节点中(MP1’,MP1”)重新选举出新的主节点对外提供服务。
在 MP 多副本系统中,可通过 V$ARCH_STATUS 和 V$RLOG_RAFT_INFO 来查看整个系统中主备环境的运行状况。
4 流程
DMDPC 架构中各节点相互配合,完成用户的查询请求。下图展示了 DMDPC 架构的查询处理流程。
下面以客户端的查询 SELECT 操作为例,介绍并行查询的流程。如上图中箭头序号所示。查询请求的处理流程如下:
- 客户端发送请求给 SP;
- SP 生成执行计划,同时 SP 向 MP 申请获取字典信息;
- MP 返回字典信息给 SP;
- SP 将生成的执行计划中的一个或多个子计划发送给此次查询相关的 BP;
- 相关 BP 接收并执行子计划。根据实际需要,不同 BP 间、同一 BP 不同线程间可能存在数据交换;
- 相关 BP 在子计划执行完成时将成功与否信息和/或请求调度信息返回 SP;
- SP 向客户端返回最终查询结果。
搭建
1 IP & port 分配
2 磁盘扩容
fdisk -l
fdisk /dev/sdb --1做就可以 --n(新建)--p(主分区)--1(第一个)--默认(开始一行)--默认(最后一行)--w(保存退出)
partprobe /dev/sdb --更新dev
mkfs.ext4 /dev/sdb1
mount -t ext4 /dev/sdb1 /dmdata/data
mkdir -p /dmdata/data/dpc_data
mkdir sp1 mp1 mp2 mp3 bp1 bp2 bp3 bp4 bp5 bp6
3 初始化实例
dminit path=/dmdata/data/dpc_data/sp1 instance_name=SP1 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5236 ap_port_num=6000 dpc_mode=SP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/mp1 instance_name=MP1 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5240 ap_port_num=6001 dpc_mode=MP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/mp2 instance_name=MP2 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5241 ap_port_num=6002 dpc_mode=MP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/mp3 instance_name=MP3 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5242 ap_port_num=6003 dpc_mode=MP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/bp1 instance_name=BP1 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5250 ap_port_num=6004 dpc_mode=BP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/bp2 instance_name=BP2 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5251 ap_port_num=6005 dpc_mode=BP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/bp3 instance_name=BP3 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5252 ap_port_num=6006 dpc_mode=BP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/bp4 instance_name=BP4 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5260 ap_port_num=6007 dpc_mode=BP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/bp5 instance_name=BP5 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5261 ap_port_num=6008 dpc_mode=BP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
dminit path=/dmdata/data/dpc_data/bp6 instance_name=BP6 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=256 port_num=5262 ap_port_num=6009 dpc_mode=BP SYSDBA_PWD=DMdba123 SYSAUDITOR_PWD=DMadudit123
4 配置 MP.INI 文件(全员配置)
DMDPC 集群中除 MP 自身外,SP、BP 都存在和 MP 通讯的可能,因此在 SP、BP 和 MP 初始化的 PATH 相同目录下需要用 MP.INI 来写明 MP 的 IP 地址和端口号。同一集群中 SP、BP 的 MP.INI 内容完全一致。
[MP1]
mp_host = 10.10.10.13
mp_port = 9001 #与MP、BP和SP上的ap_port_num不冲突的端口号
[MP2]
mp_host = 10.10.10.13
mp_port = 9002 #与MP、BP和SP上的ap_port_num不冲突的端口号
[MP3]
mp_host = 10.10.10.13
mp_port = 9003 #与MP、BP和SP上的ap_port_num不冲突的端口号
5 MP注册集群信息
5.1 配置 MP1 的本地归档 dmarch.ini
配置 MP1 的本地归档 dmarch.ini。
[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语句修改服务器模式
5.2 启动mp1
dmserver /dmdata/data/dpc_data/mp1/DAMENG/dm.ini dpc_mode=MP
5.3 登陆mp1
disql SYSDBA/DMdba123@dpc:5240
5.4 注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT'
SP_CREATE_DPC_INSTANCE('MP_RAFT','MP1','MP',6001,5240,'10.10.10.13','192.168.0.13','STANDBY',0,'MP1 instance');
SP_CREATE_DPC_INSTANCE('MP_RAFT','MP2','MP',6002,5241,'10.10.10.13','192.168.0.13','STANDBY',0,'MP2 instance');
SP_CREATE_DPC_INSTANCE('MP_RAFT','MP3','MP',6003,5242,'10.10.10.13','192.168.0.13','STANDBY',0,'MP3 instance');
5.5 注册RAFT组,名为RAFT_1
SP_CREATE_DPC_RAFT('BP','RAFT_1');
5.6 在RAFT_1组内注册BP实例BP1、2、3
SP_CREATE_DPC_INSTANCE('RAFT_1','BP1','BP',6004,5250, '10.10.10.13', '192.168.0.13','STANDBY',0,'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_1','BP2','BP',6005,5251, '10.10.10.13', '192.168.0.13','STANDBY',0,'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_1','BP3','BP',6006,5252, '10.10.10.13', '192.168.0.13','STANDBY',0,'BP instance');
5.7 注册RAFT组,名为RAFT_2
SP_CREATE_DPC_RAFT('BP', 'RAFT_2');
5.8 在RAFT_2组内注册BP实例BP4、5、6
SP_CREATE_DPC_INSTANCE('RAFT_2','BP4','BP',6007,5260, '10.10.10.13', '192.168.0.13', 'STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_2','BP5','BP',6008,5261, '10.10.10.13', '192.168.0.13', 'STANDBY', 0, 'BP instance');
SP_CREATE_DPC_INSTANCE('RAFT_2','BP6','BP',6009,5262, '10.10.10.13', '192.168.0.13', 'STANDBY', 0, 'BP instance');
5.9 注册一个BP组,名为BG_1
SP_CREATE_DPC_BP_GROUP('BG_1', 'bp group1');
5.10 往BP组中添加RAFT组
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_1');
SP_BP_GROUP_ADD_RAFT('BG_1', 'RAFT_2');
5.11 增加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, '10.10.10.13', '192.168.0.13','NORMAL', 2, 'SP instance');
5.12 注册一个容错域:FDOM_1 (可选)
SP_CREATE_FAULT_DOMAIN ('FDOM_1','beijing1');
SP_CREATE_FAULT_DOMAIN ('FDOM_2','beijing2');
SP_CREATE_FAULT_DOMAIN ('FDOM_3','shanghai1');
5.13 往容错域中添加实例
SP_FAULT_DOMAIN_MV_INST('FDOM_1','MP1');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP1');
SP_FAULT_DOMAIN_MV_INST('FDOM_1','BP4');
SP_FAULT_DOMAIN_MV_INST('FDOM_2','MP2');
SP_FAULT_DOMAIN_MV_INST('FDOM_2','BP2');
SP_FAULT_DOMAIN_MV_INST('FDOM_2','BP6');
SP_FAULT_DOMAIN_MV_INST('FDOM_3','MP3');
SP_FAULT_DOMAIN_MV_INST('FDOM_3','BP5');
SP_FAULT_DOMAIN_MV_INST('FDOM_3','BP3');
5.14 检查注册是否成功
在MP节点上检查上一步骤的注册是否成功。能查到相关信息表示注册成功。
select * from DPC_BP_GROUP; -- 记录系统中注册的每个 BP 组信息
select * from DPC_BP_RAFT; -- 记录系统中注册的每个 RAFT 组信息。
select * from DPC_INSTANCE; -- 记录系统中所有实例对象信息。
5.15 注意事项
5.15.1增加dcp实例
SP_CREATE_DPC_INSTANCE (
RAFT_NAME VARCHAR(128),
NAME VARCHAR(128),
DPC_MODE VARCHAR(8),
AP_PORT INT,
INST_PORT INT,
IP_INTER VARCHAR(256), #实例的内网 IP 地址;
IP_EXTER VARCHAR(256), #实例的外网 IP 地址;可传空串,表示内外网地址相同;
SYS MODE VARCHAR(32), #主备模式,取值有 NORMAL,PRIMARY,STANDBY;
STATUS INT, #实例状态,1:有效;0:无效;2:表示 SP 为正常退出状态,可动态删除此 SP 实例;
DESC VARCHAR(256) #描述信息。
)
5.15.2删除dpc实例
SP_DROP_DPC_INSTANCE('MP4');
6 配置 MP RAFT 组内数据
6.1 对MP1进行脱机备份(退出mp1)
dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/dpc_data/mp1/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/dmdata/data/dpc_data/mp1/DAMENG/BACKUP_01'" USE_AP=2
6.2 还原到MP2
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
6.3 还原到MP3
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=2
7 配置 MP RAFT 归档文件
编写各自 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 = /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 #归档目标多副本节点ID
8 启动MP 实例
nohup 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 系统即可正常运行。
9 配置 BP
9.1 配置BP1~6 的dm.ini
ARCH_INI = 1 #打开归档配置
ALTER_MODE_STATUS = 0 #不允许用户直接通过SQL语句修改服务器模式
9.2 配置 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表示无限制
9.3 启动bp1
dmserver /dmdata/data/dpc_data/bp1/DAMENG/dm.ini dpc_mode=bp
9.4 备份还原RAFT组内数据,每个组内数据还原方式相同。
9.4.1 对BP1进行脱机备份(退出bp1)
dmrman 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
9.4.2 还原到BP2
dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/dpc_data/bp2/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/data/dpc_data/bp1/DAMENG/BACKUP_01'" USE_AP=2
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/dpc_data/bp2/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
9.4.3 还原到BP3
dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/dpc_data/bp3/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/data/dpc_data/bp1/DAMENG/BACKUP_01'" USE_AP=2
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/dpc_data/bp3/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
9.5 配置RAFT_1的归档 dmarch.ini (bp1、2、3)
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 = BP2 #归档目标实例名
ARCH_DEST_ID = 2 #归档目标多副本节点ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT #RAFT归档
ARCH_DEST = BP3 #归档目标 实例名
ARCH_DEST_ID = 3 #归档目标多副本节点ID
9.6 RAFT_2配置同上(bp4、5、6)
启动bp4
备份bp4
还愿bp5、bp6
配置归档文件
10 启动SP和BP,无顺序之分
nohup 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/bp2/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp3/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp4/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp5/DAMENG/dm.ini dpc_mode=BP MOUNT &
nohup dmserver /dmdata/data/dpc_data/bp6/DAMENG/dm.ini dpc_mode=BP MOUNT &
启动完成后,RAFT 组内的 BP 会自动选出主库,待主库选举完成后,整个 DMDPC 系统即可正常运行。
11退出dpc
使用 exit 命令退出 DMDPC 需要按照正确的顺序有序进行。
第一步 退出 SP;
第二步 退出 BP;
第三步 退出 MP。
注意:
如果没有按正常顺序退出,可能会导致剩下的机器直接宕机。此时,只能对其他的机器采用强杀。这种服务器异常退出的情况,当再次重启的时候,服务器需要做大量的REDO日志,因此重启的时间会稍长一些,其它没有影响。
12 注册后台启动
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/bp2/DAMENG/dm.ini -dpc_mode BP -p BP2
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp3/DAMENG/dm.ini -dpc_mode BP -p BP3
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp4/DAMENG/dm.ini -dpc_mode BP -p BP4
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp5/DAMENG/dm.ini -dpc_mode BP -p BP5
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dpc_data/bp6/DAMENG/dm.ini -dpc_mode BP -p BP6




