守护进程“独辟蹊径”

守护进程“独辟蹊径”

  • 一、前言
  • 二、实际运用
    • 2.1 知识介绍
    • 2.2 单机库场景应用
      • 2.2.1 配置dmwatcher.ini
      • 2.2.2 注册后台守护服务
      • 2.2.3 配置dmmal.ini
      • 2.2.4 配置归档和守护OGUID
      • 2.2.5 开启mal
      • 2.2.6 启动守护
      • 2.2.7 测试dmserver异常退出
  • 三、总结

DM技术交流QQ群:940124259

一、前言

面对24小时不间断的业务系统,如遇到数据库进程异常退出(某个特殊bug触发)或OOM killer,是否能快速自动恢复服务?为此给我们带来了一些思考,DM8数据库是否有像MySQL数据库的守护进程mysql_safe进程保护机制?只能自己写脚本实时监测数据库状态和进程是否异常,便立即处理?
答案:达梦数据库有提供类似于mysql_safe的数据守护机制,因此完全没必要费心思自己编写脚本。


二、实际运用

2.1 知识介绍

达梦数据库提供一种数据守护集群的技术,利用dmwatcher守护进程实时监测数据库状态和进程,能够自动拉起dmserver进程并重新打开数据库,继续对外提供服务。虽然数据守护主要运用于数据库守护集群,但它也可以变型运用于单机数据库,为单机库提供实例保护和自我恢复功能。

守护进程核心参数说明dmwatcher.ini
在这里插入图片描述

2.2 单机库场景应用

数据库版本:1-2-192-2023.05.17-190669-20033-ENT
数据守护版本:v4.0

2.2.1 配置dmwatcher.ini

[LOCAL_DW_DMLOG]     # 守护组标识名称(个人习惯:LOCAL_DW_实例名),不超过16个字符即可。
DW_MODE=MANUAL       # 手工模式(单机库)
DW_TYPE=LOCAL        # 本地守护(单机库)
INST_ERROR_TIME=10   # 实例故障认定时间阀值
INST_OGUID=20231230  # 目标实例的守护唯一标识
INST_INI=/dmdata/DMLOG/dm.ini   # 数据库实例dm.ini路径
INST_STARTUP_CMD=/opt/dmdbms/bin/dmserver  # 自拉起命令或服务脚本
INST_AUTO_RESTART=1   # 自动拉起开关     

将dmwatcher.ini放在config_path路径下
在这里插入图片描述
在这里插入图片描述

2.2.2 注册后台守护服务

注意:root账户执行脚本注册。注册脚本位于数据库软件的安装主目录script下。
/opt/dmdbms/script/root/dm_service_installer.sh -t watcher_ini /dmdata/DMLOG/dmwatcher.ini -p DMLOG

systemctl list-unit-files |grep DmW

在这里插入图片描述

2.2.3 配置dmmal.ini

配置文件统一存放于config_path路径。config_path查看方法见2.2.1

MAL_CHECK_INTERVAL = 5        # 链路检测间隔时间,单位秒。 
MAL_CONN_FAIL_INTERVAL = 5    # 链路连接异常认定时长,单位秒。

[MAL_INST0]
mal_inst_name=DMLOG           # 实例名,必须于dm.ini文件中参数instance_name取值相同。
mal_inst_host=192.168.1.120   # 对外提供数据库服务的实例地址。
mal_inst_port=5236            # 对外提供数据库服务的实例端口。
mal_inst_dw_port=7236         # 守护进程监测本地实例的监听端口,故障认定、状态检测
mal_host=192.168.1.120        # 内部链路监听地址。
mal_port=8236                 # 内部链路监听端口。
mal_dw_port=9236              # 本地守护进程监听端口,远程守护/监听器相互之间通讯端口

在这里插入图片描述

2.2.4 配置归档和守护OGUID

注意:
1)如果数据库已经开启归档,可省略本步骤。
2)归档空间上限space_limit设定根据实际情况。
3)如果不想因开启归档占用磁盘空间,可以忽略alter database add archivelog 步骤,它会产生一个大小为0的dmarch.ini配置文件(空内容),则以后数据库是不会实际产生任何归档日志的输出,但归档的开关对于实例守护是关键步骤,动作必做。

比如:我的测试环境单机库dmarch.ini
在这里插入图片描述

-- 配置归档和OGUID
SQL> alter database mount ;
SQL> SP_SET_OGUID(20231230);
SQL> alter database add archivelog 'type=local, dest=/dmdata/DMLOG/dmarch,file_size=128, space_limit=10240';
SQL> alter database archivelog ;
SQL> alter database open ;

确认查看数据库是否开启归档,两种方法
1)select arch_mode from v$database;
2)show parameter arch_ini

在这里插入图片描述

2.2.5 开启mal

通常情况下,单机库是没开启mal内部链路。

-- 修改此静态参数后,重启数据库才能生效
SQL> ALTER SYSTEM SET 'MAL_INI' = 1 SPFILE;
SQL> SELECT SF_GET_PARA_VALUE(1,'MAL_INI'), INSTANCE_NAME, OGUID FROM V$INSTANCE;

su - dmdba
DmServiceDMLOG restart

2.2.6 启动守护

su - dmdba
DmWatcherSerivceDMLOG start
ps -ef | grep dmw

2.2.7 测试dmserver异常退出

通过kill模拟dmserver异常故障,dmwatcher守护进程会自动拉起dmserver服务。

在这里插入图片描述

在这里插入图片描述


三、总结

  • 1)达梦的数据守护集群分不同时期的版本,现最常用的是数据守护4.0,不同版本的配置细节则不同,请根据实际版本正确配置。
  • 2)被守护数据库实例oguid和守护进程配置的oguid必须一致。
  • 3)本环境的测试版本数据地守护4.0,必须开启归档模式(满足归档开启就行【可能未具体配置归档参数】)和MAL链路(4个端口配置不可缺少【mal_inst_port/mal_inst_dw_port/mal_port/mal_dw_port】),这两个配置是守护的前提条件。
  • 4)对于数据库实例的故障认定时长(inst_error_time/mal_conn_fail_interval),根据自己的实际容忍时长而定,一般5秒左右足够。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构—环形缓冲区

写在前面,2023年11月开始进入岗位,工作岗位是嵌入式软件工程师。2024年是上班的第一年的,希望今年收获满满,增长见闻。 数据结构—环形缓冲区 为什么要使用环形数组,环形数组比起原来的常规数组的优势是什么&#xf…

Windows 10系统用Xlight FTP搭建SFTP服务器

步骤: 1.安装SFTP服务器 刚开始我使用的是freeSSHd,后面发现由于公司网络原因,打不开这个软件,改成了使用Xlight FTP, 官网下载链接:Xlight FTP 服务器 - 下载免费的windows FTP 服务器 Xlight FTP有30…

LocalSend 开源跨平台的局域网文件互传工具

如果您需要在多平台设备之间进行文件传输,例如从Windows电脑到安卓手机,或者从安卓手机到macOS,通常会使用聊天工具或者U盘进行传输。为了简化这一过程,推荐使用一款全平台支持的文件共享传输工具:LocalSend。 LocalS…

Qt通过pos()获取坐标信息

背景:这是一个QWidget窗体,里面是各种布局的组合,一层套一层。 我希望得到绿色部分的坐标信息(x,y) QPoint get_pos(QWidget* w, QWidget* parent) {if ((QWidget*)w->parent() parent) {return w->pos();}else {QPoint pos(w->po…

以 Serverfull 方式运行无服务器服务

当前 IT 架构中最流行的用例是从 Serverfull 转向 Serverless 设计。在某些情况下,我们可能需要以 Serverfull 方式设计服务或迁移到 Serverfull 作为运营成本的一部分。 在本文中,我们将展示如何将 Kumologica flow 作为 Docker 容器运行。通常&#x…

alibabaCloud学习笔记01(小滴课堂)

微服务架构常见的核心组件 讲解业务微服务架构常见解决方案 讲解AlibabaCloud核心组件介绍 创建数据库。 建表: 添加数据: 再建个用户库: 建表: 插入数据: 创建订单库: 建表: 创建项目&#x…

基于SpringBoot的旅游网站

目录 前言 开发环境以及工具 项目功能介绍 用户端: 管理端: 详细设计 用户端首页 登录页面 管理端页面 源码获取 前言 本项目是一个基于IDEA和Java语言开发基于SpringBoot的旅游网站。应用包含管理端和用户端等多个功能模块。 改革开放以来&am…

redis 三主六从高可用dockerswarm高级版(不固定ip)

redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) redis 三主六从高可用dockerswarm高级版(不固定ip) 此博客解决,redis加入集群后,是用于停掉后重启,将nodes.conf中的旧的Ip替换为新的…

【机器学习】卷积神经网络(五)-计算机视觉应用

七、应用-计算机视觉 7.1 人脸检测 DenseBox\Femaleness-Net\MT-CNN\Cascade CNN 介绍 VJ框架的分类器级联用于卷积网络 用于人脸检测的紧凑卷积神经网络级联 问题:作者希望实时检测高分辨率视频流中的正面,由于人脸图像和背景的多样性和复杂性&#xff…

Godot4.2——爬虫小游戏简单制作

目录 一、项目 二、项目功能 怪物 人物 快捷键 分数 游戏说明 提示信息 三、学习视频 UI制作 游戏教程 四、总结 一、项目 视频演示:Godot4爬虫小游戏简单制作_哔哩哔哩bilibili 游戏教程:【小猫godot4入门教程 C#版 已完结】官方入门案例 第…

【人工智能】百度智能云千帆AppBuilder,快速构建您的专属AI原生应用

大家好,我是全栈小5,欢迎来到《小5讲堂》,此序列是《人工智能》专栏文章。 这是2024年第5篇文章,此篇文章是进行人工智能相关的实践序列文章,博主能力有限,理解水平有限,若有不对之处望指正&…

ResNet论文阅读和简单实现

论文:https://arxiv.org/pdf/1512.03385.pdf Deep Residual Learning for Image Recognition 本模块主要是阅读论文,会做简单的翻译(至少满足我自己能看明白)。 Introduction 由上图可见,在20层和56层的网络上训练的…

Linux的chmod命令及快捷写法

通过chmod命令可以修改文件、文件夹的权限信息 只有文件、文件夹的所属用户或root用户可以修改 形式:chmod [-R] 权限 文件或文件夹 -R:对文件夹内的全部内容应用同样的操作 eg:chmod urwx,grx,ox test.txt ,将文件权限修改为…

python实现巴特沃斯低通滤波器——数字图像处理

原理: 巴特沃斯低通滤波器(Butterworth Low-Pass Filter)是图像处理中常用的一种频率域滤波器,它相较于理想低通滤波器提供了更平滑的过渡,以减少图像处理时引入的振铃效应。 设计原理: 巴特沃斯低通滤波…

隐藏层节点数对分类准确率的影响

直线上有9个格子,4个石子, 数量 结构编号 6 0 1 1 1 1 0 0 0 0 0 5 2 1 1 1 0 1 0 0 0 0 5 1 1 0 1 1 1 0 0 0 0 4 3 1 1 0 0 1 1 0 0 0 4 4 1 0 1 0 1 1 0 0 0 3 5 1 0 1 0 1 0 1 0…

Vue中的选项式 API 和组合式 API,两者有什么区别

Vue中的选项式 API(Option API)和组合式 API(Composition API)是两种不同的组件编写方式,它们各有特点和适用场景: 选项式 API(Option API): 传统方法:Vue最初的编程范式…

c# OpenCvSharp Cv2.Threshold()和Cv2.AdaptiveThreshold参数说明

一、 Cv2.Threshold()二值化的函数参数说明 Cv2.Threshold()是一个用于图像二值化的函数。具体来说,它会将图像中的每一个像素的灰度值与一个阈值进行比较,大于该阈值的像素会被赋值为最大灰度值(即 255),小于该阈值的像素会被赋值为最小灰度…

Python 自学(四) 之元组字典与集合

目录 1. 列表,元组,字典与集合的区别 2. 元组的创建和删除 tuple() del P101 3. 单个元素的元组 P102 4. 元组元素的修改 P106 5. 元组的使用场景 6. 字典的创建和删除 dict() zip() : del clear() P1…

SWM341系列之86盒智能开关应用

SWM341系列 86盒智能开关应用 华芯微特SWM341系列的SWM34SRET6,在86盒智能开关产品中的应用。 SWM34SRET6性能和UI的描述 SWM34SRET6是一款基于ARM Cortex-M33内核,最高主频可达150MHz时钟,提供内置512KB Flash,64KB SRAM&#…

【零基础入门TypeScript】TypeScript - 运算符

目录 ​编辑 什么是操作员? 算术运算符 关系运算符 逻辑运算符 按位运算符 赋值运算符 杂项运算符 否定运算符 (-) 字符串运算符:连接运算符 () 条件运算符 (?) 类型运算符 类型运算符 实例化 什么是操作员? 运算符定义将对数…