您好,登录后才能下订单哦!
本篇内容介绍了“DM8 MPP的环境怎么搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
DM8 MPP环境搭建
1. 准备环境
本例配置一个两节点MPP。两个节点都配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机。两节点实例名分别为MEVI01和MEVI02,相关的IP、端口等规划见下表。
实例名 | MAL_INST_HOST | MAL_INST_PORT | MAL_HOST | MAL端口 | MPP_SEQNO |
MEVI01 | 192.168.18.171 | 5236 | 192.168.10.171 | 5269 | 0 |
MEVI02 | 192.168.18.172 | 5236 | 192.168.10.172 | 5269 | 1 |
DM MPP 各 EP 使用的 DM 服务器版本应一致,同时还应注意各 EP 所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,否则可能造成意想不到的错误。
2. 配置参数文件
1) 配置 dm.ini
首先,在 EP01 和 EP02 上分别创建数据库,用户可以使用 DM 的图形化客户端工具“数据库配置助手”或命令行工具 dminit 创建数据库。
在各 EP 上创建数据库时,要求有些初始化参数必须所有 EP 都相同。我们建议各 EP 的数据库初始化参数都保持一致,以免产生错误。
分别对两个实例的 dm.ini 进行配置。
修改 EP01的 dm.ini 的以下几个参数如下: INSTANCE_NAME = MEVI01 PORT_NUM = 5236 MAL_INI = 1 MPP_INI = 1 |
修改 EP02的 dm.ini 的以下几个参数如下: INSTANCE_NAME = MEVI02 PORT_NUM = 5236 MAL_INI = 1 MPP_INI = 1 |
2) 配置 dmmal.ini
为两个 EP 配置 dmmal.ini 如下,配置完全一样,EP 间可互相拷贝。dmmal.ini 与dm.ini 放在相同的目录下。
[MAL_INST1] MAL_INST_NAME = MEVI01 MAL_HOST = 192.168.10.171 MAL_PORT = 5269 MAL_INST_HOST = 192.168.18.171 MAL_INST_PORT = 5236
[MAL_INST2] MAL_INST_NAME = MEVI02 MAL_HOST = 192.168.10.172 MAL_PORT = 5269 MAL_INST_HOST = 192.168.18.172 MAL_INST_PORT = 5236 |
3) 配置 dmmpp.ctl
dmmpp.ctl 是一个二进制文件,用户不能直接配置,需要先配置 dmmpp.ini。
配置 dmmpp.ini 如下:
[SERVICE_NAME1] MPP_SEQ_NO = 0 MPP_INST_NAME = MEVI01
[SERVICE_NAME2] MPP_SEQ_NO = 1 MPP_INST_NAME = MEVI02 |
使用dmctlcvt 工具将 dmmpp.ini 转换成 dmmpp.ctl,dmctlcvt 工具在 DM 安装目录的“bin”子目录中。转换生成的 dmmpp.ctl 需要放在与 dm.ini 同一个目录。
[dmdba@mpp1 ~]$ dmctlcvt TYPE=2 SRC=/dmdata/MEVI/dmmpp.ini DEST=/dmdata/MEVI/dmmpp.ctl
[dmdba@mpp2 ~]$ dmctlcvt TYPE=2 SRC=/dmdata/MEVI/dmmpp.ini DEST=/dmdata/MEVI/dmmpp.ctl
3. 运行 MPP
经过前面的步骤,DM MPP 环境已经配置完成了。分别启动 MEVI01和 MEVI02的 DM 数据库实例(顺序不分先后),DM MPP 系统即能正常运行,用户就可以登录任一 EP 进行数据库操作了。
[dmdba@mpp1 ~]$ DmServiceMEVI01 start
Starting DmServiceMEVI01: [ OK ]
[dmdba@mpp2 ~]$ DmServiceMEVI02 start
Starting DmServiceMEVI02: [ OK ]
4. 建立分布表
DM MPP 支持表数据的哈希分布、随机分布、复制分布、范围分布、LIST 分布类型,用户可根据实际情况选择合适的分布类型。
MPP 的数据分布类型和具体设置在建表时指定,语法如下:
CREATE [[GLOBAL] TEMPORARY] TABLE <表名定义> <表结构定义>; <表结构定义>::=<表结构定义1> | <表结构定义2> <表结构定义1>::= (<列定义> {,<列定义>} [,<表级约束定义>{,<表级约束定义>}]) [ON COMMIT <DELETE | PRESERVE> ROWS] [<PARTITION子句>][<空间限制子句>] [<STORAGE子句>][<压缩子句>] [<ROW MOVEMENT子句>][<DISTRIBUTE子句>] <表结构定义2>::= [ON COMMIT <DELETE | PRESERVE> ROWS] [<空间限制子句>] [<STORAGE子句>] [<压缩子句>]AS <不带INTO的SELECT语句>[<DISTRIBUTE子句>]; <DISTRIBUTE子句>::=DISTRIBUTED[<RANDOMLY>|<FULLY>] |DISTRIBUTED BY [<HASH>](<列名> {,<列名>}) |DISTRIBUTED BY RANGE (<列名> {,<列名>})(<范围分布项> {,<范围分布项>}) |DISTRIBUTED BY LIST (<<列名> {,<列名>}>)(<LIST分布项> {,<LIST分布项>}) <范围分布项>::= VALUES LESS THAN (<表达式>{,<表达式>}) ON <实例名> |VALUES EQU OR LESS THAN (<表达式>{,<表达式>})ON <实例名> <LIST分布项>::= VALUES (<表达式>{,<表达式>}) ON <实例名> |
测试:
#创建用户和表空间: #以下操作在任意EP节点执行,所有EP节点都可见: SQL> create tablespace MEVI datafile '/dmdata/MEVI/MEVI01.DBF' size 64; SQL> create user mevi identified by "mevi123456" default tablespace mevi; SQL> grant RESOURCE,VTI to mevi; SQL> conn mevi/mevi123456 |
#创建哈希分布表 T_HASH,分布列为 C1。 SQL> create table t_hash(c1 int, c2 char(10)) distributed by hash (c1); |
#创建随机分布表 T_RANDOM。 SQL> create table t_random(c1 int, c2 char(10)) distributed randomly; |
#创建复制分布表 T_FULLY。 SQL> create table t_fully(c1 int, c2 char(10)) distributed fully; |
#创建范围分布表 T_RANGE,分布列为 C1。 SQL> create table t_range(c1 int, c2 char(10)) distributed by range (c1) (values equ or less than (100) on mevi01, values less than (maxvalue) on mevi02); |
#创建 LIST 分布表 T_LIST,分布列为 C1。 SQL> create table t_list(c1 int, c2 char(10)) distributed by list (c1) (values (6) on mevi01, values (8) on mevi02); |
#创建哈希分布表的范围水平分区表。 create table t_hash_range_partition (c1 int, c2 char(10), c3 char(10)) partition by range (c1) ( partition part_1 values less than(0) , partition part_2 values less than(10) , partition part_3 values less than(100) , partition part_4 values less than(maxvalue) ) distributed by hash (c1); |
在创建分布表时,用户应注意以下一些使用限制:
1) 单机模式下建的分布表和普通表一样,但是不能创建指定实例名的分布表(如范围分布表和LIST分布表);
2) 在MPP模式下创建分布表,如果未指定列则默认为RANDOMLY(随机)分布表;
3) 分布列类型不支持BLOB、CLOB、IMAGE、TEXT、LONGVARCHAR、BIT、BINARY、VARBINARY、LONGVARBINARY、BFILE、时间间隔类型、虚拟列和用户自定义类型;
4) HASH分布、RANGE分布、LIST分布允许更新分布列,并支持包含大字段列的表的分布列更新,但包含INSTEAD OF触发器的表、堆表不允许更新分布列;
5) 对于FULLY(复制)分布表,只支持单表查询的更新和删除操作,并且查询项或者条件表达式中都不能包含ROWID伪列表达式;
6) RANGE(范围)分布表和LIST(列表)分布表,分布列与分布列值列表必须一致,并且指定的实例名不能重复;
7) 引用约束的引用列和被引用列都必需包含分布列,且分布情况完全相同;
8) 随机分布表不支持UNIQUE索引。
5. 快速数据装载
DM MPP特别适合于海量数据的存储和处理,因此在应用中常常面临将大量数据从某个或某些历史数据库中装载到MPP系统的需求。为了满足海量数据的快速装载需求,DM提供了快速装载工具dmfldr,能够对DM单机版和MPP系统进行海量数据的快速装载。
dmfldr为命令行工具,使用时必须指定必要的执行参数。
dmfldr支持MPP环境下的两种数据加载模式:客户端分发模式和本地分发模式,通过参数MPP_CLIENT进行设置。使用客户端分发模式时,数据在dmfldr客户端进行分发然后直接向指定EP发送数据;使用本地分发模式时,每个EP对应一个dmfldr和一份数据,每个dmfldr只选择出对应本节点的数据并发送,不管其他节点的数据。默认使用客户端分发模式。
6. 停止 MPP 系统
需要停止DM MPP系统的运行时,只需要停止每个EP的DM实例即可,没有特别的顺序要求。
若在DM MPP系统的运行过程中,某一EP发生故障停机,则整个MPP系统将处于不能正常服务的状态。当前所有的用户会话会被系统断开,不能进行全局登录,只能进行本地登录。因此,为了保证MPP系统的高可用性,建议采用DM MPP与数据守护相结合的部署方案。
7. MPP的使用限制
DM MPP支持绝大多数单机版DM的功能,但在某些小的功能点使用上存在一些使用限制,具体如下:
1) MPP环境下,不支持创建SET NULL或SET DEFAULT约束检查规则的引用约束;
2) MPP环境下不支持创建外部表、间隔分区表;
3) MPP环境下不支持修改表的ADD [COLUMN] <列名>[<IDENTITY子句>]子句;
4) MPP环境下不支持创建位图索引、空间索引、数组索引;
5) MPP环境下位图连接索引涉及的维度表需FULLY分布;
6) MPP环境下不支持索引的ONLINE选项;
7) MPP环境下不支持视图的WITH CHECK OPTION操作;
8) MPP环境下不支持闪回查询;
9) MPP环境下不支持物化视图日志;
10) MPP各EP创建数据库时指定的编码格式应相同,否则可能造成乱码问题;
11) MPP环境下INI参数MVCC_RETRY_TIMES无效,发生MVCC冲突时直接报错;
12) MPP环境下不支持DBMS_JOB包;
13) MPP环境下日志辅助表不支持FULLY分布。
“DM8 MPP的环境怎么搭建”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。