MySQL主从架构之Slave数据滞后Master怎么办?教你一招制敌!

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL主从架构之Slave数据滞后Master怎么办?教你一招制敌!

写在开篇,问题现象

这个是说主从复制中由于某些原因从库的数据总是滞后于主库,这时候就需要我们手动定期的进行主从库的数据同步了,使得主从数据差距能够减到最小。常用的方法就是:在负载较低时暂时阻塞主数据库的更新,强制主从数据库更新同步。

一般,通常,大部分来说,slave的数据滞后于master的主要原因是:slave因某些未知的原因没有连接上master,比如下面的情况,在slave服务器上查看复制的状态,发现Replica_IO_Running和Replica_SQL_Running两个线程都是NO,其实,只要有1个是NO,那么都是不正常的,因此要确保两个线程都是YES。

mysql> show replica status\G;
*************************** 1. row ***************************
             Replica_IO_State: Queueing source event to the relay log
                  Source_Host: 192.168.11.151
                  Source_User: syn_a
                  Source_Port: 3306
                Connect_Retry: 60
              Source_Log_File: mysql-bin.000030
          Read_Source_Log_Pos: 44702579
               Relay_Log_File: zbx-db02-relay-bin.000003
                Relay_Log_Pos: 25782831
        Relay_Source_Log_File: mysql-bin.000029
           Replica_IO_Running: NO
          Replica_SQL_Running: NO

小小的温馨提示:不过还有一些不可预知的情况,就算Slave库的IO线程和SQL线程都是YES,说不定slave的数据也是滞后于master,那么不管什么原因导致slave的数据滞后于master,那么都可以通过手动定期的进行主从库的数据同步。


开始手动同步操作

  1. 在master上操作
# 1. 在master上锁表,阻止应用写入或更新数据
```shell
FLUSH TABLES WITH READ LOCK;
# 2. 查看master状态
查主库状态
mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000047
         Position: 27610714
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 9208096f-4731-11ec-a23e-005056210589:1-22,
92099aae-4731-11ec-a3da-00505629525b:1-820702
1 row in set (0.00 sec)
ERROR: 
No query specified
mysql>

记住上面的这两个数值,File的二进制文件名字mysql-bin.000047,Position的数值27610714,这个数值是从库复制的目的坐标。

  1. 在slave上操作 在从库上,执行内置的MASTER_POS_WAIT函数
mysql> select MASTER_POS_WAIT('mysql-bin.000047','27610714');
+------------------------------------------------+
| MASTER_POS_WAIT('mysql-bin.000047','27610714') |
+------------------------------------------------+
|                                              0 |
+------------------------------------------------+
1 row in set, 1 warning (0.32 sec)

通过select语句执行MASTER_POS_WAIT函数后,会进入阻塞状态,直到从库达到指定的日志文件和偏移量后,正常的话就返回0,否则返回-1,如果返回-1,则表示超时退出。

  1. 最后再回到master上操作 在主库上执行解锁操作,使其能够进行读写。
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.01 sec)

写在最后

如果按笔者的方法不能让您一招制敌,那请你关注我,我免费帮你修。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
16
分享
相关文章
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
472 3
Mysql高可用架构方案
MySQL的架构与SQL语句执行过程
MySQL架构分为Server层和存储引擎层,具有高度灵活性和可扩展性。Server层包括连接器、查询缓存(MySQL 8.0已移除)、分析器、优化器和执行器,负责处理SQL语句;存储引擎层负责数据的存储和读取,常见引擎有InnoDB、MyISAM和Memory。SQL执行过程涉及连接、解析、优化、执行和结果返回等步骤,本文详细讲解了一条SQL语句的完整执行过程。
68 3
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
207 1
MySQL原理简介—2.InnoDB架构原理和执行流程
本文介绍了MySQL中更新语句的执行流程及其背后的机制,主要包括: 1. **更新语句的执行流程**:从SQL解析到执行器调用InnoDB存储引擎接口。 2. **Buffer Pool缓冲池**:缓存磁盘数据,减少磁盘I/O。 3. **Undo日志**:记录更新前的数据,支持事务回滚。 4. **Redo日志**:确保事务持久性,防止宕机导致的数据丢失。 5. **Binlog日志**:记录逻辑操作,用于数据恢复和主从复制。 6. **事务提交机制**:包括redo日志和binlog日志的刷盘策略,确保数据一致性。 7. **后台IO线程**:将内存中的脏数据异步刷入磁盘。
119 12
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
【赵渝强老师】MySQL的体系架构
本文介绍了MySQL的体系架构,包括Server层的7个主要组件(Connectors、Connection Pool、Management Service & Utilities、SQL Interface、Parser、Optimizer、Query Caches & Buffers)及其作用,以及存储引擎层的支持情况,重点介绍了InnoDB存储引擎。文中还提供了相关图片和视频讲解。
274 2
【赵渝强老师】MySQL的体系架构
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
大数据-145 Apache Kudu 架构解读 Master Table 分区 读写
大数据-145 Apache Kudu 架构解读 Master Table 分区 读写
82 0