1 DM MPP
不适合于高并发操作的 OLTP 类型应用,如果网络是瓶颈,则并不是节点数越多越好。
建议配置千兆或万兆内部网络,对于查询连接中使用频率较高的连接键等可以考虑作为分布列。
2 DM MPP 环境搭建
实例名 | MAL_INST_HOST | MAL_INST_PORT | MAL_HOST | MAL端口 | MPP_SEQNO |
EP01 | 192.168.1.81 | 5236 | 172.16.1.81 | 5269 | 0 |
EP02 | 192.168.1.82 | 5236 | 172.16.1.82 | 5269 | 0 |
3 EP01 和 EP02 上分别创建数据库
3.1 清空防火墙策略
Centos7:
[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Redhat6:
service iptables stop
chkconfig iptables off
chkconfig --list iptables
3.2 安装用户(建议不要使用 root)
[root@localhost /]# groupadd dinstall -g 1002创建用户组dinstall
[root@localhost /]# useradd -g dinstall dmdba -u 1002创建属于dinstall用户组的用户dmdba
[root@localhost /]# passwd dmdba
输入一次密码
重新输入一次密码
创建成功
[root@localhost /]# mkdir /dm/dmdbms
[root@localhost /]# mkdir /dm/dmbak
[root@localhost /]# chown -R dmdba:dinstall /dm
[root@localhost /]# chown -R dmdba:dinstall /dbdata
[root@localhost /]# chown -R dmdba:dinstall /arch
3.3 配置 dmdba 用户环境变量
[dmdba@DM101 ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dm/dmdbms/bin
export DM_HOME=/dm/dmdbms
export PATH=$PATH:$HOME/bin:$DM_HOME/bin:$DM_HOME/script/root:$DM_HOME/tool
3.4 设置最大文件打开数
修改之后重启生效
[root@localhost /]# cp /etc/security/limits.conf /etc/security/limits.conf.bak
[root@localhost /]# vim /etc/security/limits.conf添加以下内容
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
临时生效:ulimit -n 65536
注意事项(强调):如果有该文件:/etc/security/limits.d/90-nproc.conf ,也需要修改。该文件主要限制 nproc,优先级比 /etc/security/limits.conf 高,即:如果 /etc/security/limits.d/90-nproc.conf 设置了 nproc 参数时,生效的是 /etc/security/limits.d/90-nproc.conf 文件中的限制,而不是 /etc/security/limits.conf 的限制
[root@localhost /]# cp /etc/security/limits.d/90-nproc.conf /etc/security/limits.d/90-nproc.conf.bak
[root@localhost /]# vim /etc/security/limits.d/90-nproc.conf
* soft nproc 65536
3.5 调整 Sysctl.conf(必做)
cp /etc/sysctl.conf /etc/sysctl.conf.bak
vim /etc/sysctl.conf
vm.swappiness = 0
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
:x保存退出
sysctl –p 立即生效
3.6 确认login配置
vim /etc/pam.d/login添加以下内容
session required /lib64/security/pam_limits.so
session required pam_limits.so
:x保存退出
3.7 关闭 selinux
setenforce 0
vim /etc/sysconfig/selinux
将SELINUX的值由默认的enforcing修改为disabled
:x保存退出重启生效
3.8 命令行安装
./DMInstall.bin –i
3.9 初始化
dminit PATH=/dbdata DB_NAME=EP1 INSTANCE_NAME=MPP1 PORT_NUM=5236
3.10 启动实例
[root@DM8 ~]# cd /dm/dmdbms/script/root/
[root@DM8 ~]# ./dm_service_installer.sh -t dmserver -p dmserver -dm_ini /dbdata/DAMENG/dm.ini
4 配置文件
4.1 dm.ini
分别对两个实例的 dm.ini 进行配置
/dmdba/dmdbms/data/DAMENG
修改MPP1的dm.ini的以下几个参数如下:
INSTANCE_NAME = MPP1
PORT_NUM = 5236
MAL_INI = 1
MPP_INI = 1
修改MPP2的dm.ini的以下几个参数如下:
INSTANCE_NAME = MPP2
PORT_NUM = 5237
MAL_INI = 1
MPP_INI = 1
4.2 配置 dmmal.ini
为两个MPP配置dmmal.ini如下,配置完全一样,MPP间可互相拷贝。dmmal.ini 与dm.ini放在相同的目录下。
[MAL_INST1]
MAL_INST_NAME = MPP1
MAL_HOST = 172.16.1.81
MAL_PORT = 5269
MAL_INST_HOST = 192.168.1.81
MAL_INST_PORT = 5236
[MAL_INST2]
MAL_INST_NAME = MPP2
MAL_HOST = 172.16.1.82
MAL_PORT = 5270
MAL_INST_HOST = 192.168.1.82
MAL_INST_PORT = 5237
4.3 配置 dmmpp.ctl
dmmpp.ctl是一个二进制文件,用户不能直接配置,需要先配置 dmmpp.ini。
配置 dmmpp.ini 如下:
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = MPP1
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = MPP2
使用 DM 提供的工具 dmctlcvt 将 dmmpp.ini 转换成 dmmpp.ctl,dmctlcvt 工具在 DM 安装目录的“bin”子目录中。转换生成的 dmmpp.ctl 需要放在与 dm.ini 同一个目录。假设 DM 的安装路径为 c 盘根目录,下面的命令将 dmmpp.ini 转换为 dmmpp.ctl,命令中的“TYPE=2”参数表示将文本文件转换成控制文件,也可以使用“TYPE=1”参数进行逆向转换。
/dm/dmdbms/bin/dmctlcvt TYPE=2 SRC=/dm/dmdbms/data/MPP1/dmmpp.ini DEST=/dm/dmdbms/data/MPP1/dmmpp.ctl
将生成的 dmmpp.ctl 拷贝至另一 EP,保证 MPP 系统中所有 EP 的 dmmpp.ctl 完全相同。
5 运行 MPP
经过前面四个步骤,DM MPP 环境已经配置完成了。分别启动 MPP1 和 MPP2 的 DM 数据库实例(顺序不分先后),DM MPP 系统即能正常运行,用户就可以登录任一 EP 进行数据库操作了。
6 创建分区表
创建哈希分布表 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 MPP1, VALUES LESS THAN(MAXVALUE) ON MPP2);
创建 LIST 分布表 T_LIST,分布列为 C1。
SQL> CREATE TABLE T_LIST(C1 INT, C2 CHAR(10)) DISTRIBUTED BY LIST (C1) (VALUES(3) ON MPP1,VALUES(4) ON MPP2);
创建哈希分布表的范围水平分区表。
SQL> 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);