服务器硬件需求
按实际业务需求,选择合适的服务器,准备 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 | 单独挂载磁盘 |
防火墙设置
端口规划
搭建 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 |
验证集群
客户端登录任意节点。
查询可以看到所有节点实例信息。
参数优化
集群部署完成后,需要优化 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
。