达梦数据库 MPP集群搭建(带主备)

news2024/11/14 16:26:22

MPP集群搭建(带主备)

  • 1.背景
  • 2.操作内容和要求
  • 3. 具体步骤
    • 3.1 搭建过程
      • 3.1.1 集群搭建
      • 3.1.2 准备工作
        • 3.1.2.1 初始化
        • 3.1.2.2 备份数据库
      • 3.1.3 配置主库EP01
        • 3.1.3.1 配置dm.ini
        • 3.1.3.2 配置dmmal.ini
        • 3.1.3.3 配置dmarch.ini
        • 3.1.3.4 配置dmmpp.ctl
        • 3.1.3.5 启动主库
        • 3.1.3.6 设置OGUID
        • 3.1.3.7 修改数据库模式
      • 3.1.4 配置主库EP02
        • 3.1.4.1 配置dm.ini
        • 3.1.4.2 配置dmmal.ini
        • 3.1.4.3 配置dmarch.ini
        • 3.1.4.4 配置dmmpp.ctl
        • 3.1.4.5 启动主库
        • 3.1.4.6 设置OGUID
        • 3.1.4.7 修改数据库模式
      • 3.1.5 配置备库EP01_1
        • 3.1.5.1 配置dm.ini
        • 3.1.5.2 配置dmmal.ini
        • 3.1.5.3 配置dmarch.ini
        • 3.1.5.4 配置dmmpp.ctl
        • 3.1.5.5 启动备库
        • 3.1.5.6 设置OGUID
        • 3.1.5.7 修改数据库模式
      • 3.1.6 配置备库EP02_1
        • 3.1.6.1 配置dm.ini
        • 3.1.6.2 配置dmmal.ini
        • 3.1.6.3 配置dmarch.ini
        • 3.1.6.4 配置dmmpp.ctl
        • 3.1.6.5 启动备库
        • 3.1.6.6 设置OGUID
        • 3.1.6.7 修改数据库模式
      • 3.1.7 配置dmwatcher.ini
      • 3.1.8 配置监视器
      • 3.1.9 启动守护进程
      • 3.1.10 启动监视器
    • 3.2 功能测试
      • 3.2.1 根据列自动分发测试
      • 3.2.2 服务名连接测试
      • 3.2.3 故障测试
  • 4.结论

1.背景

达梦大规模并行处理 MPP(DM Massively Parallel Processing,缩写 DM MPP)是基于达梦数据库管理系统研发的完全对等无共享式集群组件,支持将多个 DM 数据库实例组织为一个并行计算网络,对外提供统一的数据库服务。
本实验将练习带主备的MPP集群搭建过程。

2.操作内容和要求

完成MPP集群的搭建,要求如下:
1)完成MPP集群(带主备)的部署,并测试建表和插入数据是否会根据分布列进行自动分发。
2)测试通过服务名连接MPP,连接可自动负载到不同节点。
3)测试故障一个节点后,集群和持续提供服务。

3. 具体步骤

3.1 搭建过程

3.1.1 集群搭建

一共准备4台机器,EP01和EP02为两台MPP主机,EP01_1和EP02_1为对应的两台备机。监视器放在EP01_1所在的机器上。
在这里插入图片描述
在这里插入图片描述

3.1.2 准备工作

3.1.2.1 初始化

在EP01、EP02两台设备上分别初始化数据库
在这里插入图片描述
在这里插入图片描述

3.1.2.2 备份数据库

启动主库
开启归档
在这里插入图片描述
备份数据
在这里插入图片描述
拷贝文件至备机
在这里插入图片描述
在备机上恢复数据
在这里插入图片描述
两台主库均执行以上操作。

3.1.3 配置主库EP01

3.1.3.1 配置dm.ini

在 A 机器上配置主库的实例名为 EP01,dm.ini 参数修改如下

INSTANCE_NAME = EP01

PORT_NUM = 5236 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间

MAL_INI = 1 ##打开MAL系统

ARCH_INI = 1 ##打开归档配置

MPP_INI = 1 ##启用MPP配置

RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
3.1.3.2 配置dmmal.ini
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间

[MAL_INST1]

    MAL_INST_NAME = EP01 ##实例名,和dm.ini中的INSTANCE_NAME一致

    MAL_HOST = 192.168.78.129 ##MAL系统监听TCP连接的IP地址

    MAL_PORT = 5337 ##MAL系统监听TCP连接的端口

    MAL_INST_HOST = 192.168.78.129 ##实例的对外服务IP地址

    MAL_INST_PORT = 5236 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致

    MAL_DW_PORT = 5253 ##实例对应的守护进程监听TCP连接的端口

    MAL_INST_DW_PORT = 5243 ##实例监听守护进程TCP连接的端口

[MAL_INST2]

    MAL_INST_NAME = EP02

    MAL_HOST = 192.168.78.130

    MAL_PORT = 5337

    MAL_INST_HOST = 192.168.78.130

    MAL_INST_PORT = 5236

    MAL_DW_PORT = 5253

    MAL_INST_DW_PORT = 5243

[MAL_INST3]

    MAL_INST_NAME = EP01_1

    MAL_HOST = 192.168.78.131

    MAL_PORT = 5338

    MAL_INST_HOST = 192.168.78.131

    MAL_INST_PORT = 5237

    MAL_DW_PORT = 5254

    MAL_INST_DW_PORT = 5244

[MAL_INST4]

    MAL_INST_NAME = EP02_1

    MAL_HOST = 192.168.78.132

    MAL_PORT = 5338

    MAL_INST_HOST = 192.168.78.132

    MAL_INST_PORT = 5237

    MAL_DW_PORT = 5254

    MAL_INST_DW_PORT = 5244
3.1.3.3 配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /opt/dmdbms/arch        
ARCH_FILE_SIZE       = 1024        
ARCH_SPACE_LIMIT     = 51200        

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                    ##实时归档类型
ARCH_DEST = EP01_1              ##实时归档目标实例名
3.1.3.4 配置dmmpp.ctl

dmmpp.ctl 是二进制文件,由 dmmpp.ini 文本通过 dmctlcvt 工具转换而来。
先创建dmmpp.ini
在这里插入图片描述
转换为ctl文件
在这里插入图片描述

3.1.3.5 启动主库

以mount方式启动主库
在这里插入图片描述

3.1.3.6 设置OGUID

启动命令行工具 disql,使用 MPP 类型为 LOCAL 方式,登录主库设置 OGUID 值
在这里插入图片描述

3.1.3.7 修改数据库模式

启动命令行工具 disql,使用 MPP 类型为 LOCAL 方式,登录主库修改数据库为 Primary 模式
在这里插入图片描述

3.1.4 配置主库EP02

3.1.4.1 配置dm.ini

在 B 机器上配置主库的实例名为 EP02,dm.ini 参数修改如下

INSTANCE_NAME = EP02

PORT_NUM = 5236                 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60       ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0           ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2           ##不允许备库OFFLINE表空间

MAL_INI = 1                     ##打开MAL系统

ARCH_INI = 1                    ##打开归档配置

MPP_INI = 1                     ##启用MPP配置

RLOG_SEND_APPLY_MON = 64        ##统计最近64次的日志发送信息
3.1.4.2 配置dmmal.ini

参照EP01的配置,拷贝过来即可

3.1.4.3 配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /opt/dmdbms/arch        
ARCH_FILE_SIZE       = 1024        
ARCH_SPACE_LIMIT     = 51200        

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                    ##实时归档类型
ARCH_DEST = EP02_1              ##实时归档目标实例名
3.1.4.4 配置dmmpp.ctl

将EP01的dmmpp.ctl拷贝过来即可。

3.1.4.5 启动主库

以mount方式启动主库
在这里插入图片描述

3.1.4.6 设置OGUID

启动命令行工具 DIsql,使用 MPP 类型为 LOCAL 方式,登录主库设置 OGUID 值。
在这里插入图片描述

3.1.4.7 修改数据库模式

启动命令行工具 DIsql,使用 MPP 类型为 LOCAL 方式,登录主库修改数据库为 Primary 模式。
在这里插入图片描述

3.1.5 配置备库EP01_1

3.1.5.1 配置dm.ini

在 B 机器上配置备库的实例名为 EP01_1,dm.ini 参数修改如下

INSTANCE_NAME = EP01_1

PORT_NUM = 5237                 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60       ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0           ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2           ##不允许备库OFFLINE表空间

MAL_INI = 1                     ##打开MAL系统

ARCH_INI = 1                    ##打开归档配置

MPP_INI = 1                     ##打开MPP配置

RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志重演信息
3.1.5.2 配置dmmal.ini

参照EP01的配置,拷贝过来即可

3.1.5.3 配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /opt/dmdbms/arch        
ARCH_FILE_SIZE       = 1024        
ARCH_SPACE_LIMIT     = 51200        

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                    ##实时归档类型
ARCH_DEST = EP01              ##实时归档目标实例名
3.1.5.4 配置dmmpp.ctl

将EP01的dmmpp.ctl拷贝过来即可。

3.1.5.5 启动备库

以 Mount 方式启动备库
在这里插入图片描述

3.1.5.6 设置OGUID

在这里插入图片描述

3.1.5.7 修改数据库模式

在这里插入图片描述

3.1.6 配置备库EP02_1

3.1.6.1 配置dm.ini

在 A 机器上配置备库的实例名为 EP02_1,dm.ini 参数修改如下

INSTANCE_NAME = EP02_1

PORT_NUM = 5237                 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60       ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0           ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2           ##不允许备库OFFLINE表空间

MAL_INI = 1                     ##打开MAL系统

ARCH_INI = 1                    ##打开归档配置

MPP_INI = 1                     ##打开MPP配置

RLOG_SEND_APPLY_MON = 64        ##统计最近64次的日志重演信息
3.1.6.2 配置dmmal.ini

参照EP01的配置,拷贝过来即可

3.1.6.3 配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /opt/dmdbms/arch        
ARCH_FILE_SIZE       = 1024        
ARCH_SPACE_LIMIT     = 51200        

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                    ##实时归档类型
ARCH_DEST = EP02              ##实时归档目标实例名
3.1.6.4 配置dmmpp.ctl

将EP01的dmmpp.ctl拷贝过来即可。

3.1.6.5 启动备库

以 Mount 方式启动实例
在这里插入图片描述

3.1.6.6 设置OGUID

在这里插入图片描述

3.1.6.7 修改数据库模式

在这里插入图片描述

3.1.7 配置dmwatcher.ini

在4台机器上分别配置dmwatcher.ini文件
主库1
在这里插入图片描述
主库2
在这里插入图片描述
备库1
在这里插入图片描述
备库2
在这里插入图片描述

3.1.8 配置监视器

在这里插入图片描述

3.1.9 启动守护进程

在4台机器上都执行
在这里插入图片描述

3.1.10 启动监视器

在这里插入图片描述
在这里插入图片描述
集群正常

3.2 功能测试

3.2.1 根据列自动分发测试

创建哈希分布表 T_HASH,分布列为 C1

CREATE TABLE T_HASH(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);

在这里插入图片描述
编写测试脚本
在这里插入图片描述
测试脚本
在这里插入图片描述
查看数据分布,全局数据查看
在这里插入图片描述
在EP01上查看数据
在这里插入图片描述
在EP02上数据查看
在这里插入图片描述
可以观察到,数据根据C1列的hash值,把数据分布在了两个MPP数据库上。

3.2.2 服务名连接测试

配置dm_svc.conf
在这里插入图片描述
通过服务名的方式连接数据库
在这里插入图片描述
插入数据
在这里插入图片描述
以local的方式登录EP01查询
在这里插入图片描述
以local的方式登录EP02查询
在这里插入图片描述
由此可见写入数据的操作负载到了两个节点上。

3.2.3 故障测试

断开EP02的网络
在这里插入图片描述
备机2接管成功
在这里插入图片描述
备机2可正常查询数据

4.结论

为了提高 MPP 系统可靠性,克服由于单节点故障导致整个系统不能继续正常工作,DM 在普通的 MPP 系统基础上,引入主备守护机制,将 MPP 节点作为主库节点,增加备库作为备份节点,必要时可切换为主库代替故障节点工作,提高了系统的可靠性和可用性。

达梦社区地址 https://eco.dameng.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1936691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux NFS服务搭建及使用

一、NFS 服务器介绍 nfs ( Network File System )即网络文件系统,其基于 UDP/IP使用 nfs 能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。 二、NFS 服务器的特点 …

【Java】用队列实现栈 力扣

文章目录 题目链接题目描述思路代码 题目链接 225.用队列实现栈 题目描述 思路 一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。 代码 class MyStack {Q…

C++那些事之依赖注入

C那些事之依赖注入 最近星球里面有个小伙伴让更新一下依赖注入,于是写出了这篇文章,来从实际的例子讲解,本文会讲解一些原理与实现,完整的实现代码懒人版放在星球中,我们开始正文。 大纲: 直接依赖接口依赖…

什么是长效住宅IP?

长效住宅IP的定义 长效住宅IP,简而言之,是指长期稳定、非动态更换的住宅网络IP地址。这类IP地址通常由互联网服务提供商(ISP)分配给居民家庭用户,用于上网、网络通信等日常网络活动。与传统的动态IP相比,长…

​前端Vue组件技术实践:打造自定义精美悬浮菜单按钮组件

随着前端技术的迅猛发展,复杂的应用场景和不断迭代的产品需求使得开发的复杂度日益提升。传统的整体式开发方式已经难以满足现代前端应用的灵活性和可维护性需求。在这样的背景下,组件化开发逐渐崭露头角,成为解决复杂前端应用问题的有效手段…

算法第十一天:leetcode707.设计链表

一、设计链表的题目描述与链接 707.设计链表的链接如下表所示,您可直接复制下面网址进入力扣学习,在观看下面的内容之前一定要先做一遍哦,这样才能印象深刻! https://leetcode.cn/problems/design-linked-list/https://leetcode.…

Java_Docker

镜像和容器: 镜像仓库: 存储和管理镜像的平台,镜像仓库中有非常多常用软件的镜像,Docker官方维护了一个公共仓库​​​​​​:​Docker Hub 部署MySQL: docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shang…

C/C++的堆栈内存分配详解

在C/C编程中,内存管理是至关重要的一个方面。理解内存的分配方式有助于编写高效、可靠的程序,C/C主要使用两种内存分配方式:堆(heap)和栈(stack)。这两者在管理方式、性能和使用场景上都有显著区…

RDMA软件架构

RDMA 的软件架构按层次可分成两部分,即 rdma-core 和内核 RDMA 子系统,分别运行在 Linux 系统中的用户态和内核态。整个软件架构适用于所有类型的 RDMA 网卡,不管网卡执行了哪种 RDMA 协议(InfiniBand/RoCE/ iWARP)。 …

[SUCTF 2019]EasySQL1

这是一个简单的SQL注入题,但是因为我的SQL基础约等于0,所以做起来很难。 首先试试引号是否被过滤 可以看到单引号、双引号都被过滤了,试试其他的盲注都不行,基本上可以确定不能用这种方法。 在测试的过程中发现,输入…

Python实现招聘数据采集 ,并做可视化分析

转眼秋招快到了, 今天来学习一下如何用Python采集全网招聘数据,并进行可视化分析,为就业准备~ 话不多说开始造 源码和详细的视频讲解我都打包好了,文末名片自取 准备工作 首先你需要准备这些 环境 Python 3.10 Pycharm 模块…

[解决方法]git上传的项目markdown文件的图片无法显示

应该有不少初学者会遇到这种情况 以下是本人摸索出的解决方法 我使用的是typora,首先设置typora的图片设置 文件>偏好设置>图像 如下: 选择这个就会在此文件的同级目录下创建一个assets文件夹来存放此markdown文件的所有图片 然后勾选优先使用相…

开机自启动设置

该方法优点是最简单且bug最少: 按键盘上的:CtrlR 打开"运行”,输入“shell:startup"并打开;下次重启即可自动启动软件了

CSRF防御及模拟CSRF攻击

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种攻击方式,攻击者可以诱使用户在已登录的应用中执行非本意的操作。为了防御这种攻击,许多Web应用会使用CSRF Token来验证请求的合法性。 0.csrf 攻击原理 2. 后端服…

2024 HNCTF PWN(hide_flag Rand_file_dockerfile Appetizers TTOCrv_)

文章目录 参考hide_flag思路exp Rand_file_dockerfile libc 2.31思路exp Appetizers glibc 2.35绕过关闭标准输出实例客户端 关闭标准输出服务端结果exp TTOCrv_🎲 glibc 2.35逆向DT_DEBUG获得各个库地址随机数思路exp 参考 https://docs.qq.com/doc/p/641e8742c39…

HTTPS 的加密过程 详解

HTTP 由于是明文传输,所以安全上存在以下三个风险: 窃听风险,比如通信链路上可以获取通信内容。篡改风险,比如通信内容被篡改。冒充风险,比如冒充网站。 HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议&#xff0c…

LVS+Nginx高可用集群---搭建高可用集群负载均衡

1.LVS简介 Lvs(Linux Virtual Server):使用集群,对于整个用户来说是透明,用户访问的时候是单个高性能的整体。道理与nginx类似 LVS网络拓扑图:是基于四层。 用户通过浏览器发送请求,然后到达LVS.Lvs根据相应算法将…

使用NIFI连接瀚高数据库_并从RestFul的HTTP接口中获取数据局_同步到瀚高数据库中---大数据之Nifi工作笔记0067

首先来看一下如何,使用NIFI 去连接瀚高数据库. 其实,只要配置好了链接的,连接字符串,和驱动,任何支持JDBC的数据库都可以连接的. 首先我们用一个ListDatabaseTables处理器,来连接瀚高DB 主要是看这里,连接地址,以及驱动,还有驱动的位置 这个是数据连接的配置 jdbc:highgo://…

FinClip 率先入驻 AWS Marketplace,加速全球市场布局

近日,凡泰极客旗下的小程序数字管理平台 FinClip 已成功上线亚马逊云科技(AWS)Marketplace。未来,FinClip 将主要服务于海外市场的开放银行、超级钱包、财富管理、社交电商、智慧城市解决方案等领域。 在全球市场的多样性需求推动…

【Linux】深入探索`cp`命令:文件复制的全面指南

文章目录 一、cp命令概述二、cp命令的基本用法1. 复制单个文件2. 复制多个文件到目录 三、cp命令的常用选项1. -i:交互式复制(interactive)2. -r或-R:递归复制目录(recursive)3. -v:详细模式&am…