达梦主备MPP

MPP分布式,相似分库分表,数据分散到几个节点数据库,登陆本地节点只能看到本节点数据库的数据,登陆全局数据库则能够看到全部节点数据库的数据,表数据安装必定规则分布。sql

架构图数据库


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

搭建部署
主备MPP首先是两套主备集群,在集群的基础上作的MPP架构

一、准备工做分布式


首先要有两套主备集群。ide

建立数据库:新建数据库作一次重启操做
主机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/dmui

相应主备库数据一致:
[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"

二、修改参数文件
主库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否则会报错

三、修改归档日志
主机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 

四、修改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

五、守护进程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 

六、监视器
监视器配置在第三台主机上,此处配置在主机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

七、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
复制到各主备数据库目录下


八、启动数据库
启动数据库到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
九、修改数据库角色和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

九、启动守护进程和监视器
启动守护
[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.
报错:

 

十、开机自启动
主机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分布在不一样的数据库中,可是全局查看倒是正常的。

本地登陆:

 

全局登陆

 

建立表空间:

相关文章
相关标签/搜索