本文是在1台Linux 虚拟机上通过创建四个实例的方式进行集群搭建.
DMDPC 集群规划部署 1 个 SP,2 个 BP 和 1 个 MP,其中,BP 采用单机模式,未配置为多副本系统.
RAFT组名 | 实例名称 | IP | PORT_NUM | AP_PORT_NUM | 路径 |
RAFT_SP1 | SP1 | 192.168.148.103 | 5236 | 6000 | /data/dmdata/sp1 |
RAFT_1 | BP1 | 192.168.148.103 | 5237 | 6001 | /data/dmdata/bp1 |
RAFT_2 | BP2 | 192.168.148.103 | 5238 | 6002 | /data/dmdata/bp2 |
MP_RAFT | MP | 192.168.148.103 | 5239 | 6003 | /data/dmdata/mp |
查看DMap运行状态
[root@localhost /]# systemctl status DmAPService.service
su - dmdba
dminit path=/data/dmdata/sp1 instance_name=SP1 port_num=5236 ap_port_num=6000 dpc_mode=SP
dminit path=/data/dmdata/bp1 instance_name=BP1 port_num=5237 ap_port_num=6001 dpc_mode=BP
dminit path=/data/dmdata/bp2 instance_name=BP2 port_num=5238 ap_port_num=6002 dpc_mode=BP
dminit path=/data/dmdata/mp instance_name=MP port_num=5239 ap_port_num=6003 dpc_mode=MP
vi /data/dmdata/bp1/DAMENG/mp.ini
mp_host = 192.168.148.103
mp_port = 9000 #与MP、BP和SP上的ap_port_num不冲突的端口号
vi /data/dmdata/bp2/DAMENG/mp.ini
mp_host = 192.168.148.103
mp_port = 9000 #与MP、BP和SP上的ap_port_num不冲突的端口号
vi /data/dmdata/mp/DAMENG/mp.ini
mp_host = 192.168.148.103
mp_port = 9000 #与MP、BP和SP上的ap_port_num不冲突的端口号
vi /data/dmdata/sp1/DAMENG/mp.ini
mp_host = 192.168.148.103
mp_port = 9000 #与MP、BP和SP上的ap_port_num不冲突的端口号
DMDPC 运行过程中,MP 需要始终处于开启状态
su - dmdba
cd /dmdbms/product/bin
./dmserver /data/dmdata/mp/DAMENG/dm.ini dpc_mode=MP
增加 1 个 MP、1 个 SP 和 2 个 BP 节点。
登录MP
disql SYSDBA/[email protected]:5239
//增加MP节点
SP_CREATE_DPC_INSTANCE(NULL,'MP','MP',6003,5239, '192.168.148.103', '192.168.148.103','NORMAL',1,'MP instance');
注:注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT'
//增加两个BP节点:BP1、BP2
//注册RAFT组,名为RAFT_1
SP_CREATE_DPC_RAFT('BP','RAFT_1');
//在RAFT_1组内注册BP实例BP1
SP_CREATE_DPC_INSTANCE('RAFT_1','BP1','BP',6001,5237, '192.168.148.103', '192.168.148.103','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',6002,5238, '192.168.148.103', '192.168.148.103', '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节点: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.148.103', '192.168.148.103','NORMAL', 2, 'SP instance');
//注册一个容错域: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和BP节点加入DMDPC集群中的步骤必须在SP、BP第一次启动前完成
查询系统表,检查上一步骤的注册是否成功,能查到相关信息表示注册成功
SQL> select * from DPC_BP_GROUP;
SQL> select * from DPC_BP_RAFT;
SQL> select * from DPC_INSTANCE
启动 SP
su - dmdba
cd /dmdbms/product/bin
./dmserver /data/dmdata/sp1/DAMENG/dm.ini dpc_mode=SP
启动 BP
su - dmdba
cd /dmdbms/product/bin
./dmserver /data/dmdata/bp1/DAMENG/dm.ini dpc_mode=BP
./dmserver /data/dmdata/bp2/DAMENG/dm.ini dpc_mode=BP
cd /dmdbms/product/bin
./dmserver /data/dmdata/bp2/DAMENG/dm.ini dpc_mode=BP
注:启动 SP 和 BP 没有先后之分。DMDPC 集群搭建完毕,用户只需要连接对外提供服务的 SP,即可获得完整的数据库服务
用户只需要连接对外提供服务的SP,即可获得完整的数据库服务
disql SYSDBA/[email protected]:5236
SQL> select name from v$database;
SQL> select name from v$instance;
SQL> select path from v$datafile;
SQL> select arch_mode from v$database;
[dmdba@localhost ~]$ mkdir -p /data/dmdata/DAMENG
[dmdba@localhost data]$ disql SYSDBA/SYSDBA
SQL> create tablespace tps_hxl datafile '/data/dmdata/DAMENG/tps_hxl01.dbf' size 100 autoextend on;
注:该数据文件不放在mp、sp、bp目录下,而是放在单独的目录/data/dmdata/DAMENG
创建用户
SQL>CREATE USER hxl IDENTIFIED BY "dameng1234!" DEFAULT TABLESPACE tps_hxl;
SQL> grant dba to hxl;
使用新建的用户登录
disql hxl/dameng123
create table tb_hxl(id int,name varchar(32));
insert into tb_hxl values(1,'name1');
insert into tb_hxl values(2,'name1');
insert into tb_hxl values(3,'name1');
insert into tb_hxl values(4,'name1');
insert into tb_hxl values(5,'name1');
insert into tb_hxl values(6,'name1');
insert into tb_hxl values(7,'name1');
insert into tb_hxl values(8,'name1');
insert into tb_hxl values(9,'name1');
insert into tb_hxl values(10,'name1');
使用 exit 命令退出 DMDPC 需要按照正确的顺序有序进行,按照如下顺序:退出 SP -> 退出 BP -> 退出 MP
社区地址:https://eco.dameng.com