部署MySQL延迟从库的几个好处

|导读
MySQL延迟从库的好处多多,你了解吗mysql

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

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延迟从库的好处主要有几点:
一、误删除时,能更快恢复数据。
有时候手抖了,把线上数据给误删除了,或者误删除库、表、其余对象,或不加WHERE条件的更新、删除,均可以让延迟从库在误操做前的时间点停下,而后进行恢复。架构

二、把延迟从库做为专用的备份节点。
虽然有必定的延迟,但并不影响利用该节点做为备份角色,也不影响生产节点数据库库。异步

三、还能够把延迟从库当作一些问题、案例研究的对象。
个别时候,可能有些binlog event在普通从库上会有问题(例如早期版本中无主键会致使从库更新很是慢的经典问题),这时就有时间在延迟从库上慢慢琢磨研究了。async

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

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

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

START SLAVE
  UNTIL {
    #一、直到指定的GTID位置停下
    {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set

    #二、直到指定的binlog位置停下
    |   MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos
    
    #三、直到指定的relay log位置停下
    |   RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos

    #四、直到slave上多个并行线程以前没有延迟差距了就停下
    #由于多线程复制,不一样线程的复制进度不同,所以有差距
    |   SQL_AFTER_MTS_GAPS  }

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

至于具体 MASTER_DELAY 设置多少合适,要估算若是发生误操做时,DBA平均能到现场的时间,通常建议1小时左右。

延伸阅读

MySQL复制 | SLAVE复制为何停了
MySQL复制 | SLAVE延迟很大怎么办
MySQL复制 | 精确监控SLAVE延迟
MySQL复制 | 列类型被自动修改致使复制失败


有问题请微信联系微信:lvqingshan_

相关文章
相关标签/搜索