1.服务器硬件需求
按实际业务需求,选择合适的服务器,准备 2 台服务器,服务器参数建议如下:
硬件 | 要求 |
物理内存 | >=16 GB |
交换区 | Swap 空间>=物理内存 |
/tmp大小 | > 1000 MB |
网络 | 物理机器需要 4 个网卡,2 个 public 网卡做 band,2 个 private 网卡做 band |
磁盘 | 根据实际应用系统需要挂载合适大小磁盘 |
时间服务器 | 按机房要求配置连接时间服务器 |
2.操作系统要求
DM 数据库安装在 Linux 操作系统所需条件:glibc 2.3 以上,内核 2.6,预先安装 UnixODBC,系统性能监控等组件。
3.目录与存储规划
用途 | 目录路径 | 备注 |
数据库软件安装目录 | /dm8 | 可用空间>50 GB |
实例安装目录 | /dmdata | 单独挂载性能最好的磁盘建议 SSD |
归档日志存放目录 | /dmarch | 单独挂载磁盘 |
备份文件存放目录 | /dmbak | 单独挂载磁盘 |
IP地址规划
本例配置一个两节点 MPP。两个节点都配置两块网卡,一块接入内部网络交换模块,一 块接入到外部交换机。两节点实例名分别为 EP01 和 EP02,相关的 IP、端口等规划见下表。
表 4.1 MPP 系统规划
实例名 | MAL_INST_HOST | MAL_INST_PORT | MAL_HOST | MAL 端口 | MPP_SEQNO |
EP01 | 192.168.175.121 | 5236 | 192.168.1.121 | 7236 | 0 |
EP02 | 192.168.175.122 | 5236 | 192.168.1.122 | 7236 | 1 |
节点一: [root@EP01 ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.175.121 netmask 255.255.255.0 broadcast 192.168.175.255 inet6 fe80::8d6f:53cd:8676:5a48 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:2e:77:6b txqueuelen 1000 (Ethernet) RX packets 942 bytes 143160 (139.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 251 bytes 43530 (42.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.121 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::eec:2fbc:146c:c6fd prefixlen 64 scopeid 0x20<link> ether 00:0c:29:2e:77:75 txqueuelen 1000 (Ethernet) RX packets 825 bytes 123456 (120.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 82 bytes 10224 (9.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 212 bytes 15600 (15.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 212 bytes 15600 (15.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:61:7a:9e txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@EP01 ~]# |
节点二: [root@EP02 ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.175.122 netmask 255.255.255.0 broadcast 192.168.175.255 inet6 fe80::8d6f:53cd:8676:5a48 prefixlen 64 scopeid 0x20<link> inet6 fe80::1dbb:2f9e:d4a2:ae55 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:f7:be:66 txqueuelen 1000 (Ethernet) RX packets 551 bytes 56619 (55.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 688 bytes 136123 (132.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.122 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::eec:2fbc:146c:c6fd prefixlen 64 scopeid 0x20<link> inet6 fe80::3ee5:3315:2136:19be prefixlen 64 scopeid 0x20<link> ether 00:0c:29:f7:be:70 txqueuelen 1000 (Ethernet) RX packets 346 bytes 33820 (33.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 650 bytes 112408 (109.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 212 bytes 15616 (15.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 212 bytes 15616 (15.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:61:7a:9e txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@EP02 ~]# |
4.新建用户与组
DM 数据库不应该使用 root 用户安装和维护。需要在安装之前为 DM 数据库创建一个专用的系统用户 (dmdba) 和用户组 (dinstall)。
执行以下命令,新建用户组 dinstall:
groupadd dinstall |
执行以下命令,新建用户 dmdba:
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba |
执行以下命令,修改 dmdba 用户密码。
passwd dmdba |
输入密码并确认。
5.用户资源限制
执行以下命令,修改 dmdba 用户资源限制:
vim /etc/security/limits.conf |
文件末尾添加如下内容:
dmdba soft core unlimited |
6.用户环境变量
执行以下命令,修改 dmdba 用户环境变量:
su - dmdba vi .bash_profile |
文件末尾添加如下内容:
export DM_HOME=/home/dmdba/dmdbms |
7.防火墙设置
关闭防火墙
8.端口规划
搭建 2 节点大规模并行集群,端口规划如下:(实际中可以按需要修改端口号)
主机名 | public ip | private ip | 实例名 | 端口 | 用途 |
DMUAT | 192.168.175.121 | 192.168.1.121 | dmmpp1 | 5236 | 数据库实例 dmmpp1 监听端口 |
DMUAT | 192.168.175.121 | 192.168.1.121 | dmmpp1 | 7236 | MAL 系统监听 TCP 连接的端口 |
DMUAT2 | 192.168.175.122 | 192.168.1.122 | dmmpp2 | 5236 | 数据库实例 dmmpp2 监听端口 |
DMUAT2 | 192.168.175.122 | 192.168.1.122 | dmmpp2 | 7236 | MAL 系统监听 TCP 连接的端口 |
防火墙集群之间需开放以上所有端口,集群对客户端只需要开通数据库实例监听端口。
9.安装数据库以及初始化实例
[dmdba@EP01 ~]$ cd /tools/ [dmdba@EP01 tools]$ ls DMInstall.bin [dmdba@EP01 tools]$ ./DMInstall.bin -help 获取安装模式参数失败!默认安装模式为图形化安装,命令行安装: ./DMInstall -i ,静默安装: ./DMInstall -q 配置文件路径. [dmdba@DSC01 tools]$ ./DMInstall.bin -i 请选择安装语言(C/c:中文 E/e:英文) [C/c]: 解压安装程序.......... 欢迎使用达梦数据库安装程序 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n 是否设置时区? (Y/y:是 N/n:否) [Y/y]: 设置时区: [ 1]: GTM-12=日界线西 [ 2]: GTM-11=萨摩亚群岛 [ 3]: GTM-10=夏威夷 [ 4]: GTM-09=阿拉斯加 [ 5]: GTM-08=太平洋时间(美国和加拿大) [ 6]: GTM-07=亚利桑那 [ 7]: GTM-06=中部时间(美国和加拿大) [ 8]: GTM-05=东部部时间(美国和加拿大) [ 9]: GTM-04=大西洋时间(美国和加拿大) [10]: GTM-03=巴西利亚 [11]: GTM-02=中大西洋 [12]: GTM-01=亚速尔群岛 [13]: GTM=格林威治标准时间 [14]: GTM+01=萨拉热窝 [15]: GTM+02=开罗 [16]: GTM+03=莫斯科 [17]: GTM+04=阿布扎比 [18]: GTM+05=伊斯兰堡 [19]: GTM+06=达卡 [20]: GTM+07=曼谷,河内 [21]: GTM+08=中国标准时间 [22]: GTM+09=汉城 [23]: GTM+10=关岛 [24]: GTM+11=所罗门群岛 [25]: GTM+12=斐济 [26]: GTM+13=努库阿勒法 [27]: GTM+14=基里巴斯 请选择设置时区 [21]: 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]: 所需空间: 1178M 请选择安装目录 [/home/dmdba/dmdbms]:/dm8 可用空间: 30G 是否确认安装路径(/dm8)? (Y/y:是 N/n:否) [Y/y]:y 安装前小结 安装位置: /dm8 所需空间: 1178M 可用空间: 30G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y 2022-04-24 19:26:09 [INFO] 安装达梦数据库... 2022-04-24 19:26:09 [INFO] 安装 基础 模块... 2022-04-24 19:26:12 [INFO] 安装 服务器 模块... 2022-04-24 19:26:12 [INFO] 安装 客户端 模块... 2022-04-24 19:26:15 [INFO] 安装 驱动 模块... 2022-04-24 19:26:17 [INFO] 安装 手册 模块... 2022-04-24 19:26:17 [INFO] 安装 服务 模块... 2022-04-24 19:26:18 [INFO] 移动日志文件。 2022-04-24 19:26:18 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /dm8/script/root/root_installer.sh 安装结束 [dmdba@DSC01 tools]$ [root@DSC01 ~]# /dm8/script/root/root_installer.sh 移动 /dm8/bin/dm_svc.conf 到/etc目录 修改服务器权限 创建DmAPService服务 Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service. 创建服务(DmAPService)完成 启动DmAPService服务 [root@DSC01 ~]# |
节点2数据库的安装,也是一样的方法
软件安装目录为 /dm8,实例初始化目录 /dm8/data/DAMENG,初始化脚本如下:
cd /dm8/bin ./dminit path=/dm8/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DMUAT INSTANCE_NAME=DMUAT PORT_NUM=5236 |
10.修改实例的配置文件 dm.ini
修改实例的 dm.ini 文件参数,执行以下命令:
vi /dm8/data/DAMENG/dm.ini |
EP01 实例修改以下参数值:
INSTANCE_NAME = EP01 |
EP02 实例修改以下参数值:
INSTANCE_NAME = EP02 |
11.配置MAL系统配置文件dmmal.ini
为所有EP节点 配置 dmmal.ini,配置完全一样,EP 间可互相拷贝。dmmal.ini 与
dm.ini放在相同目录下,如果没有dmmal.ini文件则新建一个。
执行以下命令,在实例目录下新建文件 dmmal.ini:
vi /dm8/data/DAMENG/dmmal.ini |
所有节点文件内容要相同。
节点1: [dmdba@EP01 DAMENG]$ pwd /dm8/data/DAMENG [dmdba@EP01 DAMENG]$ cat dmmal.ini MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 5 [MAL_INST1] MAL_INST_NAME = EP01 MAL_HOST = 192.168.1.121 MAL_PORT = 7236 MAL_INST_HOST = 192.168.175.121 MAL_INST_PORT = 5236 [MAL_INST2] MAL_INST_NAME = EP02 MAL_HOST = 192.168.1.122 MAL_PORT = 7236 MAL_INST_HOST = 192.168.175.122 MAL_INST_PORT = 5236 [dmdba@EP01 DAMENG]$ |
节点2: [dmdba@EP02 DAMENG]$ pwd /dm8/data/DAMENG [dmdba@EP02 DAMENG]$ cat dmmal.ini MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 5 [MAL_INST1] MAL_INST_NAME = EP01 MAL_HOST = 192.168.1.121 MAL_PORT = 7236 MAL_INST_HOST = 192.168.175.121 MAL_INST_PORT = 5236 [MAL_INST2] MAL_INST_NAME = EP02 MAL_HOST = 192.168.1.122 MAL_PORT = 7236 MAL_INST_HOST = 192.168.175.122 MAL_INST_PORT = 5236 [dmdba@EP02 DAMENG]$ |
12.配置 MPP 控制文件 dmmpp.ctl
dmmpp.ctl是一个二进制文件,用户不能直接配置,需要先配置dmmpp.ini,然后通过命令转换而成。
使用 DM 提供的工具 dmctlcvt 将 dmmpp.ini 转换成 dmmpp.ctl,dmctlcvt 工具 在 DM 安装目录的“bin”子目录中。
转换生成的 dmmpp.ctl 需要放在与 dm.ini 同一个目录
假设 DM 的安装路径为 c 盘 根目录,下面的命令将 dmmpp.ini 转换为 dmmpp.ctl,命令中的“TYPE=2”参数表示
将文本文件转换成控制文件,也可以使用“TYPE=1”参数进行逆向转换。
在其中一个节点新建 dmmpp.ini 配置文件,执行以下命令:
vi /dm8/data/DAMENG/dmmpp.ini |
添加以下内容:
MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 5 [SERVICE_NAME1] |
使用 dmctlcvt 工具将 dmmpp.ini 文件转化为 dmmpp.ctl,在数据库安装的 bin 目录下执行以下命令:
./dmctlcvt TYPE=2 SRC=/home/dm8/data/DAMENG/dmmpp.ini DEST=/dm8/data/DAMENG/dmmpp.ctl |
[dmdba@EP01 DAMENG]$ dmctlcvt TYPE=2 SRC=/dm8/data/DAMENG/dmmpp.ini DEST=/dm8/data/DAMENG/dmmpp.ctl DMCTLCVT V8 convert txt to ctl success! [dmdba@EP01 DAMENG]$ ls -ltr 总用量 820412 drwxr-xr-x 2 dmdba dinstall 6 4月 21 18:14 bak -rw-r--r-- 1 dmdba dinstall 481 4月 21 18:14 sqllog.ini -rw-r--r-- 1 dmdba dinstall 633 4月 21 18:14 dm_service.prikey -rw-r--r-- 1 dmdba dinstall 134217728 4月 21 18:14 MAIN.DBF drwxr-xr-x 2 dmdba dinstall 6 4月 21 18:14 HMAIN -rw-r--r-- 1 dmdba dinstall 847 4月 21 18:14 dminit20220421181404.log -rw-r--r-- 1 dmdba dinstall 10485760 4月 21 18:16 TEMP.DBF -rw-r--r-- 1 dmdba dinstall 268435456 4月 21 18:16 DAMENG02.log drwxr-xr-x 2 dmdba dinstall 6 4月 21 18:16 trace -rw-r--r-- 1 dmdba dinstall 12 4月 21 18:16 rep_conflict.log -rw-r--r-- 1 dmdba dinstall 5120 4月 21 18:16 dm.ctl drwxr-xr-x 2 dmdba dinstall 78 4月 21 18:16 ctl_bak -rw-r--r-- 1 dmdba dinstall 51176 4月 21 18:18 dm.ini.bak20220421 -rw-r--r-- 1 dmdba dinstall 24117248 4月 21 18:21 SYSTEM.DBF -rw-r--r-- 1 dmdba dinstall 134217728 4月 21 18:21 ROLL.DBF -rw-r--r-- 1 dmdba dinstall 51176 4月 21 18:25 dm.ini -rw-r--r-- 1 dmdba dinstall 369 4月 21 19:05 dmmal.ini -rw-r--r-- 1 dmdba dinstall 105 4月 21 19:08 dmmpp.ini -rw-r--r-- 1 dmdba dinstall 268435456 4月 21 19:11 DAMENG01.log -rw-r--r-- 1 dmdba dinstall 41540 4月 21 19:11 dmmpp.ctl [dmdba@EP01 DAMENG]$ |
将生成的 dmmpp.ctl 控制文件复制到另一个节点的实例目录下,保证MPP系统中所有EP的dmmpp.ctl完全相同。
13.启动集群
正常启动实例即可,在数据库安装的 bin 目录下执行以下命令:
cd /dm8/bin ./dmserver /home/dmdba/dmdbms/dmmpp/dm.ini |
14.注册服务
root 用户下切换到 /dm8/script/root/,执行以下命令:
cd /dm8/script/root/ |
脚本注册服务,执行以下命令:
./dm_service_installer.sh -t dmserver -p dmmpp -dm_ini /dm8/data/DAMENG /dm.ini |
EP01: [root@EP01 root]# pwd /dm8/script/root [root@EP01 root]# ls -ltr 总用量 44 -rwxr-xr-x 1 dmdba dinstall 9501 4月 20 18:52 dm_service_uninstaller.sh -rwxr-xr-x 1 dmdba dinstall 27256 4月 20 18:52 dm_service_installer.sh -rwxr-xr-x 1 dmdba dinstall 579 4月 20 18:52 root_installer.sh [root@EP01 root]# ./dm_service_installer.sh -t dmserver -p dmmpp -dm_ini /dm8/data/DAMENG/dm.ini Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmmpp.service to /usr/lib/systemd/system/DmServicedmmpp.service. 创建服务(DmServicedmmpp)完成 [root@EP01 root]# |
EP02: [root@EP02 root]# pwd /dm8/script/root [root@EP02 root]# ls dm_service_installer.sh dm_service_uninstaller.sh root_installer.sh [root@EP02 root]# ./dm_service_installer.sh -t dmserver -p dmmpp -dm_ini /dm8/data/DAMENG/dm.ini Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmmpp.service to /usr/lib/systemd/system/DmServicedmmpp.service. 创建服务(DmServicedmmpp)完成 [root@EP02 root]# |
以服务方式启动实例,执行以下命令:
systemctl start DmServicedmmpp.service 注意:实验过程中通过这个命令启停mpp都不行,报错 |
15.验证集群
客户端登录任意节点。
更多内容请查看达梦官方网站:https://eco.dameng.com