《MySQL——主备切换流程与主备延迟》

目录

    • 主备切换
    • 主备延迟的原因
    • 可靠性优先策略的主备切换流程
    • 可用性优先策略的主备切换流程

主备切换

主备切换分为主动运维与被动操作。

软件升级、主库所在机器按计划下线为主动运维。

主库所在机器掉电为被动操作。

同步延迟

1、主库A执行完一个事务,写入binlog,时刻T1

2、传给备库B,备库B接受完这个binlog,时刻T2;

3、备库B执行完这个事务,时刻T3;

同一个事务,在备库执行完成的时间和主库执行完成的时间之差为T3-T1,又称主备延迟。

在备库执行show slave status命令会显示seconds_behind_master,表示备库延迟了多少秒。

主备库机器系统时间设置不一样并不会导致主备延迟的值不准。

在网络正常的时候,日志从主库传给备库的时间T2-T1是很短的。也就是说网络正常时,主备延迟的主要来源是备库接受完binlog和执行这个事务之间的时间差。

主备延迟最直接的表现就是:备库消费中转日志(relay log)的速度,比主库生产binlog的速度慢。

主备延迟的原因

1、备库所在机器的性能可能比主库所在的机器性能差

2、备库压力大。(主库提供写能力,备库提供读能力)

由于主库直接影响业务,使用起来比较克制,反而忽视了备库的压力控制。结果就是,备库上的查询耗费了大量的CPU资源,影响了同步速度,造成主备延迟。

这种情况可以这么解决:

1、一主多从。除了备库外,可以多接几个从库,让这些从库来分担读的压力2、通过binlog输出到外部系统,让外部系统提供统计查询的能力

3、大事务情况

由于主库必须等事务执行完才会写入binlog,再传给备库。

如果一个主库上的语句执行10分钟,那么这个事务很可能会导致从库延迟10分钟。

典型大事务场景

a、一次性删掉大量历史数据。需要控制每个事务删除的数据量,分成多次删除

b、大表DDL

4、备库并行复制能力差

可靠性优先策略的主备切换流程

在M-M结构下,状态1切换到状态2流程如下:

1、判断备库B现在的seconds_behind_master,如果小于某个值(比如5s)继续下一步,否则继续重试这一步

2、把主库A改成只读状态,(readonly设置为true)

3、判断备库B的seconds_behind_master,直到这个值变为0

4、把备库改成可读写状态,(readonly设置为false)

5、把业务请求切换到备库B

step2之后,主库A和备库B都处于readonly状态,此时系统处于不可写状态,直到step5才能恢复。step3比较耗时。

可用性优先策略的主备切换流程

如果强行把上面的step4、5调整到最开始执行,也就是说不等主备数据同步,直接把连接切到备库B,并且让备库B可以读写,那么系统几乎没有不可用时间。

这个切换流程,称为可用性优先流程,不过这个切换的代价,就是可能出现数据不一致的情况。

结论如下:

1、使用row格式的binlog时,数据不一致的问题更容易被发现。使用mixed或者statement格式的binlog时,数据很可能就不一致了。

2、主备切换的可用性优先策略会导致数据不一致,所以一般情况下使用可靠性优先策略。

下面介绍一个使用可用性优先策略的情形:

  • 有一个库的作用是记录操作日志。如果数据不一致可以通过binlog来修补,而这个短暂的不一致也不会引发业务问题。

  • 同时,业务系统依赖于这个日志写入逻辑,如果这个库不可写,会导致线上的业务操作无法执行。

如果使用可靠性优先的思路,只能等待备库慢慢应用中转日志,在备库应用完中转日志且切换成读写状态之前,数据库是处于不可用的状态。 这时也不能直接切换到备库B,然后保持B库只读。

所以此时就需要用到可用性优先策略。

Mysql的高可用性,依赖于主备延迟。主备延迟的时间越小,出现故障的时候,服务需要恢复的时间就越短,可用性就越高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ejb模式_EJB的完整形式是什么?

ejb模式EJB:企业Java Bean (EJB: Enterprise Java Bean) EJB is an abbreviation of Enterprise Java Bean. EJB is one of many Java application programming interfaces (API) for flexible and manageable structuring of Java Platform, Enterprise Edition (J…

Android之PreferenceActivity

http://www.cnblogs.com/wservices/archive/2010/07/08/1773449.html 看到很多书中都没有对PreferenceActivity做介绍,而我正好又在项目中用到,所以就把自己的使用的在这总结一下,也方便日后查找。 PerferenceActivity是什么,看下…

浅谈算法和数据结构: 七 二叉查找树

前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的时候具有较高的灵活性,而有序数组在查找时具有较高的效率,本文介绍的二叉查找树(Binary Search Tree,BST)这一数据结构综合了以上两种数据结构的优点。…

scala部分应用函数_Scala中的部分函数

scala部分应用函数Scala部分功能 (Scala partial functions) A partial function is a function that returns values only for a specific set of values i.e. this function is not able to return values for some input values. This function is defined so that only som…

《MySQL——备库多线程复制策略。》

目录备库并行复制能力MySQL5.6版本 并行复制策略MariaDB 并行复制策略MySQL5.7版本 并行复制策略MySQL5.7.22版本 并行复制策略总结备库并行复制能力 主要涉及两个方面的并行度: 1、客户端写入主库的能力 2、备库上sql_thread执行中转日志relay log 1的并行能力…

人脸是门大生意

我们正处在一个新时代的入口。人有70%的能量是被大脑消耗,大脑90%的能量用来处理视觉信息,人脸则承载了绝大部分的视觉信息。我们要讨论的是一个比Google Glass更酷的世界。文/程苓峰-云科技网易邮箱的用户已经可以用人脸而不是密码来验证登陆。安卓4.0实…

【SQL】sql版Split函数。用于拆分字符串为单列表格

【SQL】sql版Split函数。用于拆分字符串为单列表格 功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行。可选是否移除空格子串和重复项。市面上类似的函数不算少,但大…

线描算法

线描算法 (Line drawing algorithms) The equation for a straight line is ymxb 直线方程为y mx b In this m represent a slope of a line which can be calculated by the my2-y1/x2-x1 where (x1, y1) are the starting position of the points and (x2, y2) are the end…

为移动端网页构造快速响应按钮

背景 在谷歌,我们不断地推测手机网页应用的可能性。像HTML5这样的技术使我们网页版的应用以及运行在手机设备上的原生应用。而这些技术的成就之一就是我们开发了一种新的创建按钮的方法,使按钮的响应时间远远快于一般的HTML按钮。在此之前的按钮或者其他…

Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解+使用教程

Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解使用教程 Red Gate系列文章: Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解使用教程 Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制…

《MySQL——基于位点orGTID的主备切换协议》

一主多从的设置,用于读写分离,主库负责所有的写入和一部分读,其他读请求则由从库分担。 一主多从架构下,主库故障后的主备切换问题。相比于一主一备,多了从库指向新主库的过程。 基于位点的主备切换同步 把节点B设…

数据科学和统计学_数据科学中的统计

数据科学和统计学统计 (Statistics) Statistics are utilized to process complex issues in reality with the goal that Data Scientists and Analysts can search for important patterns and changes in Data. In straightforward words, Statistics can be utilized to ge…

java随机数生成(固定位数)

随机生成 a 到 b (不包含b)的整数:(int)(Math.random()*(b-a))a; 随机生成 a 到 b (包含b)的整数:(int)(Math.random()*(b-a1))a;转载于:https://www.cnblogs.com/zhwl/p/3624726.html

POJ 3670 Eating Together

POJ_3670 由于递增和递减是类似的,下面不妨只讨论变成递增序列的情况。 由于Di只有三个数,所以可以考虑将序列分割成三部分,第一部分全部变成1,第二部分全部变成2,第三部分全部变成3。然后我们枚举3开始的位置&#xf…

《MySQL——如何解决一主多从的读写分离的过期读问题》

目录两种架构两种架构特点强制走主库方案Sleep方案判断主备无延迟方案配合semi-sync等主库位点方案GTID方案两种架构 基于一主多从的读写分离,如何处理主备延迟导致的读写分离问题。 读写分离的主要目标:分摊主库压力。 有两种架构: 1、客…

json/ 发送形式_24/7的完整形式是什么?

json/ 发送形式24/7:二十四 (24/7: Twenty-Four Seven) 24/7 or 24-7 service, which generally marked "twenty-four seven" is service that is existing at any time and typically, every day in trade business and industry. Substitute orthograph…

《MySQL tips:并发查询与并发连接区别》

并发连接与并发查询,并不是一个概念。 在执行show processlist的结果里,看到了几千个连接,指的是并发连接。 而"当前正在执行"的语句,才是并发查询。 并发连接数多影响的是内存。 并发查询太高对CPU不利。一个机器的…

对上拉下拉电阻的作用作个总结(想了解的过来看看)(转载)

转自:http://www.amobbs.com/thread-5475279-1-3.html 一、定义:上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!下拉同理!上拉是对器件注入电流,下拉是输出电流;弱强只是…

给用户传入的变量进行转义操作

先看代码实现: /* 对用户传入的变量进行转义操作。*/ if (!get_magic_quotes_gpc()) {if (!empty($_GET)){$_GET addslashes_deep($_GET);}if (!empty($_POST)){$_POST addslashes_deep($_POST);}$_COOKIE addslashes_deep($_COOKIE);$_REQUEST addslashes_…

《MySQL——外部检测与内部统计 判断 主库是否出现问题》

目录select1判断查表判断更新判断外部检测弊端内部统计一主一备的双M架构里,主备切换只需要把客户端流量切换到备库。 在一主多从的架构里,主备切换要把客户端流量切换到备库,也需要把从库接到新主库上。 切换有两种场景:1、主动…