|导读

MySQL延迟从库的好处多多,你了解吗

MySQL的主从复制(replication)关系,不太严谨的叫法是“同步”或者“主从同步”。实际上在早期,MySQL的主从并不能实现真正的“同步”(sync),而是“异步”的(async)。

MySQL主从复制它可以有多种模式,最经典的也是最早出现的异步复制(async replication),从5.5版本开始有了半同步复制(semi-sync replication),到了5.7又有了增强半同步。本文要讨论的延迟从库,也是在5.6之后才有的功能,在这之前需要用percona pt-slave-delay 工具来变相实现。

另外,从5.6版本开始增加了并行复制,不过这时还是基于schema的并行模式(slave-parallel-type=DATABASE),效率非常差,意义不大。到了5.7,才实现了真正的并行复制(slave-parallel-type=LOGICAL_CLOCK),复制效率提升很多;还有新增了多源复制,很方便的就能实现多主一从的架构。

了解完MySQL复制的简史,我们切入主题。

MySQL延迟从库的好处主要有几点:

1、误删除时,能更快恢复数据。

有时候手抖了,把线上数据给误删除了,或者误删除库、表、其他对象,或不加WHERE条件的更新、删除,都可以让延迟从库在误操作前的时间点停下,然后进行恢复。

2、把延迟从库作为专用的备份节点。

虽然有一定的延迟,但并不影响利用该节点作为备份角色,也不影响生产节点数据库库。

3、还可以把延迟从库当做一些问题、案例研究的对象。

个别时候,可能有些binlog event在普通从库上会有问题(例如早期版本中无主键会导致从库更新非常慢的经典问题),这时就有时间在延迟从库上慢慢琢磨研究了。

启用延迟从库的方法也挺简单的,下面是在MySQL 8.0的做法:

#直接用 CHANGE MASTER TO 设置,后面的N单位是秒数

CHANGE MASTER TO MASTER_DELAY = N

当发生误操作需要让延迟从库在某个位置上停下来时,用下面的命令:

START SLAVE

UNTIL {

#1、直到指定的GTID位置停下

{SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set

#2、直到指定的binlog位置停下

| MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos

#3、直到指定的relay log位置停下

| RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos

#4、直到slave上多个并行线程之前没有延迟差距了就停下

#因为多线程复制,不同线程的复制进度不一样,因此有差距

| SQL_AFTER_MTS_GAPS }

P.S,从5.7起,修改 MASTER_DELAY 选项可以在线立即生效,而无需重启 slave 线程。

至于具体 MASTER_DELAY 设置多少合适,要估算如果发生误操作时,DBA平均能到现场的时间,一般建议1小时左右。

延伸阅读

有问题请微信联系

微信:lvqingshan_

mysql从库延时好高_部署MySQL延迟从库的几个好处相关推荐

  1. Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑

    Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑: ############################################################ # ...

  2. mysql 自动化运维工具_部署MySQL自动化运维工具inception+archer

    *************************************************************************** 部署MySQL自动化运维工具inception+ ...

  3. 高密度部署,基于动态库的尝试,rust动态调库

    目录 前言 faas特点 方案 思考 实践 制作动态库 调用动态库 尾语 前言  最近在搞faas平台,也试了各大云厂商的产品,效果都不是很理想.和我心目中的faas想去甚远.  和小伙伴们吹完牛逼, ...

  4. mysql单台跨数据库查询_在MySQL中怎样进行跨库查询?

    在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...

  5. innodb 集群_部署MySQL InnoDB集群以实现高可用性

    innodb 集群 In this article, I am going to explain how we can deploy the MySQL InnoDB cluster. InnoDB ...

  6. mysql集群和主从区别_搭建MySQL主从集群,主从复制过程中同步延迟问题

    上一节我们成功搭建了主从复制.读写分离,实际上并发量和数据量不大的情况下,使用起来也是非常的流畅,无任何问题,可以正常运行了. 但是,要保证高可用,高并发的情况,可以写数据库master就有累了,从服 ...

  7. mysql技术innodb存储引擎读后感_《Mysql技术内幕-InnoDB存储引擎》读书笔记 (一)...

    @(Mysql) 官方数据库 下载 导入/data/mysql57/bin/mysql --socket /data/mysql3306/mysql.socket -uroot -ppassword1 ...

  8. mysql数据库是一个软件呐_【MySQL数据库软件、SQL】

    内容 数据库的基本概念 MySQL数据库软件 安装 卸载 配置 SQL 数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库. ...

  9. mysql 不会丢失数据吗_讨论MySQL丢失数据的几种情况

    1. 概述 很多企业选择MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么情况下,各种原因导致MySQL会丢失部分数据.本文不讨论Oracle和MySQL的优劣,仅仅关 ...

最新文章

  1. C++ 随机函数----谈rand() 和 srand() 体会
  2. UNIX/LINUX程序设计教程(1)-- 获取系统信息
  3. 2013版计算机应用基础,《计算机应用基础》实施细则(2013版)
  4. 关于reduce中遍历2次数据的问题
  5. intellij设置java中的代码中的import不折叠
  6. Android 封装一个通用的PopupWindow
  7. 连接数据库是显示无法连接到服务器,如何解决出现无法与数据库服务器建立连接的方法...
  8. LeetCode 1609. 奇偶树(层序遍历)
  9. Android心电数据分析,Android SurfaceView+Canvas画脉搏/心电数据图-Go语言中文社区
  10. linux下c 指针变量大小,C语言sizeof关键字
  11. Shiro的多Realm验证的实现--shiro实现不同身份使用不同Realm进行验证
  12. Timer源码之TaskQueue
  13. 瑞星对Windows7捆绑杀毒软件等消息的回应
  14. 微信H5页面内实现一键关注公众号
  15. php读取doc pdf文件,PHP读取创建txt,doc,xls,pdf类型文件
  16. SMing:2022年中青杯B题思路
  17. 贴片电阻封装功率数据选型
  18. WPF3D图片轮播效果
  19. 火影七代目的青鸟誓言
  20. Python语法--File文件处理

热门文章

  1. Dataguard学习笔记
  2. python脚本判断一个数是否为素数的几种方法
  3. 在新项目中要思考的技术点
  4. juniper CLI 基本操作
  5. 信息学奥赛一本通 1123:图像相似度 | OpenJudge NOI 1.8 06:图像相似度
  6. 信息学奥赛一本通(1321:【例6.3】删数问题(Noip1994))
  7. 信息学奥赛一本通(1015:计算并联电阻的阻值)
  8. 训练日志 2019.1.31
  9. Telephone Linse(POJ-3662)
  10. 猜数字(HDU-2178)