共计 4899 个字符,预计需要花费 13 分钟才能阅读完成。
本篇内容介绍了“DM8 MPP 的环境怎么搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
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 的环境怎么搭建”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!