DM数据库学习之路(十一)DM8DPC集群单机1SP1MP2BP(BP多副本)部署

  1. DM8(DMDPC)单机架构(BP多副本)
    1. DMDPC单机架构说明

一个最小的 DMDPC 集群包含一个 BP、一个 SP 和一个 MP。可以在部署完毕后随时增添新的 BP、SP 节点。至少需要两台 BP 才方便看出子任务的各种计划形态和调度。

Windows 和 Linux 环境下部署 DMDPC 集群并无区别,目前支持借助命令行工具部署和 DEM 图形化界面方式部署两种方式。

    1. DMDPC单机架构规划

DMDPC 集群规划部署1个SP,1个MP和2个BP。其中MP采用单机模式,BP采用多副本模式(每个BP配置成3副本)。

IP 和端口分配如下表所示。

RAFTA组名

角色

实例

名称

IP

端口

AP_PORT_NUM

路径

RAFT_SP1

SP

SP1

84.0.191.31

5236

6000

/dm8/data/sp1

缺省为NULL或者MP_RAFT

MP

MP1

84.0.191.31

5237

6001

/dm8/data/mp1

RAFT_1

BP

BP11

84.0.191.31

5238

6002

/dm8/data/bp11

BP

BP12

84.0.191.31

5239

6003

dm8/data/bp12

BP

BP13

84.0.191.31

5240

6004

dm8/data/bp13

RAFT_2

BP

BP21

84.0.191.31

5241

6005

dm8/data/bp21

BP

BP22

84.0.191.31

5242

6006

dm8/data/bp22

BP

BP23

84.0.191.31

5243

6007

dm8/data/bp23

    1. 命令行工具部署DMDPC(BP多副本架构)
      1. DM8 SOFT安装

只安装soft不建实例。

[root@dm8dpc]# mount -o loop /soft/dm8_20231109_x86_kylin10_64.iso /mnt

[root@dm8dpc soft]# su - dmdba

dm8dpc>$cd /mnt

dm8dpc>$./DMInstall.bin -i

请以root系统用户执行命令:

/dm8/dmdbms/script/root/root_installer.sh

安装结束

[root@dm8dpc ~]# /dm8/dmdbms/script/root/root_installer.sh

      1. 建数据库实例目录

mkdir -p /dm8/data/sp1

mkdir -p /dm8/data/mp1

mkdir -p /dm8/data/bp11

mkdir -p /dm8/data/bp12

mkdir -p /dm8/data/bp13

mkdir -p /dm8/data/bp21

mkdir -p /dm8/data/bp22

mkdir -p /dm8/data/bp23

      1. 初始化数据库实例

初始化 8 个实例,分别为 SP、MP 和 6 个 BP 角色。

        1. 初始化SP和MP实例

dminit path=/dm8/data/sp1 instance_name=SP1  port_num=5236 ap_port_num=6000 dpc_mode=SP

dminit path=/dm8/data/mp1 instance_name=MP1  port_num=5237 ap_port_num=6001 dpc_mode=MP

或者:

#SP1

dminit path=/dm8/data/sp1 EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=DAMENG instance_name=SP1 PORT_NUM=5236 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ap_port_num=6000 dpc_mode=SP

#MP1

dminit path=/dm8/data/mp1 EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=DAMENG instance_name=MP1 PORT_NUM=5237 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ap_port_num=6001 dpc_mode=MP

        1. 初始化RAFT_1组中的BP实例
  1. BP11

dminit path=/dm8/data/bp11 EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=DAMENG instance_name=BP11 PORT_NUM=5238 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ap_port_num=6002 dpc_mode=BP

  1. BP12

dminit path=/dm8/data/bp12 EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=DAMENG instance_name=BP12 PORT_NUM=5239 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ap_port_num=6003 dpc_mode=BP

  1. BP13

dminit path=/dm8/data/bp13 EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=DAMENG instance_name=BP13 PORT_NUM=5240 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ap_port_num=6004 dpc_mode=BP

        1. 初始化RAFT_2组中的BP实例
  1. BP21

dminit path=/dm8/data/bp21 EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=DAMENG instance_name=BP21 PORT_NUM=5241 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ap_port_num=6005 dpc_mode=BP

  1. BP22

dminit path=/dm8/data/bp22 EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=DAMENG instance_name=BP22 PORT_NUM=5242 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ap_port_num=6006 dpc_mode=BP

  1. BP23

dminit path=/dm8/data/bp23 EXTENT_SIZE=16 PAGE_SIZE=32 case_sensitive=1 charset=1 log_size=2048 db_name=DAMENG instance_name=BP23 PORT_NUM=5243 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA2023" SYSAUDITOR_PWD="SYSDBA2023" ap_port_num=6007 dpc_mode=BP

      1. SP、BP 和 MP 配置 MP.INI 文件

为 SP、BP 和 MP 实例配置 MP.INI 文件。

#与MP、BP和SP上的ap_port_num不冲突的端口号

MP.INI 文件内容如下:

mp_host = 84.0.191.31

mp_port = 9000  

将 MP.INI 文件内容分别写入 SP(SP1)、两个 RAFT 组内的所有 BP(BP11、BP12、BP13、BP21、BP22、BP23)和 MP 中。

        1. SP1配置MP.INI文件

#与MP、BP和SP上的ap_port_num不冲突的端口号

cat >> /dm8/data/sp1/DAMENG/mp.ini << EOF

mp_host = 84.0.191.31

mp_port = 9000

EOF

        1. MP1配置MP.INI文件

#与MP、BP和SP上的ap_port_num不冲突的端口号

cat >> /dm8/data/mp1/DAMENG/mp.ini << EOF

mp_host = 84.0.191.30

mp_port = 9000

EOF

        1. BP11配置MP.INI文件

#与MP、BP和SP上的ap_port_num不冲突的端口号

cat >> /dm8/data/bp11/DAMENG/mp.ini << EOF

mp_host = 84.0.191.31

mp_port = 9000

EOF

        1. BP12配置MP.INI文件

#与MP、BP和SP上的ap_port_num不冲突的端口号

cat >> /dm8/data/bp12/DAMENG/mp.ini << EOF

mp_host = 84.0.191.31

mp_port = 9000

EOF

        1. BP13配置MP.INI文件

#与MP、BP和SP上的ap_port_num不冲突的端口号

cat >> /dm8/data/bp13/DAMENG/mp.ini << EOF

mp_host = 84.0.191.31

mp_port = 9000

EOF

        1. BP21配置MP.INI文件

#与MP、BP和SP上的ap_port_num不冲突的端口号

cat >> /dm8/data/bp21/DAMENG/mp.ini << EOF

mp_host = 84.0.191.31

mp_port = 9000

EOF

        1. BP22配置MP.INI文件

#与MP、BP和SP上的ap_port_num不冲突的端口号

cat >> /dm8/data/bp22/DAMENG/mp.ini << EOF

mp_host = 84.0.191.31

mp_port = 9000

EOF

        1. BP23配置MP.INI文件

#与MP、BP和SP上的ap_port_num不冲突的端口号

cat >> /dm8/data/bp23/DAMENG/mp.ini << EOF

mp_host = 84.0.191.31

mp_port = 9000

EOF

      1. 启动 MP
  1. 前台启动

dm8dpc>$dmserver /dm8/data/mp1/DAMENG/dm.ini  dpc_mode=MP

DMDPC 运行过程中,MP 需要始终处于开启状态

  1. 后台启动

dm8dpc>$mkdir -p /dm8/script

dm8dpc>$vi /dm8/script/dmmpstart.sh

dmserver /dm8/data/mp1/DAMENG/dm.ini  dpc_mode=MP

dm8dpc>$chmod +x dmmpstart.sh

dm8dpc>$./dmmpstart.sh &

dm8dpc>$ps -ef | grep dm

      1. 将 MP、SP 和 BP 加入集群

增加1个MP、1个SP和6个BP节点。只有在注册当前登录MP节点后,才可以注册其余节点。后续增加 MP、SP 节点和 BP 节点无先后之分。

//搭建DMDPC过程中加入MP、SP和BP,必须登录MP进行操作

dm8dpc>$disql SYSDBA/SYSDBA2023@84.0.191.31:5237

        1. 增加MP节点

//注册当前MP实例,MP的RAFT组名可以指定为NULL或者'MP_RAFT'

SP_CREATE_DPC_INSTANCE(NULL,'MP1','MP',6001,5237, '84.0.191.31', '84.0.191.31','NORMAL',1,'MP instance');

        1. 增加BP节点

//注册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', 6002, 5238, '84.0.191.31', '84.0.191.31','STANDBY', 0, 'BP instance');

SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP12', 'BP', 6003, 5239, '84.0.191.31', '84.0.191.31','STANDBY', 0, 'BP instance');

SP_CREATE_DPC_INSTANCE('RAFT_1', 'BP13', 'BP', 6004, 5240, '84.0.191.31', '84.0.191.31','STANDBY', 0, 'BP instance');

//注册RAFT组,名为RAFT_2

SP_CREATE_DPC_RAFT('BP', 'RAFT_2');

//在RAFT_2内注册BP实例BP21、BP22、BP23

SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP21', 'BP', 6005, 5241, '84.0.191.31', '84.0.191.31','STANDBY', 0, 'BP instance');

SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP22', 'BP', 6006, 5242, '84.0.191.31', '84.0.191.31','STANDBY', 0, 'BP instance');

SP_CREATE_DPC_INSTANCE('RAFT_2', 'BP23', 'BP', 6007, 5243, '84.0.191.31', '84.0.191.31','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');

        1. 增加SP节点

//增加SP,也要注册RAFT组,参数1为空串

SP_CREATE_DPC_RAFT('SP', 'RAFT_SP1');

//在RAFT_SP1内注册SP实例SP1

SP_CREATE_DPC_INSTANCE('RAFT_SP1', 'SP1', 'SP', 6000, 5236, '84.0.191.31', '84.0.191.31','NORMAL', 2, 'SP instance');

        1. 注册三个容错域:FDOM_1 FDOM_2 FDOM_3

SP_CREATE_FAULT_DOMAIN ('FDOM_1', 'shanghai_1');

SP_CREATE_FAULT_DOMAIN ('FDOM_2', 'shanghai_2');

SP_CREATE_FAULT_DOMAIN ('FDOM_3', 'shanghai_3');

        1. 往容错域中添加实例

SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'MP1');

SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP11');

SP_FAULT_DOMAIN_MV_INST('FDOM_1', 'BP21');

SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP12');

SP_FAULT_DOMAIN_MV_INST('FDOM_2', 'BP22');

SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP13');

SP_FAULT_DOMAIN_MV_INST('FDOM_3', 'BP23');

注意

将SP和BP节点加入DMDPC集群中的步骤必须在SP、BP第一次启动前完成!

      1. 检查注册是否成功
        1. 检查注册信息

disql SYSDBA/SYSDBA2023@84.0.191.31:5237

select id,NAME DESCRIPTION,RAFT_NUM from DPC_BP_GROUP;

//查询结果如下:

行号      ID          DESCRIPTION RAFT_NUM  

---------- ----------- ----------- -----------

1          0           BG_1        2

查询系统表,检查上一步骤的注册是否成功。能查到相关信息表示注册成功。

        1. 检查DCP集群信息

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      SP    RAFT_SP1 1       NULL        NULL   NULL

select * from DPC_INSTANCE;

//查询结果如下:

      1. 准备BP RAFT_1组和RAFT_2组数据

RAFT_1 和 RAFT_2 组内的 BP 数据准备方式完全相同,只是路径不同。注意RAFT_2 组不能直接使用 RAFT_1 组的备份集执行还原恢复

        1. RAFT_1组脱机备份还原
          1. RAFT_1(BP11)

对BP11进行脱机备份

mkdir -p /data/backup/bp11

chown -R dmdba:dinstall /data

chmod -R 775 /data

dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/bp11/DAMENG/dm.ini' FULL TO bp11bak01 BACKUPSET '/data/backup/bp11/bp11bak_01'" USE_AP=2

将 BP11 的备份文件脱机还原到 BP12/BP13

这里在同一台机器,直接用BP11的备份恢复

          1. RAFT_1(BP12)

//还原数据库:(在同一台机器,直接用bp11备份目录还原)

dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/bp12/BP/dm.ini' FROM BACKUPSET  '/data/backup/bp11/bp11bak_01'" USE_AP=2

//因为脱机备份没有产生任何REDO日志,所以此处省略恢复数据库的操作步骤

//更新数据库:

dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/bp12/BP/dm.ini' UPDATE DB_MAGIC" USE_AP=2

          1. RAFT_1(BP13)

//还原数据库:(在同一台机器,直接用bp11备份目录还原)

dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/bp13/BP/dm.ini' FROM BACKUPSET  '/data/backup/bp11/bp11bak_01'" USE_AP=2

//因为脱机备份没有产生任何REDO日志,所以此处省略恢复数据库的操作步骤

//更新数据库:

dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/bp13/BP/dm.ini' UPDATE DB_MAGIC" USE_AP=2

        1. RAFT_2组脱机备份还原
          1. RAFT_2(BP21)

对BP21进行脱机备份

mkdir -p /data/backup/bp21

chown -R dmdba:dinstall /data

chmod -R 775 /data

dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/bp21/DAMENG/dm.ini' FULL TO bp21bak01 BACKUPSET '/data/backup/bp21/bp21bak_01'" USE_AP=2

将 BP11 的备份文件脱机还原到 BP12/BP13

这里在同一台机器,直接用BP11的备份恢复

          1. RAFT_2(BP22)

//还原数据库:(在同一台机器,直接用bp21备份目录还原)

dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/bp22/DAMENG/dm.ini' FROM BACKUPSET  '/data/backup/bp21/bp11bak_01'" USE_AP=2

//因为脱机备份没有产生任何REDO日志,所以此处省略恢复数据库的操作步骤

//更新数据库:

dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/bp22/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2

          1. RAFT_3(BP23)

//还原数据库:(在同一台机器,直接用bp21备份目录还原)

dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/bp23/DAMENG/dm.ini' FROM BACKUPSET  '/data/backup/bp21/bp11bak_01'" USE_AP=2

//因为脱机备份没有产生任何REDO日志,所以此处省略恢复数据库的操作步骤

//更新数据库:

dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/bp23/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2

      1. 开启BP RAFT_1组和RAFT_2组(RAFT归档)

RAFT_1 组各实例(BP11、BP12、BP13)和 RAFT_2 组各实例(BP21、BP22、BP23)中 dm.ini 文件的配置方法完全相同。

        1. 建归档目录

mkdir -p /dm8/data/bp11/DAMENG/arch

mkdir -p /dm8/data/bp12/DAMENG/arch

mkdir -p /dm8/data/bp13/DAMENG/arch

mkdir -p /dm8/data/bp21/DAMENG/arch

mkdir -p /dm8/data/bp22/DAMENG/arch

mkdir -p /dm8/data/bp23/DAMENG/arch

        1. dm.ini打开归档
  1. 配置BP11的dm.ini

vi /dm8/data/bp11/DAMENG/dm.ini

ARCH_INI = 1   #打开归档配置

ALTER_MODE_STATUS = 0 #不允许用户直接通过 SQL 语句修改服务器模式

  1. 配置BP12的dm.ini

vi /dm8/data/bp11/DAMENG/dm.ini

ARCH_INI = 1   #打开归档配置

ALTER_MODE_STATUS = 0 #不允许用户直接通过 SQL 语句修改服务器模式

  1. 配置BP13的dm.ini

vi /dm8/data/bp13/DAMENG/dm.ini

ARCH_INI = 1   #打开归档配置

ALTER_MODE_STATUS = 0 #不允许用户直接通过 SQL 语句修改服务器模式

  1. 配置BP21的dm.ini

vi /dm8/data/bp21/DAMENG/dm.ini

ARCH_INI = 1   #打开归档配置

ALTER_MODE_STATUS = 0 #不允许用户直接通过 SQL 语句修改服务器模式

  1. 配置BP22的dm.ini

vi /dm8/data/bp21/DAMENG/dm.ini

ARCH_INI = 1   #打开归档配置

ALTER_MODE_STATUS = 0 #不允许用户直接通过 SQL 语句修改服务器模式

  1. 配置BP23的dm.ini

vi /dm8/data/bp23/DAMENG/dm.ini

ARCH_INI = 1   #打开归档配置

ALTER_MODE_STATUS = 0 #不允许用户直接通过 SQL 语句修改服务器模式

        1. 配置 BP11 RAFT归档

修改 DMARCH.INI,配置 RAFT 归档与本地归档. 当前实例为 BP11,需要向 BP12、BP13 同步数据,因此RAFT归档中的ARCH_DEST分别配置为BP12、BP13。

vi /dm8/data/bp11/BP/dmarch.ini

XMAL_HB_INTERVAL  = 5      #节点通信检测间隔

RAFT_HB_INTERVAL  = 150    #选举心跳间隔

RAFT_VOTE_INTERVAL = 1000  #选举超时时间,三个库设置不同以尽快选出主库

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/bp11/DAMENG/arch  #本地归档文件路径

ARCH_FILE_SIZE = 2048   #本地单个归档文件最大值,单位MB

ARCH_SPACE_LIMIT = 0   #本地归档文件总大小,0表示无限制

        1. 配置 BP12 RAFT归档

当前实例为 BP12,系统配置完成后,可能在各种故障处理中,BP12 可能选为 Leader。

而原来的 Leader 会切换为 Follower。此时 BP12 需要向 BP11 和 BP13 同步数据,因此 RAFT归档的 ARCH_DEST 分别配置为 BP11 和 BP13。

vi /dm8/data/bp12/DAMENG/dmarch.ini

XMAL_HB_INTERVAL  = 5      #节点通信检测间隔

RAFT_HB_INTERVAL  = 150    #选举心跳间隔

RAFT_VOTE_INTERVAL = 1500  #选举超时时间,三个库设置不同以尽快选出主库

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/bp12/DAMENG/arch  #本地归档文件路径

ARCH_FILE_SIZE = 2048   #本地单个归档文件最大值,单位MB

ARCH_SPACE_LIMIT = 0   #本地归档文件总大小,0表示无限制

        1. 配置 BP13 RAFT归档

当前实例为 BP13,系统配置完成后,可能在各种故障处理中,BP13 可能选为组内 Leader。

而原来的 Leader 会切换为 Follower。此时 BP13 需要向 BP11 和 BP12 同步数据,因此 RAFT归档的 ARCH_DEST 分别配置为 BP11 和 BP12。

vi /dm8/data/bp13/DAMENG/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/bp13/DAMENG/arch  #本地归档文件路径

ARCH_FILE_SIZE = 2048   #本地单个归档文件最大值,单位MB

ARCH_SPACE_LIMIT = 0   #本地归档文件总大小,0表示无限制

        1. 配置 BP21 RAFT归档

修改 DMARCH.INI,配置 RAFT 归档与本地归档. 当前实例为 BP21,需要向 BP22、BP23 同步数据,因此RAFT归档中的ARCH_DEST分别配置为BP22、BP23。

vi /dm8/data/bp21/BP/dmarch.ini

XMAL_HB_INTERVAL  = 5      #节点通信检测间隔

RAFT_HB_INTERVAL  = 150    #选举心跳间隔

RAFT_VOTE_INTERVAL = 1000  #选举超时时间,三个库设置不同以尽快选出主库

RAFT_SELF_ID = 5           #多副本自身节点 ID

[ARCHIVE_RAFT1]

ARCH_TYPE  = RAFT       #RAFT 归档

ARCH_DEST  = BP22  #归档目标实例名

ARCH_DEST_ID = 6        #归档目标多副本节点ID

[ARCHIVE_RAFT2]

ARCH_TYPE  = RAFT       #RAFT 归档

ARCH_DEST  = BP23  #归档目标实例名

ARCH_DEST_ID  = 7       #归档目标多副本节点ID

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dm8/data/bp21/DAMENG/arch  #本地归档文件路径

ARCH_FILE_SIZE = 2048   #本地单个归档文件最大值,单位MB

ARCH_SPACE_LIMIT = 0   #本地归档文件总大小,0表示无限制

        1. 配置 BP22 RAFT归档

当前实例为 BP22,系统配置完成后,可能在各种故障处理中,BP22 可能选为 Leader。

而原来的 Leader 会切换为 Follower。此时 BP22 需要向 BP21 和 BP23 同步数据,因此 RAFT归档的 ARCH_DEST 分别配置为 BP21 和 BP23。

vi /dm8/data/bp22/DAMENG/dmarch.ini

XMAL_HB_INTERVAL  = 5      #节点通信检测间隔

RAFT_HB_INTERVAL  = 150    #选举心跳间隔

RAFT_VOTE_INTERVAL = 1500  #选举超时时间,三个库设置不同以尽快选出主库

RAFT_SELF_ID = 6           #多副本自身节点 ID

[ARCHIVE_RAFT1]

ARCH_TYPE  = RAFT       #RAFT 归档

ARCH_DEST  = BP21  #归档目标实例名

ARCH_DEST_ID = 5        #归档目标多副本节点ID

[ARCHIVE_RAFT2]

ARCH_TYPE  = RAFT       #RAFT 归档

ARCH_DEST  = BP23  #归档目标实例名

ARCH_DEST_ID  = 7       #归档目标多副本节点ID

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dm8/data/bp22/DAMENG/arch  #本地归档文件路径

ARCH_FILE_SIZE = 2048   #本地单个归档文件最大值,单位MB

ARCH_SPACE_LIMIT = 0   #本地归档文件总大小,0表示无限制

        1. 配置 BP23 RAFT归档

当前实例为 BP23,系统配置完成后,可能在各种故障处理中,BP23 可能选为组内 Leader。

而原来的 Leader 会切换为 Follower。此时 BP23 需要向 BP21 和 BP22 同步数据,因此 RAFT归档的 ARCH_DEST 分别配置为 BP21 和 BP22。

vi /dm8/data/bp23/DAMENG/dmarch.ini

XMAL_HB_INTERVAL  = 5      #节点通信检测间隔

RAFT_HB_INTERVAL  = 150    #选举心跳间隔

RAFT_VOTE_INTERVAL = 2000  #选举超时时间,三个库设置不同以尽快选出主库

RAFT_SELF_ID = 7           #多副本自身节点 ID

[ARCHIVE_RAFT1]

ARCH_TYPE  = RAFT       #RAFT 归档

ARCH_DEST  = BP21  #归档目标实例名

ARCH_DEST_ID = 5        #归档目标多副本节点ID

[ARCHIVE_RAFT2]

ARCH_TYPE  = RAFT       #RAFT 归档

ARCH_DEST  = BP22       #归档目标实例名

ARCH_DEST_ID  = 6       #归档目标多副本节点ID

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dm8/data/bp23/DAMENG/arch  #本地归档文件路径

ARCH_FILE_SIZE = 2048   #本地单个归档文件最大值,单位MB

ARCH_SPACE_LIMIT = 0   #本地归档文件总大小,0表示无限制

      1. 启动SP和RAFT组内所有BP
        1. 启动 SP

启动 SP 和 BP 没有先后之分。

后台启动

dm8dpc>$vi /dm8/script/dmspstart.sh

dmserver /dm8/data/sp1/DAMENG/dm.ini dpc_mode=SP

dm8dpc>$chmod +x dmspstart.sh

dm8dpc>$./dmspstart.sh&

        1. 启动 BP

此处以 RAFT_1 组的启动方式为例,三个 BP 的启动顺序没有要求,RAFT_2 组配置完成后,也按照相同方式启动即可。

dm8dpc>$vi /dm8/script/dmbpstart1.sh

dmserver /dm8/data/bp11/DAMENG/dm.ini dpc_mode=BP MOUNT

dmserver /dm8/data/bp12/DAMENG/dm.ini dpc_mode=BP MOUNT

dmserver /dm8/data/bp13/DAMENG/dm.ini dpc_mode=BP MOUNT

dm8dpc>$chmod +x dmbpstart1.sh

dm8dpc>$./dmbpstart1.sh &

dm8dpc>$vi /dm8/script/dmbpstart2.sh

dmserver /dm8/data/bp21/DAMENG/dm.ini dpc_mode=BP MOUNT

dmserver /dm8/data/bp22/DAMENG/dm.ini dpc_mode=BP MOUNT

dmserver /dm8/data/bp23/DAMENG/dm.ini dpc_mode=BP MOUNT

dm8dpc>$chmod +x dmbpstart2.sh

dm8dpc>$./dmbpstart2.sh &

启动完成后,RAFT 组内的 BP 会自动选出主库,待主库选举完成后,整个DMDPC系统即可正常运行。至此,DMDPC 集群搭建完毕。

MP、SP、BP 全部正常启动,且均处于 OPEN 状态,才是一个正常的 DMDPC 系统!

注意

当BP处于下述情况时,表示无可用BP,系统异常,报错“无效的系统状态”。无可用BP的情况为:
1.BP处于非OPEN状态;
2.BP尚未成功启动;
3.BP全部宕机;
4.BP如果是多副本环境,确认是否所有BP组都已经选举出主库,并且主库也已切换为Primary模式和Open状态。

      1. 连接 SP

DMDPC 搭建完成后,用户只需要连接对外提供服务的 SP,即可获得完整的数据库服务。

只有出于监控目的进行 V$视图的查询,或出于维护需要时,才允许直连 MP 和 BP,否则不允许再连接 MP 和 BP。切勿在 MP 和 BP 上执行大量 SQL 语句,否则可能会导致系统崩溃。

      1. 退出DMDPC

退出副本架构的 DMDPC 需要按正确顺序使用指定命令退出各节点。

第一步 使用 exit 命令退出所有 SP;

第二步 使用 exit all 命令依次退出每个 RAFT 组。在 BP 的每个 RAFT 组内中任一有效节点输入 exit all 命令或者对其发出信号 SIGUSR1(如 kill -10)即可对整个 RAFT 组执行协同退出,由有效 Leader 协同其余有效节点正常退出,无效节点不会参与协同退出。如果执行 exit all 命令的是无效节点,则会转为只在此节点进行退出(exit),多数情况下,无效节点的退出会由于无法推进 C_LSN 强制 HALT;

第三步 退出未参与 exit all 命令的 BP。使用 exit 命令依次退出所有剩余的无效 BP;

第四步 使用 exit 命令退出 MP。

注意

如果没有按正常顺序退出,可能会导致剩下的机器直接宕机。此时,只能对其他的机器采用强杀。这种服务器异常退出的情况,当再次重启的时候,服务器需要做大量的REDO日志,因此重启的时间会稍长一些,其它没有影响。

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值