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

    xiaoxiao2023-08-01  132

    武汉达梦数据库作为国产数据库较有代表性的企业,在数据库研发方面投入了大量的精力,其自主研发的达梦数据库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相关的命令,应该可以集群安装,有了解的朋友可以留言探讨~ 相关资源:达梦dm7用户使用手册
    最新回复(0)