和单副本架构的部署步骤大致相同,参考http://t.csdnimg.cn/jNztN
主要就是多了一个配置归档和数据备份还原的步骤6,因为多副本架构就是相当于给每个BP节点单独配置了主备系统,以防止单点故障。
本文在命令行方式下,在单台虚拟机上,部署2个BP+1个SP+1个MP 的dpc多副本架构。
其中每个BP配置2个备节点,即每个BP RAFT组都有3个节点。
因为要创建8个实例,虚拟机的内存和硬盘尽量预留充足。
1,前期准备
- 关闭防火墙
- 修改系统资源
- 设置网络信息,IP地址:192.168.37.101
- 创建安装用户和安装路径
- 安装dm8,安装路径为 /home/dmdba/dpc
2,创建实例
在/home/dmdba/dpc目录下创建8个实例,未指定DB_NAME库名默认为DAMENG
注意端口号不能重复
| raft组名 | 实例名 | inst_port | ap_port | 路径 |
| raft_sp1 | SP1 | 5101 | 6101 | /home/dmdba/dpc/sp1 |
| raft_bp1 | BP11 | 5211 | 6211 | /home/dmdba/dpc/bp11 |
| BP12 | 5212 | 6212 | /home/dmdba/dpc/bp12 | |
| BP13 | 5213 | 6213 | /home/dmdba/dpc/bp13 | |
| raft_bp2 | BP21 | 5221 | 6221 | /home/dmdba/dpc/bp21 |
| BP22 | 5222 | 6222 | /home/dmdba/dpc/bp22 | |
| BP23 | 5223 | 6223 | /home/dmdba/dpc/bp23 | |
| mp_raft | MP | 5301 | 6301 | /home/dmdba/dpc/mp |
cd /home/dmdba/dpc/bin
./dminit path=/home/dmdba/dpc/sp1 instance_name=SP1 port_num=5101 ap_port_num=6101 dpc_mode=SP
./dminit path=/home/dmdba/dpc/bp11 instance_name=BP11 port_num=5211 ap_port_num=6211 dpc_mode=BP
./dminit path=/home/dmdba/dpc/bp12 instance_name=BP12 port_num=5212 ap_port_num=6212 dpc_mode=BP
./dminit path=/home/dmdba/dpc/bp13 instance_name=BP13 port_num=5213 ap_port_num=6213 dpc_mode=BP
./dminit path=/home/dmdba/dpc/bp21 instance_name=BP21 port_num=5221 ap_port_num=6221 dpc_mode=BP
./dminit path=/home/dmdba/dpc/bp22 instance_name=BP22 port_num=5222 ap_port_num=6222 dpc_mode=BP
./dminit path=/home/dmdba/dpc/bp23 instance_name=BP23 port_num=5223 ap_port_num=6223 dpc_mode=BP
./dminit path=/home/dmdba/dpc/mp instance_name=MP port_num=5301 ap_port_num=6301 dpc_mode=MP
全部创建完成之后,可以看到对应文件夹

3,编辑配置文件mp.ini
在8个实例对应的目录创建mp.ini文件,内容相同。
vi /home/dmdba/dpc/xxx/DAMENG/mp.ini
# mp.ini
mp_host = 192.168.37.101 # MP所在ip
mp_port = 9000 # 端口号
4,启动MP节点服务器
启动MP节点的dmserver服务器,并在接下来的配置过程中始终保持开启状态
cd /home/dmdba/dpc
bin/dmserver mp/DAMENG/dm.ini dpc_mode=MP
5,添加节点到集群
先登录并添加MP节点,然后添加SP、BP节点
创建dpc集群节点的函数
# 参数说明
SP_CREATE_DPC_INSTANCE (
RAFT_NAME VARCHAR(128), # RAFT组名称
NAME VARCHAR(128), # 实例名称
DPC_MODE VARCHAR(8), # 注册的实例类型,取值:BP、SP或MP
AP_PORT INT, # AP_PORT 端口号
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.1,登录MP
disql登录MP节点,注意检查端口号
cd /home/dmdba/dpc/bin
./disql SYSDBA/SYSDBA@192.168.37.200:5301
5.2,添加MP节点
在disql中添加当前登录的MP节点,MP的RAFT组名只能为'MP_RAFT',默认值也是。
SP_CREATE_DPC_INSTANCE('MP_RAFT','MP','MP',6301,5301, '192.168.37.101','192.168.37.101','NORMAL',1,'MP instance');
5.3,创建raft组并添加节点
创建BP类型raft组,组名为raft_bp1,向其中添加BP11、BP12、BP13节点
注意先ap_port,后inst_port,standby模式,状态0
SP_CREATE_DPC_RAFT('BP','raft_bp1');
SP_CREATE_DPC_INSTANCE('raft_bp1','BP11','BP',6211,5211, '192.168.37.101', '192.168.37.101','STANDBY',0,'BP instance');
SP_CREATE_DPC_INSTANCE('raft_bp1','BP12','BP',6212,5212, '192.168.37.101', '192.168.37.101','STANDBY',0,'BP instance');
SP_CREATE_DPC_INSTANCE('raft_bp1','BP13','BP',6213,5213, '192.168.37.101', '192.168.37.101','STANDBY',0,'BP instance');
创建BP类型raft组,组名为raft_bp2,向其中添加BP21、BP22、BP23节点
注意先ap_port,后inst_port,standby模式,状态0
SP_CREATE_DPC_RAFT('BP','raft_bp2');
SP_CREATE_DPC_INSTANCE('raft_bp2','BP21','BP',6221,5221, '192.168.37.101', '192.168.37.101','STANDBY',0,'BP instance');
SP_CREATE_DPC_INSTANCE('raft_bp2','BP22','BP',6222,5222, '192.168.37.101', '192.168.37.101','STANDBY',0,'BP instance');
SP_CREATE_DPC_INSTANCE('raft_bp2','BP23','BP',6223,5223, '192.168.37.101', '192.168.37.101','STANDBY',0,'BP instance');
创建SP类型raft组,组名为raft_sp1,向其中添加SP1节点,注意status为2
注意先ap_port,后inst_port,normal模式,状态2
SP_CREATE_DPC_RAFT('SP','raft_sp1');
SP_CREATE_DPC_INSTANCE('raft_sp1','SP1','SP',6101,5101, '192.168.37.101', '192.168.37.101','NORMAL',2,'SP instance');
5.4,创建BP组并添加raft组
创建一个BP组,组名为BG_1,并添加BP类型raft组
SP_CREATE_DPC_BP_GROUP('BG_1', 'bp group1');
SP_BP_GROUP_ADD_RAFT('BG_1', 'raft_bp1');
SP_BP_GROUP_ADD_RAFT('BG_1', 'raft_bp2');
5.5,检查一下添加的情况
select * from DPC_BP_GROUP;
select * from DPC_BP_RAFT;
select * from DPC_INSTANCE;

6,配置raft组的归档
6.1,配置BPx1的本地归档
修改dm.ini文件开启归档
vi /home/dmdba/dpc/bpx1/DAMENG/dm.ini
修改:ARCH_INI = 1

新建归档配置文件arch.ini,为防止提前开始选举,所以暂时只开启本地归档
vi /home/dmdba/dpc/bpx1/DAMENG/dmarch.ini
# dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL # 本地归档类型
ARCH_DEST = /home/dmdba/dpc/bpx1/DAMENG/arch # 本地归档文件路径
ARCH_FILE_SIZE = 128 # 本地单个归档文件最大值, 单位MB
ARCH_SPACE_LIMIT = 0 # 本地归档文件总大小, 0表示无限制
6.2,备份还原
以下 x 表示省略的取值1、2或3
6.2.1,BPx1脱机备份
启动BPx1节点server
cd /home/dmdba/dpc/bin
./dmserver /home/dmdba/dpc/bpx1/DAMENG/dm.ini dpc_mode=BP
exit关闭server
然后使用dmrman工具生成BPx1节点的脱机的完全备份
cd /home/dmdba/dpc/bin
./dmrman CTLSTMT="BACKUP DATABASE '/home/dmdba/dpc/bpx1/DAMENG/dm.ini' FULL TO BACKUP_01 BACKUPSET '/home/dmdba/dpc/bpx1/DAMENG/bak/BACKUP_01'" USE_AP=2
会自动创建对应的文件夹

6.2.2,BPx2和BPx3脱机还原
仍使用dmrman工具,使用上一步中生成的备份对BPx2和BPx3节点进行脱机还原
cd /home/dmdba/dpc/bin
./dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/dpc/bpxx/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dpc/bpx1/DAMENG/bak/BACKUP_01'" USE_AP=2
./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dpc/bpxx/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2

6.3,配置所有BP的raft归档
修改 dmarch.ini,配置 RAFT 归档与本地归档
同一个raft组中的3个节点,选举时间设置不同,这里取为1500、1700和2000
注意节点ID、实例名、路径要对应
# dmarch.ini
XMAL_HB_INTERVAL = 5 # 节点通信检测间隔
RAFT_HB_INTERVAL = 150 # 选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 # 选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = x # 多副本自身节点ID
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT # RAFT归档
ARCH_DEST = BPxx # 归档目标实例名
ARCH_DEST_ID = x # 归档目标多副本节点ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT # RAFT归档
ARCH_DEST = BPxx # 归档目标 实例名
ARCH_DEST_ID = x # 归档目标多副本节点ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL # 本地归档类型
ARCH_DEST = /home/dmdba/dpc/bpxx/DAMENG/arch # 本地归档文件路径
ARCH_FILE_SIZE = 128 # 本地单个归档文件最大值, 单位MB
ARCH_SPACE_LIMIT = 0 # 本地归档文件总大小, 0表示无限制
7,启动SP、BP节点服务器
启动所有的SP和BP节点服务器,顺序随意
cd /home/dmdba/dpc/bin
./dmserver /home/dmdba/dpc/bp11/DAMENG/dm.ini dpc_mode=BP
./dmserver /home/dmdba/dpc/bp12/DAMENG/dm.ini dpc_mode=BP
./dmserver /home/dmdba/dpc/bp13/DAMENG/dm.ini dpc_mode=BP
./dmserver /home/dmdba/dpc/bp21/DAMENG/dm.ini dpc_mode=BP
./dmserver /home/dmdba/dpc/bp22/DAMENG/dm.ini dpc_mode=BP
./dmserver /home/dmdba/dpc/bp23/DAMENG/dm.ini dpc_mode=BP
./dmserver /home/dmdba/dpc/sp1/DAMENG/dm.ini dpc_mode=SP
8,登录SP节点
disql登录对外提供服务的 SP节点, 查看当前dpc集群信息
./disql SYSDBA/SYSDBA@192.168.37.101:5101
select * from v$instance;
select * from V$dm_ini where para_name='DPC_MODE' and sf_get_ep_seqno(rowid)=SF_GET_SELF_EP_SEQNO;
select * from DPC_INSTANCE;
MP、SP、BP 全部正常启动,且均处于 OPEN 状态,则搭建成功
9,关闭集群
使用 exit 命令退出 DMDPC 需要按照正确的顺序有序进行,按照如下顺序:
退出 SP -> 退出 BP -> 退出 MP
必须按照顺序 exit 退出,否则可能引起宕机
10,补充
因为要初始化多个实例,所以创建虚拟机的时候把硬盘空间预留充足一点,不然会报错,如果不想重建虚拟机重新开始,可以通过vmware扩展磁盘然后继续部署,参考http://t.csdnimg.cn/jhuaG


849

被折叠的 条评论
为什么被折叠?



