达梦主备MPP

MPP分布式,类似分库分表,数据分散到几个节点数据库,登录本地节点只能看到本节点数据库的数据,登录全局数据库则可以看到所有节点数据库的数据,表数据安装一定规则分布。

架构图

DM MPP 中的每一个 DM 数据库服务器实例作为一个执行节点,简称 EP。客户端可连接任意一个 EP 节点进行操作,所有 EP 对客户来说都是对等的。
DM MPP 系统内每个 EP 只负责自身部分数据的读写,执行计划在所有 EP 并行执行,能充分利用各 EP 的计算能力及发挥各 EP 独立存储的优势。数据只在必要时通过 DM 的高速邮件 MAL 系统在 EP 间传递。当通信代价占整体执行代价的比例较小时,更能体现大规模并行处理的优势,随着系统规模的扩大,并行支路越多,优势越明显。

搭建部署

主备MPP首先是两套主备集群,在集群的基础上做的MPP

1、准备工作

首先要有两套主备集群。

创建数据库:新建数据库做一次重启操作
主机102
dminit extent_size=32 page_size=32 CASE_SENSITIVE=1 CHARSET=1 INSTANCE_NAME=MPP_102 DB_NAME=MPP_102 PORT_NUM=5237 path=/data/dm
dminit extent_size=32 page_size=32 CASE_SENSITIVE=1 CHARSET=1 INSTANCE_NAME=MPP_103_STA DB_NAME=MPP_103_STA PORT_NUM=5217 path=/data/dm

主机103
dminit extent_size=32 page_size=32 CASE_SENSITIVE=1 CHARSET=1 INSTANCE_NAME=MPP_103 DB_NAME=MPP_103 PORT_NUM=5217 path=/data/dm
dminit extent_size=32 page_size=32 CASE_SENSITIVE=1 CHARSET=1 INSTANCE_NAME=MPP_102_STA DB_NAME=MPP_102_STA PORT_NUM=5237 path=/data/dm

相应主备库数据一致:
[dmdba@v3 ~]$ dmrman CTLSTMT="BACKUP DATABASE  '/data/dm/MPP_103/dm.ini'  FULL TO BACKUP_FILE1 BACKUPSET '/data/dm/bak/103'"
[dmdba@v3 ~]$scp /data/dm/bak/103/* v2:/data/dm/bak/103

[dmdba@v2 ~]$ dmrman CTLSTMT="RESTORE DATABASE '/data/dm/MPP_103_STA/dm.ini'  FROM BACKUPSET '/data/dm/bak/103'"

[dmdba@v2 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/data/dm/MPP_103_STA/dm.ini'  FROM BACKUPSET '/data/dm/bak/103'"

[dmdba@v2 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/data/dm/MPP_103_STA/dm.ini'  UPDATE DB_MAGIC"

2、修改参数文件

主库102
[dmdba@v2 ~]$ cat /data/dm/MPP_102/dm.ini |grep 'INSTANCE_NAME\|PORT_NUM\|MAL_INI\|MPP_INI\|ARCH_INI'
        INSTANCE_NAME                   = MPP_102              #Instance name
        PORT_NUM                        = 5237                  #Port number on which the database server will listen
        MAL_INI                         = 1                     #dmmal.ini
        ARCH_INI                        = 1                     #dmarch.ini
        MPP_INI                         = 1                     #dmmpp.ini
备库102
[dmdba@v3 bak]$ cat /data/dm/MPP_102_STA/dm.ini |grep 'INSTANCE_NAME\|PORT_NUM\|MAL_INI\|MPP_INI\|ARCH_INI'
        INSTANCE_NAME                   = MPP_102_STA              #Instance name
        PORT_NUM                        = 5237                  #Port number on which the database server will listen
        MAL_INI                         = 1                     #dmmal.ini
        ARCH_INI                        = 1                     #dmarch.ini
        MPP_INI                         = 1                     #dmmpp.ini

主库103
[dmdba@v3 bak]$ cat /data/dm/MPP_103/dm.ini |grep 'INSTANCE_NAME\|PORT_NUM\|MAL_INI\|MPP_INI\|ARCH_INI'
        INSTANCE_NAME                   = MPP_103              #Instance name
        PORT_NUM                        = 5217                  #Port number on which the database server will listen
        MAL_INI                         = 1                     #dmmal.ini
        ARCH_INI                        = 1                     #dmarch.ini
        MPP_INI                         = 1                     #dmmpp.ini

备库103
[dmdba@v2 ~]$ cat /data/dm/MPP_103_STA/dm.ini |grep 'INSTANCE_NAME\|PORT_NUM\|MAL_INI\|MPP_INI\|ARCH_INI'
        INSTANCE_NAME                   = MPP_103_STA              #Instance name
        PORT_NUM                        = 5217                  #Port number on which the database server will listen
        MAL_INI                         = 1                     #dmmal.ini
        ARCH_INI                        = 1                     #dmarch.ini
        MPP_INI                         = 1                     #dmmpp.ini

从库也要修改mpp_ini不然会报错

3、修改归档日志

主机102
[dmdba@v2 ~]$ cat /data/dm/MPP_102/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE    = REALTIME    #实时归档类型
ARCH_DEST    =MPP_102_STA    #实时归档目标实例名

[ARCHIVE_LOCAL1]
    ARCH_TYPE            = LOCAL        
    ARCH_DEST            = /data/dm/MPP_102/arch       
    ARCH_FILE_SIZE       = 128        
    ARCH_SPACE_LIMIT     = 1024

[dmdba@v2 ~]$ cat /data/dm/MPP_103_STA/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE    = REALTIME    #实时归档类型
ARCH_DEST    =MPP_103    #实时归档目标实例名

[ARCHIVE_LOCAL1]
    ARCH_TYPE            = LOCAL        
    ARCH_DEST            = /data/dm/MPP_103_STA/arch        
    ARCH_FILE_SIZE       = 128        
    ARCH_SPACE_LIMIT     = 1024

主机103
[dmdba@v3 bak]$ cat /data/dm/MPP_103/dmarch.ini 
[ARCHIVE_REALTIME]
ARCH_TYPE    = REALTIME    #实时归档类型
ARCH_DEST    =MPP_103_STA    #实时归档目标实例名

[ARCHIVE_LOCAL1]
    ARCH_TYPE            = LOCAL        
    ARCH_DEST            = /data/dm/MPP_103/arch        
    ARCH_FILE_SIZE       = 128        
    ARCH_SPACE_LIMIT     = 1024 

[dmdba@v3 bak]$ cat /data/dm/MPP_102_STA/dmarch.ini 
[ARCHIVE_REALTIME]
ARCH_TYPE    = REALTIME    #实时归档类型
ARCH_DEST    =MPP_102    #实时归档目标实例名

[ARCHIVE_LOCAL1]
    ARCH_TYPE            = LOCAL        
    ARCH_DEST            = /data/dm/MPP_102_STA/arch        
    ARCH_FILE_SIZE       = 128        
    ARCH_SPACE_LIMIT     = 1024 

4、修改dmmal.ini

dmmal.ini主备库一致

[dmdba@v2 ~]$ cat /data/dm/MPP_103_STA/dmmal.ini 
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = MPP_102 
MAL_HOST = 10.12.11.102
MAL_PORT = 5235

MAL_INST_HOST = 192.168.56.102
MAL_INST_PORT = 5237
MAL_DW_PORT  = 5233 
MAL_INST_DW_PORT = 5234
[MAL_INST2]
MAL_INST_NAME = MPP_102_STA
MAL_HOST = 10.12.11.103
MAL_PORT = 5235

MAL_INST_HOST = 192.168.56.103
MAL_INST_PORT = 5237
MAL_DW_PORT  = 5233
MAL_INST_DW_PORT = 5234

[MAL_INST3]
MAL_INST_NAME = MPP_103
MAL_HOST = 10.12.11.103
MAL_PORT = 5215

MAL_INST_HOST = 192.168.56.103
MAL_INST_PORT = 5217
MAL_DW_PORT  = 5213
MAL_INST_DW_PORT = 5214
[MAL_INST4]
MAL_INST_NAME = MPP_103_STA
MAL_HOST = 10.12.11.102
MAL_PORT = 5215

MAL_INST_HOST = 192.168.56.102
MAL_INST_PORT = 5217
MAL_DW_PORT  = 5213
MAL_INST_DW_PORT = 5214

5、守护进程watcher

每台主机上只能配置一个守护进程,因此将主机上的主备守护进程合并。
主机102
[dmdba@v2 ~]$ cat /data/dm/MPP_102/dmwatcher.ini 
[MPP_102] 
DW_TYPE    = GLOBAL                      
DW_MODE    = AUTO                       
DW_ERROR_TIME     = 10              
INST_RECOVER_TIME  = 60       
INST_ERROR_TIME   = 10              
INST_OGUID         = 45330         
INST_INI           = /data/dm/MPP_102/dm.ini             
INST_AUTO_RESTART  = 1                       
INST_STARTUP_CMD   = /data/dmdbms/bin/dmserver         
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

[MPP_103] 
DW_TYPE    = GLOBAL                      
DW_MODE    = AUTO                       
DW_ERROR_TIME     = 10              
INST_RECOVER_TIME  = 60       
INST_ERROR_TIME   = 10              
INST_OGUID         = 45331         
INST_INI           = /data/dm/MPP_103_STA/dm.ini             
INST_AUTO_RESTART  = 1                       
INST_STARTUP_CMD   = /data/dmdbms/bin/dmserver         
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

主机103
[dmdba@v3 bak]$ cat /data/dm/MPP_103/dmwatcher.ini
[MPP_103] 
DW_TYPE    = GLOBAL                      
DW_MODE    = AUTO                       
DW_ERROR_TIME     = 10              
INST_RECOVER_TIME  = 60       
INST_ERROR_TIME   = 10              
INST_OGUID         = 45331         
INST_INI           = /data/dm/MPP_103/dm.ini             
INST_AUTO_RESTART  = 1                       
INST_STARTUP_CMD   = /data/dmdbms/bin/dmserver         
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

[MPP_102] 
DW_TYPE    = GLOBAL                      
DW_MODE    = AUTO                       
DW_ERROR_TIME     = 10              
INST_RECOVER_TIME  = 60       
INST_ERROR_TIME   = 10              
INST_OGUID         = 45330         
INST_INI           = /data/dm/MPP_102_STA/dm.ini             
INST_AUTO_RESTART  = 1                       
INST_STARTUP_CMD   = /data/dmdbms/bin/dmserver 

6、监视器

监视器配置在第三台主机上,此处配置在主机103上

[dmdba@v3 bak]$ cat /data/dm/MPP_103/dmmonitor.ini 
MON_DW_CONFIRM = 0                    =====MON_DW_CONFIRM:0是普通监视器,1是确认监视器
MON_LOG_PATH = /data/dmdbms/log
MON_LOG_INTERVAL  = 60 
MON_LOG_FILE_SIZE = 32 
MON_LOG_SPACE_LIMIT = 0
[MPP_102]                                              ====与守护进程dmwatcher.ini一致
MON_INST_OGUID = 45330
MON_DW_IP = 10.12.11.102:5233
MON_DW_IP = 10.12.11.103:5233
[MPP_103]                                             ====与守护进程dmwatcher.ini一致
MON_INST_OGUID = 45331
MON_DW_IP = 10.12.11.102:5213
MON_DW_IP = 10.12.11.103:5213

7、mpp.ini配置

[dmdba@v3 bak]$ cat /data/dm/MPP_103/dmmpp.ini 
[service_name1]
mpp_seq_no = 0
mpp_inst_name  = MPP_102
[service_name2]
mpp_seq_no = 1
mpp_inst_name  = MPP_103
编辑dmmpp.ini文件生成dmmpp.ctl
[dmdba@v3 bak]$ dmctlcvt  TYPE=2  SRC=/data/dm/MPP_103/dmmpp.ini DEST=/data/dm/MPP_103/dmmpp.ctl
复制到各主备数据库目录下


8、启动数据库

启动数据库到mount状态,启动顺序与主备集群一致
主备102
[dmdba@v2 ~]$ dmserver /data/dm/MPP_102/dm.ini mount

[dmdba@v3 ~]$ dmserver /data/dm/MPP_102_STA/dm.ini mount
主备103
[dmdba@v3 ~]$ dmserver /data/dm/MPP_103/dm.ini mount

[dmdba@v2 ~]$ dmserver /data/dm/MPP_103_STA/dm.ini mount
9、修改数据库角色和oguid

此时数据库已经是MPP架构在登陆时,要注意:
 
修改时,主备库先disql登录后在修改

v102主库
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(45330);
SQL> alter database primary;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
v102备库
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(45330);
SQL> alter database standby;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

v103主库
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(45331);
SQL> alter database primary;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
v103备库
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(45331);
SQL> alter database standby;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);


[dmdba@v2 dm]$ disql SYSDBA/SYSDBA@192.168.56.102:5217

[dmdba@v2 dm]$ disql SYSDBA/SYSDBA*local@192.168.56.102:5237

9、启动守护进程和监视器

启动守护
[dmdba@v2 ~]$ dmwatcher /data/dm/MPP_102/dmwatcher.ini 
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

[dmdba@v3 ~]$ dmwatcher /data/dm/MPP_103/dmwatcher.ini 
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

守护会将数据库由mount---》open

启动监视器:
[dmdba@v3 ~]$ dmmonitor /data/dm/MPP_103/dmmonitor.ini
[monitor]         2021-02-20 14:27:06: DMMONITOR[4.0] V8
[monitor]         2021-02-20 14:27:06: DMMONITOR[4.0] IS READY.
报错:

10、开机自启动

主机102
[root@v2 ~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dm/MPP_102/dm.ini -p MPP_102
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceMPP_102.service to /usr/lib/systemd/system/DmServiceMPP_102.service.
创建服务(DmServiceMPP_102)完成
[root@v2 ~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dm/MPP_103_STA/dm.ini -p MPP_103_STA
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceMPP_103_STA.service to /usr/lib/systemd/system/DmServiceMPP_103_STA.service.
创建服务(DmServiceMPP_103_STA)完成
[root@v2 ~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /data/dm/MPP_102/dmwatcher.ini -p MPP_102
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceMPP_102.service to /usr/lib/systemd/system/DmWatcherServiceMPP_102.service.
创建服务(DmWatcherServiceMPP_102)完成

主机103
[root@v3 ~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dm/MPP_103/dm.ini -p MPP_103
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceMPP_103.service to /usr/lib/systemd/system/DmServiceMPP_103.service.
创建服务(DmServiceMPP_103)完成
[root@v3 ~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dm/MPP_102_STA/dm.ini -p MPP_102_STA
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceMPP_102_STA.service to /usr/lib/systemd/system/DmServiceMPP_102_STA.service.
创建服务(DmServiceMPP_102_STA)完成
[root@v3 ~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /data/dm/MPP_103/dmwatcher.ini -p MPP_103
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceMPP_103.service to /usr/lib/systemd/system/DmWatcherServiceMPP_103.service.
创建服务(DmWatcherServiceMPP_103)完成
[root@v3 ~]# /data/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -monitor_ini /data/dm/MPP_103/dmmonitor.ini -p MPP_103
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMPP_103.service to /usr/lib/systemd/system/DmMonitorServiceMPP_103.service.
创建服务(DmMonitorServiceMPP_103)完成

客户端访问

本地登录:

[dmdba@v3 ~]$ disql SYSDBA/SYSDBA*LOCAL@192.168.56.103:5217

全局登录

disql SYSDBA/SYSDBA@192.168.56.103:5217

manger工具:
 

也可以使用DCP代理访问,此处不作详细介绍。

MPP的使用

通过管理工具全局登录

CREATE TABLE T_HASH1(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);

insert into SYSDBA.T_HASH VALUES (1,'q'); 
insert into SYSDBA.T_HASH VALUES (2,'w'); 
commit;

数据根据表的hash分布在不同的数据库中,但是全局查看却是正常的。

本地登录:

全局登录

创建表空间:

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值