前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >监控因为带宽打满造成的 MySQL 复制延迟

监控因为带宽打满造成的 MySQL 复制延迟

作者头像
用户1148526
发布于 2024-04-29 00:13:13
发布于 2024-04-29 00:13:13
14800
代码可运行
举报
文章被收录于专栏:Hadoop数据仓库Hadoop数据仓库
运行总次数:0
代码可运行

目录

1. 写表版本

2. 写文件版本


1. 写表版本

监控脚本文件 get_Gtid_totable.sh 内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

source ~/.bash_profile

# 获取主库 binlog 位点
a=`mysql -uroot -p123456 -h172.30.4.6 -P3306 -e "show master status\G" 2>/dev/null | egrep 'f8e0355d-9d6e-11ee-8dcd-e43d1a47c7b7' | sed 's/,//' | awk -F: '{print $2}' | awk -F"-" '{print $2}'`

# 获取从库接收和执行 binlog 位点
b=`mysql -uroot -p123456 -S /data3/3306/mysqldata/mysql.sock -e "show slave status\G" 2>/dev/null | egrep 'f8e0355d-9d6e-11ee-8dcd-e43d1a47c7b7' | egrep -v "Master_UUID" | sed -e '1s/f8e0355d-9d6e-11ee-8dcd-e43d1a47c7b7:1-//g' | sed -e '2s/f8e0355d-9d6e-11ee-8dcd-e43d1a47c7b7:1-//g'`

# 获取从库延迟秒数
c=`mysql -uroot -p123456 -S /data3/3306/mysqldata/mysql.sock -e "show slave status\G" 2>/dev/null | egrep 'Seconds_Behind_Master' | sed 's/Seconds_Behind_Master: //g'`
Seconds_Behind_Master=`echo $c`

master_Executed_Gtid=`echo $a`
slave_Retrieved_Gtid=`echo $b | awk '{print $1}' | sed 's/.$//'`
slave_Executed_Gtid=`echo $b | awk '{print $2}' | sed 's/.$//'`

# 入库
mysql -h172.18.16.156 -P3306 -uroot -p123456 -e "
insert into test.t_lag_172_18_27_238 (master_Executed_Gtid, slave_Retrieved_Gtid, slave_Executed_Gtid,Seconds_Behind_Master)
values ("$master_Executed_Gtid","$slave_Retrieved_Gtid","$slave_Executed_Gtid","$Seconds_Behind_Master");"

只监控业务高峰期,用 cron 调度执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* 19-23 * * * /home/mysql/get_Gtid_totable.sh

建表语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- mysql 8
use test;
CREATE TABLE `t_lag_172_18_27_238` (
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `master_Executed_Gtid` bigint(20) DEFAULT NULL,
  `slave_Retrieved_Gtid` bigint(20) DEFAULT NULL,
  `slave_Executed_Gtid` bigint(20) DEFAULT NULL,
  `rlag` int(11) DEFAULT (greatest((`master_Executed_Gtid` - `slave_Retrieved_Gtid`),0)),
  `elag` int(11) DEFAULT (greatest((`slave_Retrieved_Gtid` - `slave_Executed_Gtid`),0)),
  `Seconds_Behind_Master` int(11) DEFAULT NULL
);

查询语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -h172.18.16.156 -P3306 -uroot -p123456 -Dtest -e "select ts \"时间\",rlag \"接收binlog落后事务数\",elag \"执行binlog落后事务数\",Seconds_Behind_Master \"延迟秒数\"from t_lag_172_18_27_238 where date(ts)='2024-04-25' order by Seconds_Behind_Master desc limit 10;" 2>/dev/null

结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+---------------------+-----------------------------+-----------------------------+--------------+
| 时间                | 接收binlog落后事务数        | 执行binlog落后事务数        | 延迟秒数     |
+---------------------+-----------------------------+-----------------------------+--------------+
| 2024-04-25 22:43:01 |                      144230 |                         112 |          119 |
| 2024-04-25 22:46:02 |                      137649 |                         981 |          118 |
| 2024-04-25 22:25:02 |                      146937 |                         186 |          115 |
| 2024-04-25 22:44:01 |                      135479 |                         898 |          114 |
| 2024-04-25 22:24:01 |                      140064 |                         258 |          112 |
| 2024-04-25 22:49:01 |                      146843 |                         228 |          111 |
| 2024-04-25 22:53:02 |                      146033 |                        2032 |          110 |
| 2024-04-25 22:26:02 |                      140634 |                           9 |          110 |
| 2024-04-25 22:23:01 |                      137269 |                         747 |          109 |
| 2024-04-25 22:40:02 |                      127012 |                         350 |          108 |
+---------------------+-----------------------------+-----------------------------+--------------+

接收binlog落后事务数很大,执行binlog落后事务数很小,说明引起复制延迟的瓶颈是带宽不足造成主库 binlog 无法及时传输到从库。复制延迟不是做的慢,而是收不到。

2. 写文件版本

监控脚本文件 get_Gtid_totable.sh 内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

source ~/.bash_profile

time1=$(date "+%Y-%m-%d %H:%M:%S").$((`date "+%N"`/1000000))

a=`mysql -uroot -p123456 -h172.30.4.6 -P3306 -e "show master status\G" 2>/dev/null | egrep 'f8e0355d-9d6e-11ee-8dcd-e43d1a47c7b7' | sed 's/,//' | awk -F: '{print $2}' | awk -F"-" '{print $2}'`

time2=$(date "+%Y-%m-%d %H:%M:%S").$((`date "+%N"`/1000000))

b=`mysql -uroot -p123456 -S /data3/3306/mysqldata/mysql.sock -e "show slave status\G" 2>/dev/null | egrep 'f8e0355d-9d6e-11ee-8dcd-e43d1a47c7b7' | egrep -v "Master_UUID" | sed -e '1s/f8e0355d-9d6e-11ee-8dcd-e43d1a47c7b7:1-/ Retrieved_Gtid: /g' | sed -e '2s/f8e0355d-9d6e-11ee-8dcd-e43d1a47c7b7:1-/  Executed_Gtid: /g'`

echo -e " 主库Gtid:"
echo $time1
echo -e "  Executed_Gtid: ""$a"
echo;
echo -e " 从库Gtid:"
echo $time2
echo "$b" | sed 's/.$//'
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[MYSQL] 新搭建个备库 却报错Last_SQL_Errno: 1396
在mysql 5.7.x环境使用Mysqldump搭建一个从库, 然后主库修改个密码, 从库就报错如下:
大大刺猬
2025/04/10
2300
MySQL 重做从库脚本
用户1148526
2024/04/10
1630
关于 MySQL GTID 复制
MySQL5.7以后都基本用GTID方式复制了,相对于binlog和position号方式,在failover时候减少很多人工切换操作
星哥玩云
2022/08/18
4280
【云+社区年度征文】测试MySQL主从复制中主库表缺失主键会导致主从延迟的情况
2、主库会有binlog dump线程实时监测binlog的变更并将这些新的events事件推给从库(Master has sent all binlog to slave; waiting for more updates)
AiDBA宝典
2020/12/07
2.3K1
【云+社区年度征文】测试MySQL主从复制中主库表缺失主键会导致主从延迟的情况
MySQL 主从同步配置
先在docker下创建几个 mysql server,docker-compose.xml 如下:
前Thoughtworks-杨焱
2021/12/07
2.6K0
Mysql的主从复制
答:主从同步的核心是二进制日志文件binary log,对数据库所有的增加、修改、删除操作都会在日志表里面记录一下的。mysql主从复制是异步的,串行化的,有延迟的,并不是实时的。
别先生
2020/09/01
1.3K0
Mysql的主从复制
使用 mysqldump 或 mydumper 配置 MySQL 主从复制
下载安装:https://github.com/mydumper/mydumper
用户1148526
2022/09/08
4850
MySQL主从复制之增强半同步(无损复制)、延迟复制和并行复制
MySQL有四种同步方式: 1、异步复制(Async Replication) 2、同步复制(sync Replication) 3、半同步复制(Async Replication) 4、增强半同步复制(lossless Semi-Sync Replication)、无损复制
AiDBA宝典
2023/04/26
7.5K0
MySQL主从复制之增强半同步(无损复制)、延迟复制和并行复制
MySQL 复制延迟怎么处理
‍我们在工作过程中,可能多多少少会遇到主从延迟的情况,这一节内容我们就来聊聊什么情况可能出现主从延迟,怎样判断延迟,存在延迟怎么处理。
数据库交流
2022/12/01
1.7K0
Promethues监控Mysql和Grafana可视化
导入模板7362 https://grafana.com/dashboards/7362
Linux运维技术之路
2022/06/07
1.3K0
Promethues监控Mysql和Grafana可视化
mysql主从误重复创建用户报错1396处理[通俗易懂]
问题: 在mysql主从或者mysql分布式架构某些时候主从中断,经分析发现重复创建用户导致。
全栈程序员站长
2022/09/22
1.4K0
MySQL 8.X 主从配置
Desc ✏️ 本文以基于GTID的复制示例 GTID(Global Transaction ID)是对于一个已提交事务的唯一编号,并且是一个全局(主从复制)唯一的编号。 它的官方定义如下: GTID = source_id :transaction_id 7E11FA47-31CA-19E1-9E56-C43AA21293967:29 什么是sever_uuid,和Server-id 区别? 核心特性: 全局唯一,具备幂等性 GTID核心参数 重要参数: gtid-mode=on
星哥玩云
2022/08/18
2290
基于腾讯云CVM构建MySQL MHA Keepalived集群
MHA是由perl语言编写的一款开源的MySQL的高可用程序,为MySQL主从复制架构提供了automating master failover功能。MHA可以自动检测mysql是否宕机,如果宕机,在10-30s内完成new master的选举,应用所有差异的binlog日志到所有slave,将所有的slave切换到新的master上来。
Vicwan
2019/04/06
9.4K0
基于腾讯云CVM构建MySQL MHA Keepalived集群
Kubernetes 部署 MySQL 主从服务
对于容器集群,有状态服务的挑战在于,通常集群中的任何节点都并非100%可靠的,服务所需的资源也会动态地更新改变。当节点由于故障或服务由于需要更多的资源而无法继续运行在原有节点上时,集群管理系统会为该服务重新分配一个新的运行位置,从而确保从整体上看,集群对外的服务不会中断。若采用本地存储,当服务漂移后数据并不会随着服务转移到新的节点,重启服务就会出现数据丢失的困境。
我是阳明
2021/03/01
2.6K0
【DB宝33】使用MySQL8.0.17的clone技术在线搭建主从复制环境
MySQL 8.0.17的克隆插件允许在本地或从远程 MySQL 实例在线克隆数据,从此搭建从库可以不再需要备份工具(PXB或mysqldump)来实现了。克隆数据是存储在 InnoDB 其中的数据的物理快照,其中包括库、表、表空间和数据字典元数据。克隆的数据包含一个功能齐全的数据目录,允许使用克隆插件进行 MySQL 服务器配置。
AiDBA宝典
2021/05/06
5520
【DB宝33】使用MySQL8.0.17的clone技术在线搭建主从复制环境
MySQL基于GTID主从复制入门
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data1/mysql/master/data
用户4700054
2022/08/17
4130
MySQL基于GTID主从复制入门
MYSQL命令pager推介
在日常操作MYSQL的工作中,妙用pager设置显示方式,可以很大可能的提高你的效率。例如我们平常有时候通过select查询出的结果非常多,超过好几屏幕,那么前面的结果看不到,整个结果的详细信息没法看全,这时候就可以使用pager调用系统的more或者less等命令显示查询结果了,跟在操作系统上用more和less查看大文件的效果是差不多的。
后场技术
2020/09/03
5190
MySQL 8 复制(四)——GTID与复制
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/91047395
用户1148526
2019/07/02
4.1K0
安全快速地删除 MySQL 大表数据并释放空间
        表中现有约 50 亿条数据,只保留 2023-10-01 以后的数据(约占总量的 1/10),其它删除。
用户1148526
2023/12/08
6191
MySQL 8 复制(三)——延迟复制与部分复制
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/90642712
用户1148526
2019/07/02
3.9K0
MySQL 8 复制(三)——延迟复制与部分复制
相关推荐
[MYSQL] 新搭建个备库 却报错Last_SQL_Errno: 1396
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验