部署MySQL延迟从库的好处小结

 更新时间:2019年05月10日 14:27:16   作者:运维派  
这篇文章主要给大家介绍了部署MySQL延迟从库的一些好处,文中通过示例代码介绍的非常详细,对大家学习或者使用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小时左右。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • 解决MySQL去除密码登录告警的问题

    解决MySQL去除密码登录告警的问题

    这篇文章主要介绍了MySQL去除密码登录告警的问题,解决方法是使用mysql_config_editor,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式

    mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式

    这篇文章主要为大家详细介绍了mysql8.0.11安装配置方法图文教程,以及MySQL8.0新密码认证方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 在MySQL中实现基于时间点的数据恢复

    在MySQL中实现基于时间点的数据恢复

    在MySQL中实现基于时间点的数据恢复是一个复杂但可行的过程,主要依赖于MySQL的二进制日志(Binary Log),本文介绍了实现此功能的一般步骤,并有详细的代码供大家参考,需要的朋友可以参考下
    2024-03-03
  • MySQL配置文件my.ini的使用解读

    MySQL配置文件my.ini的使用解读

    这篇文章主要介绍了MySQL配置文件my.ini的使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • mysql 8.0.24版本安装配置方法图文教程

    mysql 8.0.24版本安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.24版本安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • MySQL连接控制插件介绍

    MySQL连接控制插件介绍

    当连接数据库失败次数过多时,MySQL 是否会限制登录呢?数据库服务端应该怎么应对暴力破解呢?本篇文章介绍下 MySQL 中的连接控制插件,一起来学习下此插件的作用,需要的朋友可以参考下面文章内容
    2021-09-09
  • mysql大小写敏感导致程序无法启动的问题

    mysql大小写敏感导致程序无法启动的问题

    这篇文章主要介绍了mysql大小写敏感导致程序无法启动的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • MySQL数据表分区策略及优缺点分析

    MySQL数据表分区策略及优缺点分析

    项目开发中,随着数据库数据量越来越大,单个表中数据太多,从而导致查询速度变慢,而且由于表的锁机制导致应用操作也受到严重影响,出现了数据库性能瓶颈。因此我们需要考虑分表与分区,MySQL分表分区就是为了解决大数据量导致MySQL性能低下的问题。
    2021-05-05
  • 汇总整理MYSQL相关操作命令

    汇总整理MYSQL相关操作命令

    本文汇总了一些常用的mysql命令。
    2009-04-04
  • mysql自动停止 Plugin FEDERATED is disabled 的完美解决方法

    mysql自动停止 Plugin FEDERATED is disabled 的完美解决方法

    今天在配置服务器的时候,发现mysql的一个错误提示在 本地计算机 无法启动 MySQL 服务。错误 1067: 进程意外终止,其实原因很多这个不是导致进程意外终止的最终原因,但可以解决
    2016-04-04

最新评论