我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL45讲之保证高可用 - flowers

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL45讲之保证高可用 - flowers

MySQL45讲之保证高可用 - flowers

本文主要介绍 MySQL 主备延迟,延迟产生的原因和主备切换策略。

前言

本文主要介绍 MySQL 主备延迟,延迟产生的原因和主备切换策略。

主备延迟

主备同步过程中时间点主要有三个:

  1. 主库A执行完成一个事务,写入binlog,我们把这个时刻记为T1;

  2. 之后传给备库B,我们把备库B接收完这个binlog的时刻记为T2;

  3. 备库B执行完成这个事务,我们把这个时刻记为T3。

所谓主备延迟,指的就是同一个事务下,T3-T1 的时间差值。

主备延迟的计算,可以在备库下,通过 show slave status 命令查看,返回的结果中 seconds_behind_master 代表的就是主备延迟,单位是秒。它会等于(备机执行 binlog 时间戳 - binlog 记录的主机执行时间戳)。

一般在网络正常的情况下,备机接收主机发送的 binlog 很快,即 T2-T1 很小,可以忽略不计。主备延迟的主要来自于 T3-T2,这个时间差值代表备机执行中继日志(relay log)的速度比主机产生 binlog 日志的速度慢多少。

此外,你心里可能还会想主备机器系统时间不一致是否会影响主备延迟?
答案是不会的。因为在主备机器连接上之后,备机会获取主机的系统时间,然后和本机系统时间比较,计算出差值,在后面计算的时候都会带上这个差值

产生原因

1. 备机的性能比主机差

目前,这种部署少了,因为考虑到会进行主备切换,所以一般采用对称部署,即主备机采用一样的规格。

2. 备机压力大

主机用来完成写操作,而备机可能用于完成一些读操作,或者后台运营做一些数据分析的工作。备机的压力不比主机小,从而导致备机的同步延迟。

解决方案:

一主多从,多个从机分担查询压力
2、对于数据分析场景,可以将 binlog 同步到外部系统,像 hadoop。

3. 大事务

即便保证主备机压力基本一致,但大事务情况下,主备机都要耗费相近的执行时间,从而导致备机的同步延迟。所以,DBA 往往会叮嘱开发不要执行大事务。就算一定要执行,也要将大事务分割成多个小事务来执行。

4. 大表DDL

大表DDL会占用很多的 CPU 和 IO 资源,很容易造成主备延迟。所以,要比较安全的操作,建议采用 gh-ost 进行。

开发在线上执行 SQL 时一定要注意,不能执行大事务或者大表DDL这种耗时操作,尤其是比较重要的服务,否则会造成主备延迟,影响业务。

主备切换策略

1. 可靠性优先策略

切换步骤:

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

  2. 把主库A改成只读状态,即把readonly设置为true;

  3. 判断备库B的seconds_behind_master的值,直到这个值变成0为止;

  4. 把备库B改成可读写状态,也就是把readonly 设置为false;

  5. 把业务请求切到备库B。

可靠性优先的缺点在于主备机存在一段时间的不可用状态,不可用的时间长短取决于步骤 3,直到步骤 5 执行完成后才恢复。

2. 可用性优先策略

为了保证可用性优先,会先执行步骤 4、5,使得不可用时间为 0 。但是这可能会造成主备机的数据不一致。

参考

  • [1] MySQL是怎么保证高可用的

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL45讲之保证高可用 - flowers

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL45讲之保证高可用 - flowers

本文主要介绍 MySQL 主备延迟,延迟产生的原因和主备切换策略。 前言本文主要介绍 MySQL 主备延迟,延迟产生的原因和主备切换策略。主备延迟主备同步过程中时间点主要有三个:主库A执行完成一个事务,写入binlog,我们把这个时刻记为T1;之后传给备
MySQL45讲之保证高可用 - flowers
2017-08-07

MySQL45讲之用户关注案例 - flowers

本文介绍 MySQL45 讲中提到的一个用户关注的案例,并记录下可行的处理方案。 前言本文介绍 MySQL45 讲中提到的一个用户关注的案例,并记录下可行的处理方案。业务背景业务上有这样的需求,A、B两个用户,如果互相关注,则成为好友。存在两个表,关系(
MySQL45讲之用户关注案例 - flowers
2016-04-14

MySQL45讲之函数转换导致不使用索引 - flowers

本文介绍三种因为函数转换导致不使用索引的问题。 前言本文介绍三种因为函数转换导致不使用索引的问题。注意,不使用索引指的是不使用树搜索,而是全表扫描索引树。显式使用函数比如 select count(*) from tradelog where month
MySQL45讲之函数转换导致不使用索引 - flowers
2022-02-20

redis怎么保证高可用

redis高可用:如果你做主从架构部署,其实就是加上哨兵就可以了,就可以实现,任何一个实例宕机,自动会进行主备切换。哨兵机制 (推荐学习:Redis视频教程)有了主从复制的实现以后,如果想对主服务器进行监控,那
redis怎么保证高可用
2020-06-25

nginx如何保证高可用

要保证Nginx的高可用性,可以采取以下措施:1. 使用Nginx的主从模式:将Nginx配置为主服务器和一个或多个从服务器,主服务器处理所有的请求,并将请求转发给从服务器。当主服务器出现故障时,从服务器可以接管请求,确保服务的连续性。2.
2023-10-09

dubbo怎么保证高可用

要保证Dubbo的高可用性,可以采取以下措施:1. 集群容错:Dubbo提供了多种集群容错机制,如Failover、Failfast、Failsafe、Failback等,可以根据实际需求选择合适的集群容错策略。2. 负载均衡:Dubbo支
2023-10-09

Cassandra怎么保证数据的高可用性

Cassandra 通过以下几种方式来保证数据的高可用性:分布式架构:Cassandra 是一个分布式数据库系统,数据被分布存储在多个节点上,因此即使某个节点发生故障,其他节点上的数据仍然可以被访问。复制:Cassandra 支持数据的自动
Cassandra怎么保证数据的高可用性
2024-04-09

DynamoDB怎么保证数据的高可用性和持久性

DynamoDB通过多种方式保证数据的高可用性和持久性:多区域复制:DynamoDB支持全球性多区域复制,可以将数据在不同地理区域的多个区域中进行复制,确保数据在世界各地都有备份,提高了数据的可用性和持久性。自动故障转移:DynamoDB
DynamoDB怎么保证数据的高可用性和持久性
2024-04-09

Aurora数据库怎么保证高可用性和容错性

Aurora数据库是一种关系型数据库服务,它通过采用分布式架构和多副本机制来保证高可用性和容错性。以下是Aurora数据库如何实现高可用性和容错性的几种方法:多副本机制:Aurora数据库会将数据分布在多个存储节点上,并在每个存储节点上保留
Aurora数据库怎么保证高可用性和容错性
2024-04-09

Redis搭建主从复制实现高可用(如何保证 Redis 主从复制的高可用性?)

高可用 HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。
Redis搭建主从复制实现高可用(如何保证 Redis 主从复制的高可用性?)
2024-11-01

HBase如何保证数据在节点故障时的高可用性

HBase通过多种机制来保证数据在节点故障时的高可用性,主要包括以下几个方面:HBase的数据冗余存储HBase使用HDFS作为底层存储,数据默认存储三副本,确保数据的持久性和冗余性。当某个RegionServer发生故障时,其他Reg
HBase如何保证数据在节点故障时的高可用性
2024-10-19

Linux推送服务的消息推送如何保证高可用性和故障转移

在Linux系统中,可以使用一些工具和技术来保证消息推送服务的高可用性和故障转移。以下是一些常用的方法:使用负载均衡器:通过在消息推送服务前部署负载均衡器,可以将流量分发到多个消息推送服务器上,从而分散负载并提高服务的可用性。当其中一个服务
Linux推送服务的消息推送如何保证高可用性和故障转移
2024-08-22

编程热搜

目录