利用pt-heartbeat监控MySQL的复制延迟详解
pt-heartbeat
数据库做主从复制时,复制状态、数据延迟是否正常是非常关键的指标,那么如何对其进行监控呢?
pt-heartbeat 是 PERCONA 开发的一个工具集中的一个,专门用来监控MySQL和PostgreSQL的复制延迟。
比较成熟,例如Uber等大型公司都在使用。
下面来话不多说,来一起看看详细的介绍:
监控原理
在 master 中建一个 heartbeat 表,其中有一个 时间戳 字段,pt-heartbeat 会周期性的修改时间戳的值。
slave 会复制 heartbeat表,其中就包含了 master执行修改动作的时间戳,对其和 slave 的本地时间进行对比,得到一个差值,就是复制延迟的值,从而判断复制状态是否正常,以及延迟时间是否符合预期。
pt-heartbeat 是根据实际的复制记录来计算的,所以他不关心你使用什么方式进行复制。
pt-heartbeat 可以监控任意深度的复制层级,因为 heartbeat 表中有 server_id 字段,在监控某个 slave 的延迟时可以指定是参考哪个 server_id,例如想知道这个 slave 与其 master 的 master 的延迟情况,指定目标 master的 server_id 就可以了。
因为 pt-heartbeat 严格依赖时间,所以需要注意 master 与 slave 的时间一定要同步。
使用示例
对 master 执行创建心跳表的操作,并执行循环 update 操作,执行命令:
其中指定了 master 的连接信息, --create-table -D master1
是指在 master1这个数据库中创建心跳表,后面的参数指定执行 update 的时间间隔。
然后就可以对 slave 进行监控了,执行命令:
--monitor 参数指明是要进行监控,之前的是监控目标的信息,包括 slave 的连接信息、数据库和表名。
输出信息示例:
0.00s 表示现在的延迟信息,[ 0.00s, 0.00s, 0.00s ] 表示 1m,5m,15m 的平均值。
安装过程
下面是在CentOS7下的安装过程:
pt-heartbeat 的官方文档地址:https://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
详解MySQL主从复制读写分离搭建
MySQL主从设置 MySQL主从复制,读写分离的设置非常简单: 修改配置my.cnf文件 master 和 slave设置的差不多: [mysqld] log-bin=mysql-bin server-id=222 log-bin=mysql-bin的意思是:启用二进制日志. server-id=222的意思是设置了服务器的唯一ID,默认是1,一般取IP最后一段,可以写成别的,只要不和其他mysql服务器重复就好. 这里,有的MySQL默认的my.cnf文件引用了/etc/mysql/conf
-
Mysql 5.7从节点配置多线程主从复制的方法详解
前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有一个线程在工作.相当于还是以前的单线程. 从 Mysql 5.7 开始支持同一数据库下并行主从复制.不过默认情况下,还是单数据库单个线程,如果需要使用多线程,需要在从节点进行配置. Mysql 5.7 对主从复制增加了一种类型,共有两种类型,如下: DATABASE 基于库的并行复制 , 每个数据库
-
详解MySQL主从复制实战 - 基于GTID的复制
基于GTID的复制 简介 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交的事务在集群中有一个唯一的ID. 在原来基于日志的复制中, 从库需要告知主库要从哪个偏移量进行增量同步, 如果指定错误会造成数据的遗漏, 从而造成数据的不一致. 而基于GTID的复制中, 从库会告知主库已经执行的事务的GTID的值, 然后主库会将所有未执行的事务的GTID的列表返回给从库. 并且可
-
详解MySQL主从复制实战 - 基于日志点的复制
基于日志点的复制 1.在主库与从库上建立专用的复制账号 MariaDB [employees]> create user 'repl'@'172.%' identified by '123456'; 注意在生产上的密码必须依照相关规范以达到一定的密码强度, 并且规定在从库上的特定网段上才能访问主库 2.在主库与从库上授予复制权限 MariaDB [employees]> grant replication slave on *.* to 'repl'@'172.%'; 3.配置主库 注意启用二
-
Mysql中复制详细解析
1.mysql复制概念 指将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重新执行,从而使复制服务器和主服务器的数据保持同步.复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slaves).主服务器将更新重新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器.从服务器在日志中读取的最后一次成功更新的位置.从服务器接受从那时起发
-
MySQL5.7不停业务将传统复制变更为GTID复制的实例
由于GTID的优势,我们需要将传统基于file-pos的复制更改为基于GTID的复制,如何在线变更成为我们关心的一个点,如下为具体的方法: 目前我们有一个传统复制下的M-S结构: port 3301 master port 3302 slave master上(3301): [zejin] 3301>select * from t_users; +----+------+ | id | name | +----+------+ | 1 | hao | | 2 | zhou | +----+---
-
利用pt-heartbeat监控MySQL的复制延迟详解
pt-heartbeat 数据库做主从复制时,复制状态.数据延迟是否正常是非常关键的指标,那么如何对其进行监控呢? pt-heartbeat 是 PERCONA 开发的一个工具集中的一个,专门用来监控MySQL和PostgreSQL的复制延迟. 比较成熟,例如Uber等大型公司都在使用. 下面来话不多说,来一起看看详细的介绍: 监控原理 在 master 中建一个 heartbeat 表,其中有一个 时间戳 字段,pt-heartbeat 会周期性的修改时间戳的值. slave 会复制 hear
-
mysql过滤复制思路详解
目录 mysql过滤复制 主库上实现 从库上实现 一些问题 mysql过滤复制 两种思路: 主库的binlog上实现(不推荐,尽量保证主库binlog完整) 从库的sql线程上实现 所以主从过滤复制尽量不用,要用的也仅仅在从库上使用,因为要尽可能保证binlog的完整性 主库上实现 在Master 端为保证二进制日志的完整, 不使用二进制日志过滤. 主库配置参数: #配置文件中添加 binlog-do-db=db_name #定义白名单,仅将制定数据库的相关操作记入二进制日志.如果主数据库崩溃,
-
kernel利用pt regs劫持seq operations的迁移过程详解
目录 劫持seq_operations进行栈迁移 exp1 利用pt_regs exp2 劫持seq_operations进行栈迁移 seq_operations是一个大小为0x20的结构体,在打开/proc/self/stat会申请出来.里面定义了四个函数指针,通过他们可以泄露出内核基地址. struct seq_operations { void * (*start) (struct seq_file *m, loff_t *pos); void (*stop) (struct seq_fi
-
MySQL 复制表详解及实例代码
MySQL 复制表详解 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的. 本章节将为大家介绍如何完整的复制MySQL数据表,步骤如下: 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等. 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构. 如果你想复制表的内容,
-
变量延迟详解 call setlocal
对于批处理新手而言,"变量延迟"这个概念很可能闻所未闻,但是,它却像一堵横亘在你前进道路上的无形高墙,你感受不到它的存在,但当你试图往前冲时,它会把你狠狠地弹回来,让你无法逾越.无功而返:而一旦找到了越过它的方法,你就会发现,在for的世界里,前面已经是一片坦途,而你对批处理的理解,又上升到了一个新的境界. 例如,你编写了这样一个代码: @echo off set num=0&&echo %num% pause 你的本意是想对变量num赋值之后,再把这个值显示出来,结果
-
mysql 数据备份与恢复使用详解(超完整详细教程)
目录 一.前言 二.数据备份策略 1.全备 2.增备 3.差异备份 三.数据备份类型 1.冷备 2.热备 3.温备 四.前置准备 五.mysqldump 数据备份命令使用 1.命令格式 2.案例演示 3.其他重要参数选项补充 六.mysqldump 数据恢复 1.全量恢复 2.全量备份中恢复单库 3.从某个数据库中恢复单表数据 4.使用dump + binlog进行数据恢复 七.物理备份 八.表的导出与导入 1. 使用SELECT…INTO OUTFILE导出文本文件 2. 使用mysqldum
-
Spring整合MyBatis(Maven+MySQL)图文教程详解
一. 使用Maven创建一个Web项目 为了完成Spring4.x与MyBatis3.X的整合更加顺利,先回顾在Maven环境下创建Web项目并使用MyBatis3.X,第一.二点内容多数是回顾过去的内容 . 1.2.点击"File"->"New"->"Other"->输入"Maven",新建一个"Maven Project",如下图所示: 1.2.请勾选"Create a si
-
Javascript复制实例详解
在做项目时有一个需求,是需要复制内容到剪切板,因为有众多浏览器,所以要兼容性很重要. 1.最简单的copy,只能在IE下使用 使用clipboardData方法 <script type="text/javascript"> function copy(){ window.clipboardData.setData("text",document.getElementById("name").value); alert("T
-
Mysql Limit 分页查询优化详解
select * from table LIMIT 5,10; #返回第6-15行数据 select * from table LIMIT 5; #返回前5行 select * from table LIMIT 0,5; #返回前5行 我们来写分页 物理分页 select * from table LIMIT (当前页-1)*每页显示条数,每页显示条数; MySQL之Limit简单优化.md 同样是取90000条后100条记录,传统方式还是改造方式? 传统方式是先取了前90001条记录,取其中最
-
MySql二进制连接方式详解
使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库. 实例 以下是从命令行中连接mysql服务器的简单实例: 复制代码 代码如下: [root@host]# mysql -u root -p Enter password:****** 在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句. 以上命令执行后,登录成功输出结果如下: Welcome to the MySQL monitor. Commands
随机推荐
- PHP 万年历实现代码
- Three.js学习之文字形状及自定义形状
- Oracle 语句优化分析说明第1/2页
- 让Asp.NET的DataGrid可排序、可选择、可分页
- 浅谈javascript中的Function和Arguments
- 让Nginx支持shtml格式的配置方法
- PHP中将数组转成XML格式的实现代码
- Zend Framework页面缓存实例
- Python初学时购物车程序练习实例(推荐)
- VBS加密免杀器 下载
- 纯JSP+DWR实现三级联动下拉选择菜单实现技巧
- mysql查询结果输出到文件的方法
- Linux下Squid配置详解 Squid代理服务器配置第1/3页
- Powershell截取字符串并添加省略号的例子
- jquery中cookie用法实例详解(获取,存储,删除等)
- windows服务操作之删除服务 批处理实现
- C#判断一个字符串是否包含另一个字符串的方法
- php中通过curl smtp发送邮件
- android实现给未签名的apk签名方法
- nodeJS服务器的创建和重新启动的实现方法