cetus权限连接主从mysql_网易开源中间件 -Cetus监控模块

article/2025/9/23 18:12:46

01

概述

本文主要对Cetus的监控模块的使用及原理进行介绍,并介绍Cetus使用过程中,监控模块常见的问题及解决方法。

Cetus监控模块拥有独立的监控线程,主要是对Cetus后端各个MySQL实例进行监控,监控的内容主要包括三方面:

1 仅监控MySQL实例的存活状态;

2 监控主从复制延迟;

3 监控MGR集群中主从角色的转换及节点的增删。

下面章节将依次详细介绍。

02

相关参数

监控模块的参数主要分三类:1 用于检测后端各个MySQL实例时,使用的账号;2 是否开启主从延迟及主从延迟阈值;3 所支持的MySQL集群模式。

参数含义 default-username 检测后端MySQL实例所使用的账号。 注意,该账号的密码需要在users.json文件中正确配置。 check-slave-delay true表示检测主从延迟;false表示不检测主从延迟;默认为false 注意,true/false均小写。 slave-delay-down 延迟到达该阈值时,会将该DB摘掉,不再提供服务,单位是秒,默认60s slave-delay-recover 延迟恢复到该阈值时候,会使之前由于延迟过大摘除的DB重新提供服务,单位是秒,默认30s 。group-replication-mode 1表示支持单主MGR集群模式;0表示普通MySQL集群,默认为0; 注意,暂时不支持多主MGR模式 。

03

监控模版实现原理

3.1

监控存活状态

当Cetus没有配置参数check-slave-delay时,或配置该参数值为false时候,只会检测后端各个MySQL实例的存活状态,不会检测主从延迟。

Cetus会为监控模块维护一个连接池,按照后端MySQL实例的ip:port维度来管理连接池中各个连接。

Cetus会周期性(目前是3秒)的检测后端各个MySQL实例的状态。检测每个MySQL实例的状态时,会首先尝试从监控模块的连接池中,根据该MySQL实例的ip:port获取连接,如果成功从连接池中获取到连接,则会调用mysql_ping()来检测该MySQL实例是否存活;如果未能从连接池中成功获取连接,则需要调用mysql_real_connect()来创建新的连接,通过是否创建成功来判断该MySQL实例是否存活,创建成功的新连接也会随即加入监控模块连接池中。

3.2

监控主从延迟

当Cetus配置了参数check-slave-delay=true时,会检测主从延迟,主从延迟实时信息,可以通过命令select * from backends执行的结果的slave delay列来查看,如果该列显示的值为2147483647,则一般表示主从没有配置主从同步。

当主从同步延迟超过slave-delay-down时,该MySQL实例会被临时摘掉,不再处理新到来的SQL请求;如果主从同步延迟恢复到slave-delay-recover,该MySQL实例会恢复,重新提供服务。设置两个阈值的主要目的除了使业务使用更加灵活外,也为了防止在某个阈值附近波动,造成从库的频繁摘除、添加。

Cetus会周期性(300ms)的向主库的proxy_heart_beat.tb_heartbeat表更新当前时间戳,随后(50ms后)会从各个从库读取该时间戳,当前时间与该时间戳的差值,则作为主从延迟的时间。

主从延迟的检测依赖于proxy_heart_beat库的tb_heartbeat表,因此在开启Cetus主从延迟检测功能之前,需要在主库上创建proxy_heart_beat库和tb_heartbeat表,与此同时,default-user需要具有proxy_heart_beat.tb_heartbeat表的对应权限。当然也需要成功将该建表信息同步到各个从库上。

CREATE TABLEtb_heartbeat(p_idvarchar(128) NOT NULL,p_tstimestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (p_id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8;

3.3

支持MGR模式

普通的MySQL集群,主库的高可用一般通过MHA保障。当出现failover时,MHA会进行主从切换,并会通过Cetus的admin端口提供的命令,通知Cetus当前MySQL集群中拓扑结构的变化。

MySQL集群在MGR模式时,当出现failover时,MGR集群内部各个节点会主动进行主从角色的切换;同时可以处理节点的加入与退出。而MGR集群中的这些拓扑结构的改变,无法及时的通知Cetus,因此Cetus需要主动周期性探测MGR集群内部的拓扑结构的变化(节点角色转换、故障节点的删除、新节点的加入等)。

当MySQL集群配置为单主MGR模式后,不再需要使用MHA,需要在Cetus的配置文件中配置group-replication-mode=1,使得Cetus自动探测MGR集群拓扑结构的变化。

当设置group-replication-mode=1之后,Cetus的监控模块会在监控存活和监控主从延迟逻辑之前,首先进行拓扑结构的探测。探测时,会首先找到MGR集群中的当前可用的主库,再通过主库找到所有可用的从库,获得主从信息之后,便会修改Cetus内部现有的主从拓扑信息。Cetus中主从拓扑信息修改完成后,再进入监控存活或监控主从延迟的逻辑。

04

监控模版未来优化

后续Cetus的监控模块会考虑进一步优化,诸如:

监控账号单独,不再使用default-username账号进行监控,更好的进行权限管理。 监控各个MySQL实例时,通过返回值的不同进一步细化流程,提高监控效率和精准度。 监控线程检测的周期,支持参数化配置。

05

常见问题

5.1

monitor线程不工作

monitor线程不工作大致有两个原因:

a. 配置文件中配置了default-username=xxx,xxx没有在users.json中配置对应密码

日志中会打印提示信息如下:

2018-06-19 10:20:13: (warning) no password for , monitor will not work

如遇该问题,配置正确的参数,重启即可。

b. 配置文件中配置了disable-threads=true

日志中会打印提示信息如下:

2018-06-19 10:40:13: (message) monitor thread is disabled

该参数配置为true一般仅用于调试场景,线上环境不需要配置,默认为false。

5.2

连接不上MySQL

日志不断的提示监控线程连接不上某MySQL实例 日志中会打印提示信息如下:

2018-06-19 11:42:57: (critical) monitor thread cannot connect to backend: ght@172.17.0.5:3306

如遇该问题,当检查MySQL实例和网络没有问题的情况下,可能是由于MySQL实例上没有配置监控线程使用的账号。可以在Cetus所在机器使用监控账号直连MySQL实例,从而确定是否是账号配置的问题。

5.3

打印错误日志

日志中循环打印错误日志”Check slave delay no data” 日志中会打印提示信息如下:

2018-06-19 11:51:19: (critical) Check slave delay no data:select p_ts from proxy_heart_beat.tb_heartbeat where p_id=’/home/tsthght/cetus_install/conf_54321_12345’

该情况一般是由于从库没有从主库上将用于主从延迟检测的proxy_heart_beat.tb_heartbeat表或数据正确同步过来。将主从proxy_heart_beat.tb_heartbeat表数据同步即可。

61fc53a13168e33131b3edf153626954.pnge5f98615749ddc7cd9cc377e7e6f0dd9.png了解更多Cetus相关信息,欢迎参加2018年网易乐得数据库及运维分享会。

2018年网易乐得数据库及运维分享会

7月1日网易北京研发中心举行

名额有限,速度扫码报名

点击阅读原文也可以报名

——————————————

网易MySQL中间件Cetus开源啦

社群  cetus开源qq群号: 521824702

微信社群:扫码加入分享会群

欢迎分享

网易乐得DBA组负责网易乐得电商、网易邮箱、网易技术部数据库日常运维,负责数据库私有云平台的开发和维护,负责数据库及数据库中间件的开发和测试等,分享最前沿实用数据库干货,关注网易乐得DBA,精修数据库功底。

关注「网易乐得DBA」

了解数据库前沿技术


http://chatgpt.dhexx.cn/article/4LBpg242.shtml

相关文章

cetus(cetus talk)

Cetus公司于1991年退出什么? Cetus公司于1991年推出一种rTthReverseTran-scriptase,有很好的依赖于RNA的耐热DNA聚合酶活性和依赖于DNA的耐热DNA聚合酶活性,二种活性分别依赖于Mn2Mg2,这样就可分别控制酶活性 Cetus公司于1991年退…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · session-replay-tools/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · foxxnuaa/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · sea009/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · niumanniu/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · javadoge/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · gczheng/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · sqlercn/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · eonezhang/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

cetus权限连接主从mysql_cetus/cetus-rw.md at master · shop-zhang/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

数据库中间件 Cetus 2.3.6 读写分离版

搭建数据库主从集群并且初始化数据库 192.168.10.243 #cetus 192.168.10.250 #M 192.168.10.251 #S #开启延迟检测需要创建心跳表 create database if not exists proxy_heart_beat; use proxy_heart_beat; CREATE TABLE if not exists tb_heartbeat ( p_id varchar(128) NOT …

cetus权限连接主从mysql_cetus/cetus-rw.md at master · smudkey/cetus · GitHub

Cetus 读写分离版使用指南 简介 Cetus 读写分离版将前端发来的读请求和写请求分别发送到不同的服务器后端,由于底层的数据库都是Master/Slave架构,做到读写分离能大大提高数据库的处理能力。 安装部署 准备 1. MySQL 搭建MySQL主从关系 若开启主从延迟检…

数据库中间件 Cetus 2.3.6 分库版

数据库初始化 #cetus 192.168.10.243#数据库节点192.168.10.250 192.168.10.251 192.168.10.252 192.168.10.253#四台数据库初始化数据库和表 create database if not exists proxy_heart_beat; use proxy_heart_beat; CREATE TABLE if not exists tb_heartbeat ( p_id varcha…

【Cetus 介绍】

Cetus是由C语言开发的关系型数据库MySQL的中间件,主要提供了一个全面的数据库访问代理功能。Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实现了数据库层的水平扩展和高可用。 主要功能特性 Cetus分为读写分离…

基于 .Net Core、WPF 的多语言实现(一)

基于 .Net Core、WPF 的多语言实现(一) 学习 CultureInfo基于WPF 的CultureInfo 信息大全Startup.csMainWindow.XamlMainWindow.Xaml.cs 学习 CultureInfo 官方文档: CultureInfo . 提供有关特定区域性(对于非托管代码开发,则称…

使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)

概述 最近,有客户向我们请求开发一个前端下拉控件,需求是显示了一个列表,其中包含可由用户单独选择的项目控件,该控件将在下拉列表中显示多选TreeView(树形图)。 如今WijmoJS已经实现了该控件——DropDownT…

nodejs+express搭建javascript在线IDE及CodeMirror代码提示问题

title: js在线学习平台的介绍及安装 nodejsexpress搭建javascript在线IDE 项目地址 github:https://github.com/sixtrees/js-online-running 背景 这两天在看阮一峰的《ES6标准入门》,对其中涉及到的代码示例部分,感觉到很不方便,不知道阮老师…

Winform中实现向窗体中拖放照片并显示以及拖放文件夹显示树形结构(附代码下载)

场景 向窗体中拖拽照片并显示效果 向窗体中拖拽文件夹并显示树形结构效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 新建一个窗体,在窗体中拖…

Day 21-30 :Web前端概述

Web前端概述 说明:本文使用的部分插图来自Jon Duckett先生的*HTML and CSS: Design and Build Websites*一书,这是一本非常棒的前端入门书,有兴趣的读者可以在亚马逊或者其他网站上找到该书的购买链接。 HTML 是用来描述网页的一种语言&#…

托管 AJAX 能否让 Web 应用程序提速?

有关本主题的多项研究表明,创建 AJAX Web 应用程序时遇到的两个最重要问题是,运行速度和响应速度。这可能是一些开发者选择创建原生应用程序(而不是 Web 应用程序)的部分原因所在。 但如果我说有一种方法可以创建运行速度和响应速…