说明... 3
两节点MPP集群手动搭建... 4
1、配置dm.ini 4
2、配置dmmal.ini 5
3、配置dmmpp.ctl 5
4、启动EP01和EP02数据库实例,系统搭建完成。... 6
MPP使用:... 6
使用DEM管理系统搭建MPP3节点集群... 10
一、达梦DEM部署... 11
1、创建DEM库:dem_init.sql 11
2、tomcat安装部署... 12
3、修改server.xml配置文件... 12
4、修改jvm启动启动参数... 12
5、配置DEM... 13
6、解压dem.war 13
7、配置DEM中元数据库的连接信息... 13
8、重新打包... 14
8、授权... 15
9、启动tomcat 16
10、登录DEM系统... 16
11、连接数据库正常... 17
二、各节点AGENT部署... 17
1、dmagent下载... 18
2、修改dmagent配置... 19
3. 核对dmagent和DEM所运行机器时间... 19
4. 启动dmagent: 19
5、报错处理... 21
1)启动三台节点(100、101、102)agent但是只显示一台服务器... 21
2)查看日志... 21
4)永久修改错误连接的mac地址... 23
6、重新启动DEM... 23
三、使用DEM搭建MPP集群... 24
1、客户端工具--集群管理--点击"+"创建集群--选择大规模并行处理... 24
2、环境准备--找到需要部署的主机--实例规划... 25
3、在配置好各实例的参数后,点击“下一步”,进入“数据准备”页面。... 25
4、配置dm.ini相关参数... 26
5、配置dmmal.ini相关参数... 26
6、配置dmarch.ini参数... 27
7、上传的服务器文件... 27
8、开始执行部署任务--部署成功... 27
9、查验... 28
四、使用DEM监控MPP运行... 28
达梦共享存储数据库集群全称 DM Data Shared Cluster,简称 DMDSC:
这种体系可实现多机并行,保证系统的高可用性,但需要通过一个数据管道将所有I/O信息过滤到共享存储子系统,对硬件的要求较高,且并非高性能解决方案。
达梦大规模并行处理 MPP(DM Massively Parallel Processing,缩写 DM MPP):
完全对等无共享式集群,通讯功能部署在一个高宽带网络互连体系上,没有主控制节点,所有节点完全对等,执行并行查询。支持最多 1024 个 EP。MPP特别适合于海量数据的存储和处理。一个EP故障停机,整个MPP系统不能使用,须配合数据守护(主备)使用。
达梦分布计算集群英文全称DM Distributed Processing Cluster,简称DMDPC:
提供了分布式计算集群才拥有的高可用、高扩展、高性能、高吞吐量和对用户透明等高级特性。
首先配置dmmpp.ini,然后利用dmctlcvt工具进行转换得到生成的dmmpp.ctl文件。
MPP系统中的每个EP都必须使用相同的dmmpp.ctl文件,进行文件拷贝即可。
MPP集群搭建
1、制定合适的DM MPP方案
1)应用是否适合使用DM MPP方案
MPP具有高性价比、高可靠性、功能强大等优点
MPP主要针对海量数据的OLAP应用而研发。
在合理规划的前提下,对普通的、并发量不大的一般OLTP或混合类型应用也适用,但不适合于高并发操作的OLTP类型应用。
2)需要使用多大规模的DM MPP方案
DM MPP最多支持1024个EP节点,应用数据规模、硬件规划、网络带宽和项目预算情况而定。
理论上来说节点数越多越好,这样并行越充分,效率越高。
方案设计者应同时考虑到 EP节点间网络资源的情况,如果网络是瓶颈,则并不是节点数越多越好。
3)需要配置怎样的硬件资源
DM MPP采用完全对等不共享架构,不需要专用硬件,可以采用普通的PC服务器组建集群。
DM MPP系统需要通过网络在各EP间传递数据,因此网络的带宽对于MPP系统的效率非常重要,建议配置千兆或万兆内部网络,用户应根据实际需求、配置成本及实际条件等综合评估决定。
4)如何设计应用表
DM MPP系统中的数据分布在各EP中,支持表数据的哈希分布、随机分布、复制分布、范围分布、LIST分布类型
除了表的分布类型,还应根据情况确定表的分布列、分布列的数据类型以及是否需要组合分布列等,查询连接使用频率较高的连接键等可以考虑作为分布列。
5)如何配置DM MPP系统参数
数据库实例配置文件dm.ini和MAL系统配置文件dmmal.ini中一些参数的配置会影响MPP系统的运行性能。
应根据应用和硬件的实际情况对这些参数进行适当的配置。同时应注意各EP必须保持一致的INI参数。
两台双网卡服务器,均安装并初始化数据库实例。2c2g
EP01:
192.168.16.100
10.10.10.100
EP02:
192.168.16.101
10.10.10.101
注意:各EP使用的DM数据库版本应一致,各EP所在主机的操作系统位数、大小端模式、时区及时间设置都应一致。
两台服务器停止数据库服务
./DmServiceDMSERVER stop
各EP的数据库初始化参数都保持一致
EP01
INSTANCE_NAME = EP01
PORT_NUM = 5236
MAL_INI = 1
MPP_INI = 1
EP02
INSTANCE_NAME = EP02
PORT_NUM = 5237
MAL_INI = 1
MPP_INI = 1
两节点配置完全一样
dmmal.ini与dm.ini放在相同的目录下。
[MAL_INST1]
MAL_INST_NAME = EP01
MAL_HOST = 10.10.10.100
MAL_PORT = 5269
MAL_INST_HOST = 192.168.16.100
MAL_INST_PORT = 5236
[MAL_INST2]
MAL_INST_NAME = EP02
MAL_HOST = 10.10.10.101
MAL_PORT = 5270
MAL_INST_HOST = 192.168.16.101
MAL_INST_PORT = 5237
两节点配置完全一样
需要先配置dmmpp.ini
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = EP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = EP02
使用dmctlcvt将dmmpp.ini转换成dmmpp.ctl
dmmpp.ctl需要放在dm.ini的同一个目录
TYPE=2表示将文本文件转换成控制文件
TYPE=1进行逆向转换,文本转为控制文件
dmctlcvt TYPE=2 SRC=/dm/data/DMDB/dmmpp.ini DEST=/dm/data/DMDB/dmmpp.ctl
之前注册过直接启动即可
./DmServiceDMSERVER start
建立分布表
哈希分布、随机分布、复制分布、范围分布、LIST 分布
MPP的数据分布类型和具体设置在建表时指定
CREATE TABLE T_HASH(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);
CREATE TABLE T_RANDOM(C1 INT, C2 CHAR(10))DISTRIBUTED RANDOMLY;
CREATE TABLE T_FULLY(C1 INT, C2 CHAR(10))DISTRIBUTED FULLY;
CREATE TABLE T_RANGE (C1 INT, C2 CHAR(10))DISTRIBUTED BY RANGE (C1)
(VALUES EQU OR LESS THAN (100) ON EP01, VALUES LESS THAN(MAXVALUE) ON EP02);
CREATE TABLE T_LIST(C1 INT, C2 CHAR(10))DISTRIBUTED BY LIST (C1)
(VALUES(3) ON EP01,VALUES(4) ON EP02);
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);
注意:
MPP模式下创建分布表,如果未指定列则默认为RANDOMLY(随机)分布表;
分布列类型不支持BLOB、CLOB、IMAGE、TEXT、LONGVARCHAR、BIT、BINARY、VARBINARY、LONGVARBINARY、BFILE、时间间隔类型、虚拟列和用户自定义类型;
FULLY(复制)分布表,只支持单表查询的更新和删除操作,并且查询项或者条件表达式中都不能包含ROWID伪列表达式;
RANGE(范围)分布表和 LIST(列表)分布表,分布列与分布列值列表必须一致,并且指定的实例名不能重复;
引用约束的引用列和被引用列都必需包含分布列,且分布情况完全相同;
随机分布表不支持UNIQUE索引。
快速数据装载:dmfldr
dmfldr支持MPP环境下的两种数据加载模式:客户端分发模式(默认,数据在dmfldr客户端进行分发后直接向指定EP发送数据)和本地分发模式,通过参数MPP_CLIENT进行设置。
停止MPP系统:数据库实例停库即可
MPP相关系统过程与函数
MPP系统设置当前会话是否只查询本节点数据。
SP_SET_SESSION_MPP_SELECT_LOCAL(0); --0查询全部节点数据;1只查询本节点数据
SF_GET_SESSION_MPP_SELECT_LOCAL(0); --用法与上面set一样啊
MPP本地登录时,设置本会话上是否允许DDL操作。本地登录默认不允许DDL操作。
SP_SET_SESSION_LOCAL_TYPE (1); --1表示允许
CREATE TABLE TEST(C1 INT);
SP_SET_SESSION_LOCAL_TYPE (0);
根据查询出的行数据的ROWID获取本条数据来自哪个EP。
SF_GET_EP_SEQNO(ROWID);
select SF_GET_EP_SEQNO('AAAAAAAAAAAAAAAAAD');
获取本会话连接的EP序号。
SELECT SF_GET_SELF_EP_SEQNO();
统计MPP环境下表在各个节点的数据行数。
SP_GET_EP_COUNT('SYSDBA','T'); --模式,表名--ER02中也有该表,但是mpp从01库中查出后不会去查02库,所以1库3行2库0行数据。
获取EP节点配置信息
SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取当前会话连接的实例名
SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取MPP系统内所有EP的所有会话
SELECT * FROM V$SESSIONS;
获取当前连接的实例上的所有会话
SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取实例EP01上的所有会话
SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = (SELECT DISTINCT EP_SEQNO FROM V$MPP_CFG_ITEM WHERE INST_NAME ='EP01');
获取所接实例上的表DEPT的使用空间
SELECT TABLE_USED_PAGES('SYSDBA','DEPT');
获取每个实例上的表TEST使用空间
SELECT TABLE_USED_PAGES('SYSDBA','DEPT'), NAME FROM V$INSTANCE;
获取所有实例上表DEPT的总使用空间
SELECT SUM(TOTAL_SIZE) FROM (SELECT TABLE_USED_PAGES('SYSDBA','DEPT') TOTAL_SIZE, NAME FROM V$INSTANCE);
说明:
DM web 版数据库管理工具(DEM)提供了图形化部署与监控MPP的功能。
在使用DEM对集群进行部署和监控之前需要在各节点所在机器部署数据库代理工具DMAgent
服务器规划:
EP01:
192.168.16.100
10.10.10.100
EP02:
192.168.16.101
10.10.10.101
EP03:
192.168.16.102
10.10.10.1022
DEM单独搭建:2c4g
192.168.16.69
10.10.10.69
69DEM库
start /dm8/web/dem_init.sql
SELECT DISTINCT owner,object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'SCH';
上传安装包,并解压,重命名
在conf/server.xml中追加属性字段追加属性字段 maxPostSize="-1"
vim /tomcat/tomcat/conf/server.xml
vim /tomcat/tomcat/bin/catalina.sh
/cygwin=false --搜索在这个上面添加,达梦自带Java路径
JAVA_OPTS="-server -Xms256m -Xmx1024m -XX:MaxPermSize=512m -Djava.library.path=/dm8/bin"
把DEM项目复制到tomcat的webapps
cp /dm8/web/dem.war /tomcat/tomcat/webapps/
unzip -oq dem.war -d dem
-d:指定解压输出目录
修改DEM解压文件中的db.xml文件
vim /tomcat/tomcat/webapps/dem/WEB-INF/db.xml
先授权
chown -R dmdba:dinstall /tomcat
使用dmdba
cd /tomcat/tomcat/webapps/dem
jar -cvf dem.war *
echo $JAVA_HOME
配置java环境变量
find / -name jar查询jdk路径
然后打包替换即可
cd /tomcat/tomcat/webapps/dem
jar -cvf dem.war *
mv dem.war ../
重启tomcat
cd /tomcat/tomcat/bin
./shutdown.sh
./startup.sh
chmod -R 755 tomcat
./startup.sh
在浏览器中输入dem的地址即可进入DEM的登录页面了
http://192.168.16.69:8080/dem/
输入账号密码admin/888888
100服务器
dmagent配置及启动应用 root用户操作
1) 达梦数据库安装目录的tool下存有dmagent --本次使用
2) 登录部署好的DEM,资源包,下载dmagent。 拷贝dmagent到要部署的机器上。
配置dmagent目录下的agent.ini:
center.url=http://192.168.16.69:8080/dem #DEM访问地址
gather_enable=true #开启收集监控数据功能,默认打开
service_enable=true #开启远程调用功能,部署时需要打开
一般要求dmagent和DEM所运行机器时间一致,最多不要相差5分钟。
root
./start.sh /dm8/tool/dmagent/agent.ini #进程方式运行
=====
服务注册的方式启动
[root@localhost dmagent]# ./service.sh install
[root@localhost dmagent]# ./service.sh start
这里注册服务后,linux服务器重启dmagent也会启动的
====
101及102服务器同样操作启动
DEM上修改内外网配置
1)启动三台节点(100、101、102)agent但是只显示一台服务器
2)查看日志
因为是克隆的机器这三台不同ip但是macaddr地址是同一个,所以一直报错
3)查看mac地址并修改
ifconfig
4)永久修改错误连接的mac地址
查看ifconfig配置正常使用的ens33和ens37显示mac地址每台服务器均不同。只有这个virbr0使用同一个mac地址。
这里直接停掉virbr0网桥即可。
停网桥virbr0
ifconfig
brctl show //查看网桥
ifconfig virbr0 down
brctl delbr virbr0 //删除网桥
systemctl disable libvirtd.service //禁用libvirtd服务开机自启动
systemctl mask libvirtd.service
ifconfig查看,即可发现virbr0不在了
启动各节点agent即可 --正常显示了
(需要指定dmserver文件,这里直接指定bin目录即可)
直接连接第一次手动配置的mpp集群还在
连接DEM搭建的三节点mpp集群正常
监控与告警--数据库--添加--集群--xxx
其他:
MPP的DDL克隆与还原
DDL 克隆可以把系统中的对象定义信息进行备份,之后再还原到别的数据库节点。利用这个功能,可以将一个MPP系统的对象定义信息克隆并还原到另一个MPP系统中,且两个MPP系统的节点数不必一致。
在执行完还原操作后,需要使用dmctlcvt工具,将当前环境的dmmpp.ini再次生成dmmpp.ctl,替换还原生成的dmmpp.ctl(因还原覆盖了目标系统的ctl文件)。
MPP主备系统
MPP备库不参与MPP操作,与其他MPP备库之间也没有任何关系,MPP备库只能以单节点方式提供只读服务,但不提供全局的MPP只读服务。
为了提高系统可靠性并节约硬件资源,DM MPP主备系统可采用交叉守护的方式,即每个EP和其对应的备库实例不在同一台主机上,将EP与别的EP的备库放在一台主机上。
达梦数据库社区地址:https://eco.dameng.com