实例名 MAL_INST_HOST MAL_INST_PORT MAL_HOST MAL MAL_PORT MPP_SEQNO
EP01 192.168.1.131 5236 192.168.0.141 5269 0
EP02 192.168.1.132 5237 192.168.0.142 5270 1
在各EP上创建数据库时,要求有些初始化参数必须所有 EP 都相同,我们建议各 EP 的数据库初始化参数都保持一致,以免产生错误
配置项 配置含义
INSTANCE_NAME 数据库实例名(长度不超过 16 个字符)
PORT_NUM DM服务器通讯端口号, 有效值范围(1024~65534)
MAL_INI MAL系统配置开关,0 表示不启用 MAL 系统,1 表示启用 MAL 系统,默认值为 0
MPP_INI MPP系统配置开关,0 表示不启用 MPP 系统,1 表示启用 MPP 系统,默认值为 0
MAX_EP_SITES MPP 环境下 EP 节点的最大数量,有效值范围(2~1024),默认值为64
MPP_HASH_LR_RATE MPP 下,对 HASH JOIN 节点,可以根据左右儿子 CARD 代价的比值,调整 HASH_JOIN 的左右儿子的 MOTION 添加,从而影响计划。如果CARD 比值超过此值,则小数据量的一方全部收集到主 EP 来做。取值范围(1~4294967294),默认值为 10
MPP_OP_JUMP MPP 系统中操作符的跳转开关,是否支持通讯操作符的跳转功能。1:支持;0:不支持。取值范围:0、1,默认值为 1
PHF_NTTS_OPT MPP系统中是否进行NTTS计划的优化,打开时可能减少计划中的NTTS 操作符。1:支持;0:不支持。取值范围:0、1,默认值为 1
在 EP01 和 EP02 上分别创建数据库,图形和dminit命令均可
./dminit INI_FILE=/dm/data/DAMENG/dm.ini /
PATH=/dm/data /
DB_NAME=DAMENG /
INSTANCE_NAME=EP01 /
PORT_NUM=5236 /
PAGE_SIZE=8 /
SYSDBA_PWD=aaaaaaaaaaa /
SYSAUDITOR_PWD=aaaaaaaaaa /
TIME_ZONE=+08:00 PAGE_CHECK=0
./dminit INI_FILE=/dm/data/DAMENG/dm.ini /
PATH=/dm/data /
DB_NAME=DAMENG /
INSTANCE_NAME=EP02 /
PORT_NUM=5236 /
PAGE_SIZE=8 /
SYSDBA_PWD=aaaaaaaaaaa /
SYSAUDITOR_PWD=aaaaaaaaaa /
TIME_ZONE=+08:00 PAGE_CHECK=0
分别对两个实例的 dm.ini 进行配置。
修改 EP01 的 dm.ini 的以下几个参数如下:
INSTANCE_NAME = EP01
PORT_NUM = 5236
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
MPP_INI = 1 #启用 MPP 配置
修改 EP02 的 dm.ini 的以下几个参数如下:
INSTANCE_NAME = EP02
PORT_NUM = 5236
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
MPP_INI = 1 #启用 MPP 配置
配置 dmmal.ini
[MAL_INST1]
MAL_INST_NAME = EP01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.0.141 #MAL 系统监听 TCP 连接的端口
MAL_PORT = 5269 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
[MAL_INST2]
MAL_INST_NAME = EP02
MAL_HOST = 192.168.0.142
MAL_PORT = 5270
MAL_INST_HOST = 192.168.1.132
MAL_INST_PORT = 5236
配置 dmmpp.ctl
dmmpp.ctl 是一个二进制文件,用户不能直接配置,需要先配置 dmmpp.ini。
配置 dmmpp.ini 如下
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = EP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = EP02
使用工具 dmctlcvt 将 dmmpp.ini 转换成 dmmpp.ctl,
转换生成的 dmmpp.ctl 需要放在与 dm.ini 同一个目录
dmctlcvt TYPE=2 SRC=/dm/data/DAMENG/dmmpp.ini DEST=/dm/data/dmmpp.ctl
mv /dm/data/dmmpp.ctl /dm/data/DAMENG/
将生成的 dmmpp.ctl 拷贝至另一 EP,保证 MPP 系统中所有 EP 的 dmmpp.ctl 完全相同
scp /dm/data/DAMENG/dmmpp.ctl 192.168.0.142:/dm/data/DAMENG/
vim dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = EP01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/data/DAMENG/arch
ARCH_FILE_SIZE = 128
运行 MPP
经过前面的步骤,DM MPP环境已经配置完成了。
分别启动EP01 和 EP02 的 DM 数据库实例(顺序不分先后),
DM MPP系统即能正常运行,用户就可以登录任一 EP 进行数据库操作了。
EP01
./dmserver /dm/data/DAMENG/dm.ini
EP02
./dmserver /dm/data/DAMENG/dm.ini
建立分布表
创建哈希分布表 FAN_HASH,分布列为 C1
在EP01创建表
CREATE TABLE FAN_HASH(C1 INT, C2 CHAR(10)) DISTRIBUTED BY HASH (C1);
在EP02上查看表
desc FAN_HASH
创建随机分布表 FAN_RANDOM
在EP02上的创建表
CREATE TABLE FAN_RANDOM(C1 INT, C2 CHAR(10))DISTRIBUTED RANDOMLY;
例 3:创建复制分布表 FAN_FULLY。
CREATE TABLE FAN_FULLY(C1 INT, C2 CHAR(10))DISTRIBUTED FULLY;
例 4:创建范围分布表 FAN_RANGE,分布列为 C1。
CREATE TABLE FAN_RANGE (C1 INT, C2 CHAR(10))
DISTRIBUTED BY RANGE (C1) (VALUES EQU OR LESS THAN (100) ON EP01, VALUES LESS
THAN(MAXVALUE) ON EP02);
例 5:创建 LIST 分布表 FAN_LIST,分布列为 C1。
CREATE TABLE FAN_LIST(C1 INT, C2 CHAR(10))
DISTRIBUTED BY LIST (C1) (VALUES(3) ON EP01,VALUES(4) ON EP02);
例 6:创建哈希分布表的范围水平分区表。
CREATE TABLE FAN_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);
测试:
创建用户和表空间:
以下操作在任意EP节点执行,所有EP节点都可见:
create tablespace fandba datafile ‘/dm/data/DAMENG/fandba01.DBF’ size 64;
create user fandba identified by “12345678ab” default tablespace fandba;
grant resource to fandba;
在创建分布表时,用户应注意以下一些使用限制:
1)单机模式下建的分布表和普通表一样,但是不能创建指定实例名的分布表(如范围分布表和 LIST 分布表);
2)在 MPP 模式下创建分布表,如果未指定列则默认为 RANDOMLY(随机)分布表;
3)分布列类型不支持 BLOB、CLOB、IMAGE、TEXT、LONGVARCHAR、BIT、BINARY、VARBINARY、LONGVARBINARY、时间间隔类型和用户自定义类型;
4)HASH 分布、RANGE 分布、LIST 分布允许更新分布列,并支持包含大字段列的表的分布列更新,但包含 INSTEAD OF 触发器的表、垂直分区表、堆表不允许更新分布列;
5)对于 FULLY(复制)分布表,只支持单表查询的更新和删除操作,并且查询项或者条件表达式中都不能包含 ROWID 伪列表达式;
6)RANGE(范围)分布表和 LIST(列表)分布表,分布列与分布列值列表必须一致,并且指定的实例名不能重复; 引用约束的引用列和被引用列都必需包含分布列,且分布情况完全相同;
7)随机分布表不支持 UNIQUE 索引。
MPP的使用限制
DM MPP 支持绝大多数单机版 DM 的功能,但在某些小的功能点使用上存在一些使用限制,具体如下:
1)MPP 环境下,不支持创建 SET NULL 或 SET DEFAULT 约束检查规则的引用约束;
2)MPP 环境下不支持创建外部表;
3)MPP 环境下不支持修改表的 ADD [COLUMN] <列名>[ ]子句;
4)MPP 环境下不支持创建函数索引、位图索引、空间索引、数组索引;
5)MPP 环境下不支持索引的 ONLINE 选项;
6)MPP 环境下不支持视图的 WITH CHECK OPTION 操作;
7)MPP 环境下不支持闪回查询;
8)MPP 环境下不支持物化视图日志。
版权声明:本文为博主原创文章,未经博主允许不得转载。
达梦
- 上一篇:达梦8 DMDSC集群数据库搭建
- 下一篇:关于达梦8两节点MPP架构搭建





