国产数据库之达梦数据库 - DM7 MPP集群安装配置

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介:
武汉达梦数据库作为国产数据库较有代表性的企业,在数据库研发方面投入了大量的精力,其自主研发的达梦数据库DM7,除了具有单机版可与Oracle相媲美的能力外,同时也研发了一款无共享MPP架构的数据库软件,主要面向在线分析(OLAP)领域。

下面的分享主要参考和使用达梦公司官网提供的下载包及安装文档,感兴趣的同学请自行下载。下载链接: http://www.dameng.com/service/download.shtml

1.MPP集群规划
本集群打算使用2台服务器,每台服务器规划3个数据库实例,总共6个实例组成的MPP集群。
2.首先创建数据库用户:dmdba(两台服务器都执行)
groupadd dinstall
useradd -g dinstall dmdba -m
passed dmdba
3.将软件包dm7_xxx.tar.gz上传到dmdba用户下,解压进行安装(两台服务器都执行,安装时各选项保持默认即可)
tar -zxf dm7_xxxxxxxx_neoky5.tar.gz
cd dm7_xxxxxxxx_neo5
chmod 777 DMInstall.bin
字符安装:./DMInstall.bin -i
安装完成后,/home/dbdba目录下生成dmdbms文件夹

4.配置环境变量并生效(两台服务器都执行)
su - dmdba
cd ~
vim .bash_profile
PATH=$PATH:$HOME/bin:/home/dmdba/dmdbms/bin
source .bash_profile
5.创建达梦数据目录,这里使用:/home/dmdba/dmdata/(两台服务器都执行)

6.分别在两台服务器上创建六个实例
这里我们使用dminit命令手工创建,这个命令将创建一个名为 EP0X的数据库实例,所在的文件路径在/home/dmdba/dmdata\EP0X下,mal_flag和mpp_flag都设置为1表示将启用多节点间的网络通讯,port_num=5236\37\38,表示该节点(数据库实例)的对外服务端口为5236。
主机1:
[dmdba@ha2 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP01 instance_name=EP01 port_num=5236 mal_flag=1 mpp_flag=1
[dmdba@ha2 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP02 instance_name=EP02 port_num=5237 mal_flag=1 mpp_flag=1
[dmdba@ha2 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP03 instance_name=EP03 port_num=5238 mal_flag=1 mpp_flag=1
主机2:
[dmdba@linux1 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP04 instance_name=EP04 port_num=5236 mal_flag=1 mpp_flag=1
[dmdba@linux1 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP05 instance_name=EP05 port_num=5237 mal_flag=1 mpp_flag=1
[dmdba@linux1 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP06 instance_name=EP06 port_num=5238 mal_flag=1 mpp_flag=1
7.配置集群邮件通信(两台服务器都执行)
前面我们已经创建好了6个集群实例,在启动它们前,还需要做一项配置工作。首先我们需要让这两个节点能互相通信,达梦数据库内部有一个通讯子系统,模仿真实世界的邮件网络,称为MAL。
分别在两台服务器编辑文件(内容相同):dmmal.ini,然后放入对应的三个实例目录下,例如:/home/dmdba/dmdbms/EP01
[dmdba@ha2 ~]$ cat dmmal.ini
[mal_inst1]
  mal_inst_name = EP01
  mal_host = 192.168.100.106
  mal_port = 5269
[mal_inst2]
  mal_inst_name = EP02
  mal_host = 192.168.100.106
  mal_port = 5270
[mal_inst3]
  mal_inst_name = EP03
  mal_host = 192.168.100.106
  mal_port = 5271
[mal_inst4]
  mal_inst_name = EP04
  mal_host = 192.168.100.107
  mal_port = 5269
[mal_inst5]
  mal_inst_name = EP05
  mal_host = 192.168.100.107
  mal_port = 5270
[mal_inst6]
  mal_inst_name = EP06
  mal_host = 192.168.100.107
  mal_port = 5271
将dmmal.ini分别复制到刚才新建的6个EP实例目录下:
[dmdba@ha2 ~]$ cp dmmal.ini dmdbms/EP01
[dmdba@ha2 ~]$ cp dmmal.ini dmdbms/EP02
[dmdba@ha2 ~]$ cp dmmal.ini dmdbms/EP03
[dmdba@linux1 ~]$ cp dmmal.ini dmdbms/EP04
[dmdba@linux1 ~]$ cp dmmal.ini dmdbms/EP05
[dmdba@linux1 ~]$ cp dmmal.ini dmdbms/EP06
8.配置集群之间协同工作
邮件模块是一个底层子系统,配置完成使得节点间可以通讯,至于是用于主/备还是读写分离等还需要上层决定,因此还需要配置多机协同工作模式。
首先配置dmmpp.ini,然后用工具生成ctl,另一个节点复制生成的ctl即可,最后把生成的dmmpp.ctl文件也放到那6个EP0X文件夹下面
[dmdba@ha2 ~]$ cat dmmpp.ini
mpp_2pc_flag = 0
[service_name1]
  mpp_seq_no = 0
  mpp_inst_name = EP01
[service_name2]
  mpp_seq_no = 1
  mpp_inst_name = EP02
[service_name3]
  mpp_seq_no = 2
  mpp_inst_name = EP03
[service_name4]
  mpp_seq_no = 3
  mpp_inst_name = EP04
[service_name5]
  mpp_seq_no = 4
  mpp_inst_name = EP05
[service_name6]
  mpp_seq_no = 5
  mpp_inst_name = EP06
备注:这里也有6项,分别表示有6个节点,其序号分别为0-6,其实例名分别为EP01-EP06, 注意这里的序号必须从0开始依次编号,实例名必须和dmmal.ini中对应。我们把这个文件命名为dmmpp.ini。

将ini文件转换为dmmpp.ctl文件:
dmctlcvt t2c dump.ini dmmpp.ctl
将文件分别复制到对应EP0X目录下:
[dmdba@ha2 ~]$ cp dmmpp.ctl dmdata/EP01/
[dmdba@ha2 ~]$ cp dmmpp.ctl dmdata/EP02/
[dmdba@ha2 ~]$ cp dmmpp.ctl dmdata/EP03/
[dmdba@linux1 ~]$ cp dmmpp.ctl dmdata/EP04/
[dmdba@linux1 ~]$ cp dmmpp.ctl dmdata/EP05/
[dmdba@linux1 ~]$ cp dmmpp.ctl dmdata/EP06/
9.分别启动6个服务
[dmdba@ha2 ~]$ nohup dmserver /home/dmdba/dmdata/EP01/dm.ini &
[dmdba@ha2 ~]$ nohup dmserver /home/dmdba/dmdata/EP02/dm.ini &
[dmdba@ha2 ~]$ nohup dmserver /home/dmdba/dmdata/EP03/dm.ini &
[dmdba@linux1 ~]$ nohup dmserver /home/dmdba/dmdata/EP04/dm.ini &
[dmdba@linux1 ~]$ nohup dmserver /home/dmdba/dmdata/EP05/dm.ini &
[dmdba@linux1 ~]$ nohup dmserver /home/dmdba/dmdata/EP06/dm.ini &
10.检查集群是否启动
首先,可以通过ps命令查看进程是否正常启动:
[dmdba@ha2 ~]$ ps -ef | grep dmdba
dmdba    13326 11800  1 15:23 pts/0    00:00:03 dmserver /home/dmdba/dmdata/EP01/dm.ini
dmdba    13477 11800  2 15:24 pts/0    00:00:03 dmserver /home/dmdba/dmdata/EP02/dm.ini
dmdba    13540 11800  2 15:24 pts/0    00:00:03 dmserver /home/dmdba/dmdata/EP03/dm.ini

[dmdba@linux1 ~]$ ps -ef | grep dmdba
dmdba     14973  13824  1 15:25 pts/1    00:00:02 dmserver /home/dmdba/dmdata/EP04/dm.ini
dmdba     15059  13824  2 15:26 pts/1    00:00:02 dmserver /home/dmdba/dmdata/EP05/dm.ini
dmdba     15125  13824  6 15:27 pts/1    00:00:02 dmserver /home/dmdba/dmdata/EP06/dm.ini
另外,可以登录系统查看是否可以查询集群相关视图:
[dmdba@linux1 ~]$ disql SYSDBA/SYSDBA@linux1:5236

SQL> SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID =df.GROUP_ID;
我这里正常返回了各个节点的文件目录,总共144行。

11.本地查询模式
达梦提供了一个集群本地查询模式(登录时添加*LOCAL参数),可以用来查询本机的相关数据,在本地模式下,不能进行DML操作。
[dmdba@linux1 ~]$ disql SYSDBA/SYSDBA*LOCAL@linux1:5236

Server[linux1:5236]:mode is normal, state is open
login used time: 41.069(ms)
disql V7.1.5.186-Build(2017.05.23-81019)ENT
Connected to: DM 7.1.5.186
SQL> SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID =df.GROUP_ID;

LINEID     NAME   PATH
---------- ------ ----------------------------------
1          SYSTEM /home/dmdba/dmdata/EP04/SYSTEM.DBF
2          MAIN   /home/dmdba/dmdata/EP04/MAIN.DBF
3          TEMP   /home/dmdba/dmdata/EP04/TEMP.DBF
4          ROLL   /home/dmdba/dmdata/EP04/ROLL.DBF

used time: 6.422(ms). Execute id is 796.
今天分享到此结束,可以看出,达梦MPP配置起来还是相对简单的,但是集群配置需要步骤都要手动执行,比较繁琐。另外看到bin文件夹下有dmmpp相关的命令,应该可以集群安装,有了解的朋友可以留言探讨~
相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
4天前
|
SQL Oracle 关系型数据库
安装最新 MySQL 8.0 数据库(教学用)
安装最新 MySQL 8.0 数据库(教学用)
33 4
|
6天前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
22 1
|
8天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
58 2
|
7天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
32 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
9天前
|
安全 Linux 数据库连接
CentOS 7环境下DM8数据库的安装与配置
【10月更文挑战第16天】本文介绍了在 CentOS 7 环境下安装与配置达梦数据库(DM8)的详细步骤,包括安装前准备、创建安装用户、上传安装文件、解压并运行安装程序、初始化数据库实例、配置环境变量、启动数据库服务、配置数据库连接和参数、备份与恢复、以及安装后的安全设置、性能优化和定期维护等内容。通过这些步骤,可以顺利完成 DM8 的安装与配置。
|
9天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
43 6
|
6天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
37 3
Mysql(4)—数据库索引
|
9天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
27 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
13天前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
37 5
Mysql(3)—数据库相关概念及工作原理
|
3天前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
10 0
【入门级教程】MySQL:从零开始的数据库之旅