MySQL 延迟复制:确保数据安全与系统稳定的秘诀
MySQL 延迟复制:确保数据安全与系统稳定的秘诀
在 MySQL 主从复制架构中,数据的同步通常是实时的。然而,在一些特定场景下,我们可能不希望从库立刻同步主库的所有更新。特别是在高风险操作或者主库出现故障时,实时复制可能会导致数据丢失或错误迅速传播。此时,MySQL 的延迟复制(Delayed Replication)就显得尤为重要,它能让你控制数据同步的延迟时间,从而为你提供更多的应急处理时间。
今天,我们就来聊聊 MySQL 延迟复制的作用、配置方法以及应用场景,让你对这一功能有一个更加清晰的理解。
什么是 MySQL 延迟复制?
MySQL 延迟复制是指从库并不会实时同步主库的数据,而是根据预设的时间延迟一段时间后才进行数据同步。通常,主库会向从库发送数据更新,而从库会在延迟的时间后才执行这些更新。
为什么要使用延迟复制呢?
这个问题的答案其实很简单:延迟复制让从库暂时滞后于主库,给你更多时间去应对主库可能出现的故障或误操作。假设主库发生了不小心的删除操作或数据丢失,延迟复制就能帮助你避免这种错误在从库上也同步,从而为你提供“缓冲期”,减少风险。
延迟复制的配置方法
MySQL 提供了一些配置选项来帮助我们实现延迟复制。这里我将介绍几种常见的配置方法。
1. 配置 master-delay
在从库的配置文件中,你可以通过 master-delay 参数来设置延迟时间。这个参数指定了从库延迟同步主库更新的时间,单位是秒。
示例:在从库中设置延迟 10 秒
[mysqld]
master-delay = 10
这个配置意味着从库将在收到来自主库的数据更新后,延迟 10 秒才会应用这些更新。
2. 动态调整延迟时间
如果你需要动态调整延迟时间,MySQL 也提供了通过命令来修改延迟的方式。
SET GLOBAL master_delay = 10;
这个命令会将从库的延迟时间设置为 10 秒。你可以根据实际需求随时调整。
3. 启动复制
设置完 master-delay 后,就可以像正常的 MySQL 主从复制一样启动复制。通过以下命令配置主库和从库:
CHANGE MASTER TO MASTER_HOST='主库IP',MASTER_USER='复制用户',MASTER_PASSWORD='复制密码',MASTER_LOG_FILE='日志文件名',MASTER_LOG_POS=日志位置;
START SLAVE;
至此,从库就会开始按照你设置的延迟时间同步主库的数据。
延迟复制的应用场景
1. 防止误操作或故障恢复
在生产环境中,误操作或者应用故障可能导致主库数据丢失或者错误。如果没有延迟复制,从库会立即同步这些错误,导致整个系统出现问题。通过延迟复制,我们可以给自己留下一段缓冲期。如果主库出现问题,我们可以有足够的时间发现并修复错误。
示例:
假设你在主库上执行了一个删除操作,错误地删除了重要数据。如果没有延迟复制,从库也会立刻同步删除操作,导致数据丢失。但如果你设置了 30 秒的延迟复制,主库错误的数据删除不会立刻影响从库,给你留出时间进行数据恢复或回滚。
2. 减轻主库的压力
在高负载的情况下,主库可能会承受大量的写入操作。实时的复制可能会增加主库的负担,进一步拖慢响应速度。通过延迟复制,可以让从库滞后于主库,减少实时同步的压力,从而避免主库过载。
示例:
假设你的系统有一个高并发的写入操作,主库的压力已经很大。如果每次数据变更都要同步到从库,可能会进一步加重主库的压力。设置延迟复制,可以让从库在主库处理完当前请求后再进行同步,帮助分散负载。
3. 防止灾难性故障传播
在一些极端情况下,主库可能会遭受攻击,导致数据丢失或者不可用。如果没有延迟复制,主库出现故障后,从库会立刻同步这些错误或故障,甚至会让整个系统陷入瘫痪。通过延迟复制,至少从库可以滞后一段时间,给你更多的时间来采取紧急恢复措施。
示例:
假设主库发生了突然的硬件故障或遭到攻击,导致数据损坏。如果没有延迟复制,数据损坏会立刻同步到从库,丢失重要数据。但是如果设置了延迟复制,从库会滞后一定时间,给你机会来恢复主库上的数据,避免整个系统数据的丢失。
延迟复制的注意事项
-
延迟时间的适度控制
设置延迟时间时,要确保不要设置得过长。如果延迟时间过长,可能导致从库和主库的数据差距过大,增加了同步和恢复的复杂度。通常情况下,延迟时间不应超过 60 秒。 -
监控延迟时间
使用延迟复制时,要时刻监控从库的延迟情况。你可以使用SHOW SLAVE STATUS来查看从库的延迟信息,特别是Seconds_Behind_Master字段。SHOW SLAVE STATUS\G通过监控这些数据,你可以及时发现从库同步滞后的情况,确保系统运行的稳定性。
-
延迟复制和 GTID 复制的兼容性
如果你在使用 GTID 复制(全局事务标识符),请确保在使用延迟复制时,它们能够兼容运行。有些 MySQL 版本在启用 GTID 时可能需要特别配置延迟复制。
总结
MySQL 的延迟复制是一个非常实用的功能,它可以帮助我们在主库出现故障时,避免错误和数据丢失的快速传播,提供额外的恢复时间。它还能够减轻主库的负担,防止主库压力过大导致性能下降。
通过合理配置延迟时间,我们可以最大化地保证系统的高可用性和稳定性。希望这篇文章能帮助你更好地理解 MySQL 延迟复制的功能和使用场景,提升你对 MySQL 复制架构的运维能力。
如果你在实际操作中有其他问题或经验,欢迎在评论区分享!
相关文章:
MySQL 延迟复制:确保数据安全与系统稳定的秘诀
MySQL 延迟复制:确保数据安全与系统稳定的秘诀 在 MySQL 主从复制架构中,数据的同步通常是实时的。然而,在一些特定场景下,我们可能不希望从库立刻同步主库的所有更新。特别是在高风险操作或者主库出现故障时,实时复制…...
ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana
前言 你知道对于一个系统的上线考察,必备的几样东西是什么吗?其实这也是面试中考察求职者,是否真的做过系统开发和上线的必备问题。包括:服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志,如果…...
python实现自动登录12306抢票 -- selenium
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 python实现自动登录12306抢票 -- selenium 前言其实网上也出现了很多12306的代码,但是都不是最新的,我也是从网上找别人的帖子,看B站视频&…...
使用Diffusion Models进行图像超分辩重建
Diffusion Models专栏文章汇总:入门与实战 前言:图像超分辨率重建是一个经典CV任务,其实LR(低分辨率)和 HR(高分辨率)图像仅在高频细节上存在差异。通过添加适当的噪声,LR 图像将变得与其 HR 对应图像无法区分。这篇博客介绍一种方式巧妙利用这个规律使用Diffusion Mod…...
吾杯网络安全技能大赛——Misc方向WP
吾杯网络安全技能大赛——Misc方向WP Sign 题目介绍: 浅浅签个到吧 解题过程: 57754375707B64663335376434372D333163622D343261382D616130632D3634333036333464646634617D 直接使用赛博橱子秒了 flag为 WuCup{df357d47-31cb-42a8-aa0c-6430634ddf4a} 原神启动…...
Web安全 - “Referrer Policy“ Security 头值不安全
文章目录 概述原因分析风险说明Referrer-Policy 头配置选项1. 不安全的策略no-referrer-when-downgradeunsafe-url 2. 安全的策略no-referreroriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-origin 推荐配置Nginx 配置示例 在 Nginx 中配置 …...
C#OPC(上)
OPC(OLE for Process Control),用于过程控制的OLE,是一个工业标准,管理这个标准的国际组织是OPC基金会,OPC基金会现有会员以超过220家。遍布全球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。基于微软的O…...
Imgui + Cmake + OpenGL + GLFW 隐藏控制台窗口
网上一般是VS,如何在属性里面把控制台改为窗口 本文,使用Clion Cmake,实现如何隐藏控制台窗口 环境:OpenGL3 GLFW 添加头文件#include <windows.h>把main函数入口改为int WinMain(HINSTANCE hInstance, HINSTANCE hPrevI…...
Spring Boot(七):Swagger 接口文档
1. Swagger 简介 1.1 Swagger 是什么? Swagger 是一款 RESTful 风格的接口文档在线自动生成 功能测试功能软件。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。目标是使客户端和文件系统作为服务器以同样的…...
RabbitMQ - 4 ( 22000 字 RabbitMQ 入门级教程 )
一: RabbitMQ 高级特性 前面主要讲解了 RabbitMQ 的概念和应用。RabbitMQ 实现了 AMQP 0-9-1 规范,并在此基础上进行了多项扩展。在 RabbitMQ 官方网站中详细介绍了其特性,我们将其中一些重要且常用的特性挑选出来进行讲解。 1.1 消息确认 …...
印象笔记07——试一试PDF标注
印象笔记07——试一试PDF标注 [!CAUTION] 根据第六期,我再次查询了资料,印象笔记还是有一些可圈可点的功能的(当然部分有平替),针对会员作用,开发使用场景虽然是逆向的,但我坚信这是一部分人的现…...
Vue3实战教程》24:Vue3自定义指令
如果您有疑问,请观看视频教程《Vue3实战教程》 自定义指令 介绍 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)。 我们已经介绍了两种在 Vue 中重用代码的方式:组件和组…...
【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向
【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向 【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向 文章目…...
【ArcGIS Pro/GeoScene Pro】可视化时态数据
可视化过去二十年新西兰国际旅游业的发展变化 工程数据下载 ArcGIS Pro 快速入门指南—ArcGIS Pro | 文档 添加数据 数据为中国旅客数据 转置表字段 列数据转行数据...
Linux buildroot和ubuntu的异同点
Buildroot 和 Ubuntu 都是 Linux 系统的操作环境,但它们的设计理念和使用场景有很大的不同。 一、定义与目标 Buildroot Buildroot 是一个用于生成嵌入式 Linux 系统的工具集,专注于交叉编译和构建嵌入式设备的最小 Linux 环境。它的目标是为嵌入式系统提供定制化和优化的…...
k8s系列--通过docker拉取的镜像导入到 containerd中
要将通过 docker pull 拉取的镜像导入到 containerd 中,可以按照以下步骤操作: 步骤 1:使用 docker 将镜像保存为 tar 文件 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.11.1 docker save registry.cn-ha…...
Spring Boot(快速上手)
Spring Boot 零、环境配置 1. 创建项目 2. 热部署 添加依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency&…...
note 41:账务系统开发规范
目录 系统设计 防重控制 流量控制 并发控制 异常处理 备份机制 系统开发 前端队列操作 外系统交互 系统设计 防重控制 对于进入到系统中的数据(文件导入、手工录入、系统直连等)以及本系统发往外…...
基于嵌入式无人机UAV通信系统的实时最优资源分配算法matlab仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于嵌入式无人机UAV通信系统的实时最优资源分配算法matlab仿真。具体参考文献: 考虑使用UAV作为中继辅助节点的设备到设备(D2D)无线信息和…...
《Vue3实战教程》35:Vue3测试
如果您有疑问,请观看视频教程《Vue3实战教程》 测试 为什么需要测试 自动化测试能够预防无意引入的 bug,并鼓励开发者将应用分解为可测试、可维护的函数、模块、类和组件。这能够帮助你和你的团队更快速、自信地构建复杂的 Vue 应用。与任何应用一…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
