守护进程“独辟蹊径”

守护进程“独辟蹊径”

  • 一、前言
  • 二、实际运用
    • 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秒左右足够。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8Spod组件

一个pod能包含几个容器 一个pause容器(基础容器/父容器/根容器) 一个或者多个应用容器(业务容器) 通常一个Pod最好只包含一个应用容器,一个应用容器最好也只运行一个业务进程。 同一个Pod里的容器都是运行在同一个node节点上的,并且共享 net、…

解决Gitlab Prometheus导致的磁盘空间不足问题

解决Gitlab Prometheus导致的磁盘空间不足问题 用docker搭建了一个gitlab服务,已经建立了多个项目上传,但是突然有一天就503了。 df -TH查看系统盘,发现已经Used 100%爆满了。。。 💡Tips:/dev/vda1目录是系统盘目录。…

STM32 基础知识(探索者开发板)--135讲 ADC转换

ADC定义: ADC即模拟数字转换器,英文详称 Analog-to-digital converter,可以将外部的模拟信号转换 ADC数模转换中一些常用函数: 1. HAL_ADC_Init 函数 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc); 初始化ADC 形参&…

python大于等于小于等于,python大于等于怎么写

大家好,小编为大家解答python中大于等于且小于等于的问题。很多人还不知道python大于号小于号如何运用,现在让我们一起来看看吧! 大家好,小编来为大家解答以下问题,python中大于并小于一个数代码,python 大…

2016年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天我们来看2016年的AMC8竞赛真题的典型考题和解析,最后利用碎片化时间冲刺,查漏补缺,提高成绩。温馨提示:2024年AMC8比赛现在还可以报名,自由报名截止到1月7日,我这里有官方自由报名通道。后续官方模拟题…

SLURM作业管理系统之3种作业提交方式

文章目录 前言定义基本概念三种作业提交模式1. 批处理作业(采用 sbatch 命令提交)2. 交互式作业提交(采用 srun 命令提交)3. 分配模式作业(采用 salloc 命令提交) 管理节点部署Slurm常用命令 前言 在高性能…

数据分析基础之《numpy(6)—IO操作与数据处理》

了解即可,用panads 一、numpy读取 1、问题 大多数数据并不是我们自己构造的,而是存在文件当中,需要我们用工具获取 但是numpy其实并不适合用来读取和处理数据,因此我们这里了解相关API,以及numpy不方便的地方即可 2…

关于“Python”的核心知识点整理大全59

目录 19.3.2 将数据关联到用户 1. 修改模型Topic models.py 2. 确定当前有哪些用户 3. 迁移数据库 注意 19.3.3 只允许用户访问自己的主题 views.py 19.3.4 保护用户的主题 views.py views.py 19.3.6 将新主题关联到当前用户 views.py 往期快速传送门&#x1f44…

人工智能教程(四):概率论入门

目录 前言 TensorFlow 入门 SymPy 入门 概率论入门 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站 在本系列的 上一篇文章 中,我们进一步讨论了矩阵和线性代数&#…

【42页动态规划学习笔记分享】动态规划核心原理详解及27道LeetCode相关经典题目汇总

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…

QT上位机开发(数据库sqlite编程)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 编写软件的时候,如果用户的数据比较少,那么用json保存是非常方便的。但是一旦数据量大了之后,建议还是用数据库…

奋楫扬帆,奔赴新程 | 2023 年图扑大事记回顾,与您携手共迎 2024

2023.01 工信部公示了 2022 年度智能制造示范工厂揭榜单位和优秀场景名单。图扑软件和上海洲邦合作建设的宁波甬友数字孪生工厂被评为优秀场景,全国共有 369 个智能制造典型场景入选。 2023.01 在第十一届中国创新创业大赛全国赛(新一代信息技术&#…