本章节主要介绍在生产环境中(Linux 系统)规范化部署大规模并行集群。
服务器硬件需求
按实际业务需求,选择合适的服务器,准备 2 台服务器,服务器参数建议如下:
硬件 要求
物理内存 >=16 GB
交换区 Swap 空间>=物理内存
/tmp大小 > 1000 MB
网络 物理机器需要 4 个网卡,2 个 public 网卡做 band,2 个 private 网卡做 band
磁盘 根据实际应用系统需要挂载合适大小磁盘
时间服务器 按机房要求配置连接时间服务器
操作系统要求
操作系统版本安装
DM 数据库安装在 Linux 操作系统所需条件:glibc 2.3 以上,内核 2.6,预先安装 UnixODBC,系统性能监控等组件。
目录与存储规划
用途 目录路径 备注
数据库软件安装目录 /home/dmdba/dmdbms 可用空间>50 GB
实例安装目录 /dmdata 单独挂载性能最好的磁盘建议 SSD
归档日志存放目录 /dmarch 单独挂载磁盘
备份文件存放目录 /dmbak 单独挂载磁盘
用户与组
DM 数据库不应该使用 root 用户安装和维护。需要在安装之前为 DM 数据库创建一个专用的系统用户 (dmdba) 和用户组 (dinstall)。
执行以下命令,新建用户组 dinstall。
Copy
groupadd dinstall
执行以下命令,新建用户 dmdba。
Copy
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
执行以下命令,修改 dmdba 用户密码。
Copy
passwd dmdba
输入密码并确认。
用户资源限制
执行以下命令,修改 dmdba 用户资源限制。
Copy
vim /etc/security/limits.conf
文件末尾添加如下内容:
Copy
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft stack 65536
dmdba hard stack 65536
用户环境变量
执行以下命令,修改 dmdba 用户环境变量。
Copy
vi /home/dmdba/.bash_profile
文件末尾添加如下内容:
Copy
export DM_HOME=/home/dmdba/dmdbms
export PATH=
P
A
T
H
:
PATH:
PATH:DM_HOME/bin
export LD_LIBRARY_PATH=
L
D
L
I
B
R
A
R
Y
P
A
T
H
:
LD_LIBRARY_PATH:
LDLIBRARYPATH:DM_HOME/bin
防火墙设置
端口规划
搭建 2 节点大规模并行集群,端口规划如下:(实际中可以按需要修改端口号)
主机名 public ip private ip 实例名 端口 用途
dmdsc1 192.168.56.11 10.0.0.11 dmmpp1 5236 数据库实例 dmmpp1 监听端口
dmdsc1 192.168.56.11 10.0.0.11 dmmpp1 7236 MAL 系统监听 TCP 连接的端口
dmdsc2 192.168.56.12 10.0.0.12 dmmpp2 5236 数据库实例 dmmpp2 监听端口
dmdsc2 192.168.56.12 10.0.0.12 dmmpp2 7236 MAL 系统监听 TCP 连接的端口
防火墙集群之间需开放以上所有端口,集群对客户端只需要开通数据库实例监听端口。
安装数据库
数据库软件安装详见单机规范化部署。
软件安装目录为 /home/dmdba/dmdbms,实例初始化目录 /home/dmdba/dmdbms/dmmpp,初始化脚本如下:
Copy
./dminit path=/home/dmdba/dmdbms db_name=dmmpp page_size=32
配置实例的配置文件 dm.ini
修改实例的 dm.ini 文件参数,执行以下命令:
Copy
vi /home/dmdba/dmdbms/dmmpp/dm.ini
dmmpp1 实例修改以下参数值:
Copy
INSTANCE_NAME = dmmpp1
MAL_INI = 1
MPP_INI = 1
dmmpp2 实例修改以下参数值:
Copy
INSTANCE_NAME = dmmpp2
MAL_INI = 1
MPP_INI = 1
配置MAL系统配置文件dmmal.ini
执行以下命令,在实例目录下新建文件 ·dmmal.ini·。
Copy
vi /home/dmdba/dmdbms/dmmpp/dmmal.ini
所有节点文件内容要相同。
Copy
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = dmmpp1 #与 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.0.0.11 #MAL 系统监听 TCP 内部网络 IP
MAL_PORT = 7236 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.56.11 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致
[MAL_INST2]
MAL_INST_NAME = dmmpp2 #与 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.0.0.12 # MAL 系统监听 TCP 内部网络 IP
MAL_PORT = 7236 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.56.12 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致
配置 MPP 控制文件 dmmpp.ctl
在其中一个节点新建 dmmpp.ini 配置文件,执行以下命令:
Copy
vi /home/dmdba/dmdbms/dmmpp/dmmpp.ini
添加以下内容:
Copy
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = dmmpp1
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = dmmpp2
使用 dmctlcvt 工具将 dmmpp.ini 文件转化为 dmmpp.ctl,在数据库安装的 bin 目录下执行以下命令:
Copy
./dmctlcvt TYPE=2 SRC=/home/dmdba/dmdbms/dmmpp/dmmpp.ini DEST=/home/dmdba/dmdbms/dmmpp/dmmpp.ctl
将生成的 dmmpp.ctl 控制文件复制到另一个节点的实例目录下。
启动集群
正常启动实例即可,在数据库安装的 bin 目录下执行以下命令:
Copy
./dmserver /home/dmdba/dmdbms/dmmpp/dm.ini
注意
需要所有节点都启动后,集群才能访问。
注册服务
root 用户下切换到 /home/dmdba/dmdbms/script/root/,执行以下命令:
Copy
cd /home/dmdba/dmdbms/script/root/
脚本注册服务,执行以下命令:
Copy
./dm_service_installer.sh -t dmserver -p dmmpp -dm_ini /home/dmdba/dmdbms/dmmpp/dm.ini
以服务方式启动实例,执行以下命令:
Copy
systemctl start DmServicedmmpp
验证集群
客户端登录任意节点。
登录mpp
查询可以看到所有节点实例信息。
参数优化
集群部署完成后,需要优化 dm.ini 参数,主备库都需要修改。参数值优化详见参数优化部分。
重启集群
所有节点重启实例,执行以下命令:
Copy
systemctl restart DmServicedmmpp
定制备份策略
备份与单机部署相同,详见定制备份策略部分。
客户端连接集群
客户端主机上需要配置 dm_svc.conf 文件(未安装 DM 数据库的机器新建即可),文件路径:
32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
在 Linux 平台下,此文件位于/etc 目录。
文件内容如下:
Copy
以#开头的行表示是注释
全局配置区
DMMPP=(192.168.56.11:5236,192.168.56.12:5236)
TIME_ZONE=(+480) #表示+8:00 时区
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
服务配置区
[DMMPP]
TIME_ZONE=(+540) #表示+9:00 时区
LOGIN_MODE=(2)
SWITCH_TIME=(3) #在服务器之间切换的次数
SWITCH_INTERVAL=(10) #在服务器之间切换的时间间隔,单位为毫秒
客户端程序连接数据库时,需要指定 ip 端口处替换为服务名即可,例如:
disql SYSDBA/SYSDBA@DMMPP
注意
当修改了 dm_svc.conf 内容后,需要重启客户端程序,修改的配置才能生效。