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

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

部署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的做法:

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

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

  1. START SLAVE 
  2.   UNTIL { 
  3.     #1、直到指定的GTID位置停下 
  4.     {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set 
  5.      
  6.     #2、直到指定的binlog位置停下 
  7.     |   MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos 
  8.      
  9.     #3、直到指定的relay log位置停下 
  10.     |   RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos 
  11.      
  12.     #4、直到slave上多个并行线程之前没有延迟差距了就停下 
  13.     #因为多线程复制,不同线程的复制进度不一样,因此有差距 
  14.     |   SQL_AFTER_MTS_GAPS  } 

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

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

 

责任编辑:庞桂玉 来源: 数据库开发
相关推荐

2023-12-28 11:18:01

MySQL数据库级联从库

2024-04-12 08:54:13

从库数据库应用

2019-07-16 06:30:19

MySQL同步延迟数据库

2020-08-27 07:32:37

MySQL半成品状态

2010-06-04 10:49:56

MySQL数据库分区

2011-08-05 09:15:27

MySQL数据库索引

2020-09-27 14:40:10

超融合

2023-11-07 07:16:14

云计算AWS谷歌

2020-08-20 08:23:48

MySQL数据库技术

2010-06-10 13:42:51

MySQL数据库

2024-04-18 09:00:00

MySQL数据库

2010-07-19 11:37:09

FCoE

2011-05-19 09:53:33

数据库对象

2023-05-09 16:20:54

蓝绿部署CI/CD 管道自动化部署

2023-07-26 11:26:42

2017-12-27 13:07:52

数据库MySQL主从复制

2021-01-28 05:15:31

MySQL随机数据

2018-04-04 13:44:59

数据库MySQL延迟

2011-08-23 18:46:27

MySQLTIMESTAMP

2015-04-14 10:24:57

点赞
收藏

51CTO技术栈公众号