MySQL 延迟从库介绍

news/2024/9/21 3:17:04/文章来源:https://www.cnblogs.com/mysqljs/p/18386053

前言:

我们都知道,MySQL 主从延迟是一件很难避免的情况,从库难免会偶尔追不上主库,特别是主库有大事务或者执行 DDL 的时候。MySQL 除了这种正常从库外,还可以设置延迟从库,顾名思义就是故意让从库落后于主库多长时间,本篇文章我们一起来了解下 MySQL 中的延迟从库。

延迟从库介绍

延迟复制是一种特殊的复制策略,它允许从库在主库执行完数据变更后延迟一段时间再将这些变更同步到从库。这项功能从 MySQL 5.6 版本开始得到支持,区别于传统的异步复制(接近实时),比如用户误删除了重要的表,延迟复制特性保证了用户有机会从延迟的 slave 中恢复误删除的表。延迟特性是在 slave 中实现的,不会影响 master,relay log 的接收等,只是 sql_thread 执行更新的过程延迟了指定的时间。

配置延迟从库的方法是,在从库上执行 STOP SLAVE; 命令暂停复制过程,然后使用 CHANGE MASTER TO MASTER_DELAY = N; 设置延迟时间(单位为秒),之后再执行 START SLAVE; 命令重新启动复制过程
。在监控延迟从库状态时,可以通过 SHOW SLAVE STATUS \G 命令查看 SQL_Delay 和 Seconds_Behind_Master 参数,其中 SQL_Delay 表示设置的延迟时间,Seconds_Behind_Master 表示当前从库真正延迟的时间,正常情况下 Seconds_Behind_Master = SQL_Delay。

延迟从库使用场景

对比正常从库,延迟从库会落后于主库固定的时间,比如设置 3 小时或 6 小时,这样主库的更新操作会在 3 小时或 6 小时后在延迟从库执行。想象一下,若人为或程序 bug 误操作了数据,那我们是不是可以利用延迟从库来进行快速恢复,因为此时延迟从库还未执行到这个误操作的 SQL 。显而易见,延迟从库最大的应用场景就是用于快速恢复数据,对比筛选 binlog 或从备份中恢复这两种方式,延迟从库恢复都要简单便捷许多,特别是对于数据量比较大的实例。延迟从库恢复也有两种情况,一种是误操作的这个表变动很少,那么我们直接就可以在延迟从库上备份此表,然后导入主库即可。另一种情况是按时间点恢复,首先找到误操作语句的 GTID 或 position 点位,然后停止延迟从库同步进程,取消延迟,使用 START SLAVE UNTIL 语法指定条件,让同步进程在指定 gtid 点停下,这样这个延迟从库整体就回放到主库误操作前的时间点了,具体示例操作如下:

#在主库找到误操作的gtid,再往上一条gtid,设置同步截止点
mysql> STOP SLAVE;
mysql> change master to master_delay=0;
mysql> START SLAVE UNTIL SQL_AFTER_GTIDS='0a9a0b8b-4df3-11ed-a592-fa76892aa300:21741053';#同步到对应截止点后,SQL线程会自动停止。
mysql> show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.10.97Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: bin-log.000151Read_Master_Log_Pos: 39510957Relay_Log_File: relay-log.000004Relay_Log_Pos: 35271037Relay_Master_Log_File: bin-log.000151Slave_IO_Running: YesSlave_SQL_Running: No -> 到达设定的GTID值后,SQL线程会中断
...Until_Condition: SQL_AFTER_GTIDS -> 设置后这里会出现同步截止的关键信息Until_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 60859881Master_UUID: 0a9a0b8b-4df3-11ed-a592-fa76892aa300Master_Info_File: mysql.slave_master_infoSQL_Delay: 0
...Retrieved_Gtid_Set: 0a9a0b8b-4df3-11ed-a592-fa76892aa300:21562347-21747364Executed_Gtid_Set: 0a9a0b8b-4df3-11ed-a592-fa76892aa300:1-21741053 -> 同步截止点Auto_Position: 1Replicate_Rewrite_DB:Channel_Name:Master_TLS_Version:
# sql线程停止代表此从库已经回放至误操作前的时间点,之后我们就能备份误操作的表然后到主库进行恢复了

除了用于快速恢复外,延迟从库还有以下应用场景:

  • 备份和容错:延迟从库保留的也是一份完整的副本,可用于备份或故障切换。
  • 离线查询:延迟从库可以用于离线数据处理或批量分析任务,而不影响在线服务。
  • 审计和合规性:某些合规性要求可能需要保留数据的历史版本,延迟从库可以作为满足这些要求的一种手段。

总结:

通过以上介绍可以看出,延迟从库主要适用于需要增强数据安全性和提高系统可用性的场合。通过合理配置和监控,可以有效利用延迟从库的优势来增强数据库系统的稳定性、可靠性和性能。如果你的数据库实例有多个从库,不妨将其中一个设置为延迟从库,对于快速恢复数据还是很有作用的。

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

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

相关文章

使用open3d合并ply模型

import open3d as o3d from scipy.ndimage import binary_fill_holesdef merge_ply(ply1, ply2, output_path):# 加载两个多边形模型mesh1 = o3d.io.read_triangle_mesh(ply1)mesh2 = o3d.io.read_triangle_mesh(ply2)# 使用 + 运算符合并两个多边形模型merged_mesh = mesh1 + …

淘宝商品API接口:电商数据的金钥匙

在数字化浪潮的推动下,电商行业蓬勃发展,数据成为企业最宝贵的资产之一。淘宝,作为中国乃至全球最大的在线零售平台,其庞大的商品数据蕴含着无限商机。如何高效地获取并利用这些数据,成为电商从业者和开发者关注的焦点。本文将带您了解淘宝商品API接口的强大功能,以及如何…

DB9和DB15的引脚编号

1、DB9的引脚编号2、DB15的引脚编号

Win10笔记本,蓝牙设备自动断开

在Win10笔记本设备使用中,有些用户在使用蓝牙设备(蓝牙耳机)时常常会遇到自动断开问题,以下是参考解决方案:设置   ➡️  系统   ➡️  电源和睡眠   ➡️  其他电源设置由于默认的设置,会触发USB选择性暂停,将上图所圈出的配置,由已启用改为已禁用,然后确

[学习笔记] Splay Treap 平衡树 - 数据结构

[学习笔记] Splay & Treap 平衡树 - 数据结构 Splay 树又名伸展树,一种平衡二叉查找树,通过 \(\text{Splay}\) 操作不断把节点旋到根节点来维护整颗树的平衡。说人话,很玄学的玩意,复杂度是单 log 级别的。为啥是单 log,科学的解释请移步 OI-WIKI。不科学的解释就是,…

哈希-快乐数

解决这个问题的关键在于,判断结束遍历的条件,即当n!=1 或者 在循环过程中,没有出现过重复的数。class Solution:def isHappy(self, n: int) -> bool:def get_score(n):sum_ = 0while n > 0:end_ = n % 10sum_ += end_ ** 2 n = n // 10return sum_data_set = set()wh…

openGauss-资源池化特性说明

openGauss- 资源池化特性说明 可获得性 本特性自openGauss 3.1.1 版本开始引入。 特性简介 本特性提供主备机共享一份存储的能力,实现基于磁阵设备的资源池化HA部署形态,解决传统HA部署下存储容量较单机翻倍的问题,同时备机支持实时一致性读。资源池化架构图如下图所示。 图…

databaseId 不匹配导致Mybayis报错:Invalid bound statement (not found)

问题 后端调用Mapper方法报错:Invalid bound statement (not found) 排查过程按网上方式逐一排查,都未解决问题 网上搜不到解决方案,只能查看源码了 首先定位到com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean#buildSqlSessionFactory方法 打上一个…

nginx之ssl认证(https访问)

ngx_http_ssl_module ngx_http_ssl_module模块:  ssl on | off;            为指定虚拟机启用HTTPS protocol, 建议用listen指令代替  ssl_certificate file;         当前虚拟主机使用PEM格式的证书文件  ssl_certificate_key file;…

nginx基于用户的访问控制

ngx_http_auth_basic_module模块实现基于用户的访问控制,使用basic机制进行用户认证  auth_basic string | off;  auth_basic_user_file file;Default: —  Context: http, server, location, limit_exceptlocation /admin/ {     auth_basic "Admin Area"…

nginx输出nginx的基本状态信息

输出nginx的基本状态信息模块:ngx_http_stub_status_module 输出信息示例:Active connections: 291 server accepts handled requests #下面三个数分别对应accepts,handled,requests 16630948 16630948 31070465Reading: 6 Writing: 179 Waiting: 106 A…

什么样的数据摆渡系统才是业务部门需要的?

业务部门是数据摆渡系统的使用方,但数据摆渡系统却是有IT部门负责采购的,很多IT采购数据摆渡系统后,发现业务部门不使用或者使用效果不好,在服务满意度上难以获得好评,因此,业务部门需要的才是关键。那么,什么样的数据摆渡系统才是业务部门需要的呢? 1、使用便捷:没有…