iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL45讲之保证高可用 - flowers
  • 297
分享到

MySQL45讲之保证高可用 - flowers

MySQL45讲之保证高可用-flowers 2017-08-07 13:08:48 297人浏览 无得
摘要

本文主要介绍 Mysql 主备延迟,延迟产生的原因和主备切换策略。 前言 本文主要介绍 mysql 主备延迟,延迟产生的原因和主备切换策略。 主备延迟 主备同步过程中时间点主要有三个: 主

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 。但是这可能会造成主备机的数据不一致。

参考

您可能感兴趣的文档:

--结束END--

本文标题: MySQL45讲之保证高可用 - flowers

本文链接: https://www.lsjlt.com/news/8815.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • nginx如何保证高可用
    要保证Nginx的高可用性,可以采取以下措施:1. 使用Nginx的主从模式:将Nginx配置为主服务器和一个或多个从服务器,主服务...
    99+
    2023-10-09
    nginx
  • dubbo怎么保证高可用
    要保证Dubbo的高可用性,可以采取以下措施:1. 集群容错:Dubbo提供了多种集群容错机制,如Failover、Failfast...
    99+
    2023-10-09
    dubbo
  • Cassandra怎么保证数据的高可用性
    Cassandra 通过以下几种方式来保证数据的高可用性: 分布式架构:Cassandra 是一个分布式数据库系统,数据被分布存...
    99+
    2024-04-09
    Cassandra
  • Cassandra怎么保证高可用性和容错性
    Cassandra保证高可用性和容错性通过多个机制: 分布式架构:Cassandra采用分布式架构,数据被分布在多个节点之间,每...
    99+
    2024-04-02
  • MySQL高可用之主备同步:MySQL是如何保证主备一致的
    🏆今日学习目标: 🍀MySql是如何保证主备一致的 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页  🍁林在闪闪发光的个人社区,欢迎你的加入:...
    99+
    2023-09-01
    数据库 java
  • Go语言如何保证云上应用的高可用性?
    在云计算时代,应用的高可用性成为了越来越多企业所关注的重要问题。面对应用高可用的需求,Go语言在语言特性和生态工具的支持下,具备着保证云上应用的高可用性的能力。一、多线程编程Go语言天生支持高并发,通过Go协程实现轻量级的多线程编程,可以有...
    99+
    2023-05-16
    Go语言 高可用性 云上应用
  • DynamoDB怎么保证数据的高可用性和持久性
    DynamoDB通过多种方式保证数据的高可用性和持久性: 多区域复制:DynamoDB支持全球性多区域复制,可以将数据在不同地理区...
    99+
    2024-04-09
    DynamoDB
  • MySQL保证复制高可用的重要参数有哪些
    这篇文章主要介绍MySQL保证复制高可用的重要参数有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!expire_logs_days ,binlog清理的时间。从库上relay-l...
    99+
    2024-04-02
  • Couchbase如何保证数据的高可用性和持久性
    Couchbase 是一个分布式、高可用的 NoSQL 数据库,它通过多种机制来保证数据的高可用性和持久性。 数据复制:Couc...
    99+
    2024-04-02
  • Aurora数据库怎么保证高可用性和容错性
    Aurora数据库是一种关系型数据库服务,它通过采用分布式架构和多副本机制来保证高可用性和容错性。以下是Aurora数据库如何实现高...
    99+
    2024-04-09
    Aurora
  • Aurora数据库如何保证高可用性和容错能力
    Aurora数据库通过以下方式保证高可用性和容错能力: 自动故障检测和故障切换:Aurora数据库具有自动故障检测和故障切换功能...
    99+
    2024-04-02
  • hashmap怎么保证扩容时可用
    HashMap在扩容时会先创建一个新的数组,并将原数组中的元素重新映射到新数组中,然后将新数组设置为HashMap的内部数组。为了保...
    99+
    2023-08-26
    hashmap
  • HBase怎么确保高可用
    HBase怎么确保高可用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HBase是一个基于Hadoop面向列的非关系型分布式数据库(NoS...
    99+
    2024-04-02
  • 详细讲解HDFS的高可用机制
    目录互斥机制写流程 读流程 恢复流程 在Hadoop2.X之前,Namenode是HDFS集群中可能发生单点故障的节点,每个HDFS集群只有一个namenode,一旦这个节点不可用,...
    99+
    2024-04-02
  • Load Balance和分布式架构下,Java容器如何保证高可用性和可伸缩性?
    随着互联网应用的快速发展,越来越多的应用走向了分布式架构,同时也出现了越来越多的Java容器,如Tomcat、Jetty、Undertow等。在分布式架构中,负载均衡是一个非常重要的概念,它可以将请求分发到多台服务器上,从而实现高可用性和...
    99+
    2023-09-10
    容器 load 分布式
  • 揭开 PHP 高可用性的奥秘:保证您的应用程序永不失败
    在当今快速发展的数字世界中,应用程序的高可用性至关重要。对于PHP应用程序来说更是如此,因为它支持着许多关键业务系统和网络应用程序。本文将深入探讨PHP高可用性的奥秘,揭示如何构建永不失败的应用程序。 冗余基础设施 冗余基础设施是高可用性...
    99+
    2024-04-02
  • Mysql8高可用之双主+keepalived
    1. 概述 利用keepalived实现Mysql数据库的高可用,Keepalived+Mysql双主来实现MYSQL-HA,我们必须保证两台Mysql数据库的数据完全一致,实现方法是两台Mysql互为主从关系,通过keepalived配...
    99+
    2023-10-08
    mysql 数据库 linux
  • Redis高可用之持久化
    目录一、高可用什么是高可用二、Redis持久化持久化功能RDB持久化 触发条件bgsave执行流程AOF持久化执行流程命令追加文件写入和文件同步文件重写文件重写流程三、RDB和AOF的优缺点RDB持久化的优缺点...
    99+
    2023-04-07
    Redis高可用之持久化 Redis高可用 Redis持久化
  • MySQL之高可用架构详解
    目录引言MySQL高可用一主一备:MySQL主从同步的几种模式:总结引言 “高可用”是互联网一个永恒的话题,先避开MySQL不谈,为了保证各种服务的高可用有几种常用的解决方案。 服务...
    99+
    2024-04-02
  • Mysql之高可用方案浅析
    在工程项目中,系统应用的高可用性越来越重要,业主越来越重视。其实高可用可以分为应用层高可用和数据层高可用,数据层高可用中常见的有关系型数据库mysql的高可用、非关系型NoSQl数据库redis的...
    99+
    2023-09-06
    mysql 高可用 双机热备
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作