首页 > 数据库 >mysql怎么保证高可用的?

mysql怎么保证高可用的?

时间:2023-12-27 21:56:28浏览次数:30  
标签:主库 备库 可用 保证 mysql 主备 HA

分布式系统,高可用是一个很重要的指标。

当选择 mysql 作为分布式系统的数据库,高可用也是必须要考虑的。

那么,mysql是如何保证高可用的呢?

有的同学可能听过一个词,叫做:mysql主备。

对,mysql就是通过主备来保证高可用。

搭建mysql主备,需要那些组件呢?

见名思义,首先需要一个主库,一个备库。

接着问题又来了,客户端如何知道主库是哪个,备库是哪个?

这里,就需要一个HA系统,客户端的业务sql,直接发到HA系统,由HA系统来负责透传到主库。当然,HA系统也必须保证高可用。

另外,主备切换,也由HA系统来主导。

好了,又来了一个问题,主备,如何保证备库的数据和主库一致呢?

这里,需要通过主备数据复制来实现。

主库写binlog后,有一个专门的线程,负责将数据传输给备库,备库写入relay log,接着sql_thread负责执行binlog日志。

还有一个问题,为了保证数据的准确性,建议bin_log的日志格式设置为row,如此,可以保证主备库类似时间字段、系统递增主键的一致性。

那么,是不是有了主备架构,高可用就完全保证了呢?

并不是如此。

一般,为了数据的准确性,主备切换时,从主库不可用,到备库数据追上主库的的时间段,整个数据库是不可用的。所以,主备延迟,就成了mysql高可用指标的一个关键因素。

影响主备延迟的因素有哪些呢?大致有如下几个原因:

1. 备库性能远不如主库。  一般,备库是当主库不可用时,临时顶一顶流量,所以很多时候硬件性能配置的不如主库。

2. 备库承担压力大,CPU彪高。 比如有的公司将备库作为管理系统的查询数据源,使用不当,就会导致CPU彪高,加大主备延迟。

3. 大事务。由于主库事务执行完后,才会写binlog,这样就会导致备库延迟。

4. 大表DDL。

5. 备库并行复制能力。由于sql_thread执行binlog日志效率问题,可能导致备库数据追不上主库。所以mysql5.6后,陆续出了很多sql_thread并行执行策略。

 

标签:主库,备库,可用,保证,mysql,主备,HA
From: https://www.cnblogs.com/kingcode/p/17927204.html

相关文章

  • MySQL数据库-3
    MySQL数据库-3第14章_视图#第14章_视图/*1.视图的理解视图,可以看做是一个虚拟表,本身是不存储数据的。视图的本质,就可以看做是存储起来的SELECT语句视图中SELECT语句中涉及到的表,称为基表针对视图做DML操作,会影响到对应的基表中的数据。反之亦然。视图本身的删除,不会导致......
  • mysql_real_query与mysql_query 区别
    mysql_real_query(&mysql,sql,strlen(sql));//多了一个长度mysql_query(&mysql,sql);1、mysql_real_querysql语句中可以包含二进制数据,调用的时候多一个strlen2、mysql_querysql语句只能是字符串,当数据里有0的时候,直接就停了调用的时候  ***多次调用会出现//Comm......
  • MySQL 事务日志
    MySQL事务日志事务有4种特性:原子性,一致性,隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢(是通过什么来控制的呢)?事务的"隔离性"由锁机制实现(通过加锁来实现隔离)。而事务的"原子性","一致性"和"持久性"由事务的redo日志和undo 日志来保证redolog称......
  • MySQL 8用户及权限管理
    官方链接:https://dev.mysql.com/doc/refman/8.0/en/create-user.htmlTheoptionalWITHclauseisusedtoenableausertograntprivilegestootherusers.TheWITHGRANTOPTIONclausegivestheusertheabilitytogivetootherusersanyprivilegestheuserhas......
  • MySQL 事务的基础知识
    事务的基础知识1.数据库事务概述事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库中的数据始终保持一致性,同时我们还能通过事务的机制恢复到某个时间地点的数据,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。1.1存储引擎的支持情况查询当......
  • 麒麟下mysql安装及使用
    1、进入软件商店--搜索mysql--安装mysql服务器和mysql工作台,重新启动系统;2、检测mysql版本:显示mysqlver8.0.33终端命令:mysql--version 3、启动mysql服务进程终端命令:sudosystemctlmysql4、查看服务状态终端命令:sudosystemctlstatusmysql按esc--:q退出vim返回终......
  • 20 mysql 隔离性的底层原理
    隔离性的原理:1.0隔离性是通过锁机制实现的。当一个事务修改数据时,需要先获取锁。其它事务要修改数据,必须等待之前的事务提交或者回滚,然后释放锁操作之后。myisam只支持表锁,innodb支持表锁和行锁。因为表锁比较影响性能,所以通常情况下,使用行锁就可以了。2.0隔离性的另外一个方面,就是......
  • 18-mysql索引
    一、b+树每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生(B+树是通过二叉查找树,再由平衡二叉树,B树演化而来)。1.索引字段要尽量的小:通过上面的分析,我们知道IO次数取决于b+数......
  • 17--MySQL优化
    MySQL优化一、优化工具:1、系统优化工具1.1 top (1)简介: 实时监控当前操作系统的负载情况的,每秒刷新一次状态,通常会关注三大指标(CPU、MEM、IO) (2)评判标准 (2.1) 整体的负载情况,判断标准,如果值非常高,只能告诉我们操作系统很繁忙 load average: 0.00, 0.00, 0.00 ......
  • 11-MySQL 存储引擎
    MySQL存储引擎可以理解为,MySQL的“文件系统”,(插件形式存在)只不过功能更加强大。mysql提供的存储引擎有InnoDB、MyISAM等TokuDB是第三方的存储引擎moardb,数据压缩比打,写入数据快,如果你的应用是读多写少的情况强烈建议使用此存储引擎innodb存储引擎的功能一、查看存储引擎1......