MySQL读写分离

1,为啥要读写分离?

系统到了高并发阶段,数据库一定要做的读写分离了,因为大部分的项目都是读多写少。所以针对这个情况,把写操作放一个主库,主库下挂多个从库处理读操作,这样就可以支撑更高的读并发压力!

2,MySQL如何实现读写分离?

很简单,就是基于主从复制架构,简单的说就是一个主库下挂多个从库,写主库,读从库,主库把数据同步到从库。

3,MySQL主从复制的原理是啥?

主库将变更写入binlog日志,从库连接上主库,从库有一个IO线程把主库的binlog日志拷贝到自己本地,写入一个relay中继日志中。接着从库中有一个SQL线程会从中继日志中读binlog,然后执行binlog日志的内容,也就是自己本地再执行一遍SQL,这样就保证了跟主库数据一致。

4,为啥有主从数据延时的情况?

并发情况下主库是并行操作的,而从库从主库同步数据的过程是串行化的,即串行执行binlog日志中的SQL,那么在高并发场景下,从库的数据会比主库慢(延时),所以可能写入主库的数据在从库里短暂查不到,要过几十毫秒或几百毫秒才能查到。

5,如何解决主从数据同步延迟导致的数据不一致 和 主库宕机问题?

MySQL实际上在这一块有两个机制,一个是半同步复制,用来解决主库数据丢失问题;一个是并行复制,用来解决主从同步延时问题。

异步复制(Asynchronous replication)MySQL默认是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主库突然挂掉了,此时主库上已经提交的事务可能并没有传到从库上,如果此时,强行将从库提升为主库,可能导致新主库上的数据不完整。

全同步复制(Fully synchronous replication)指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。

半同步复制(Semisynchronous replication)主库写入 binlog 日志之后不立刻返回给客户端,而是强制立即将数据同步到从库,从库将日志写入自己本地的 relay log 之后会返回一个 ack 给主库,主库接收到至少一个从库的 ack 之后才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

所谓并行复制,指的是从库开启多个线程,并行读取 relay log 中不同库的日志,然后并行执行不同库的日志,这是库级别的并行。

一般来说,如果主从延迟较为严重,有以下解决方案:

分库,将一个主库拆分为多个主库,每个主库的写并发就减少了几倍,此时主从延迟可以忽略不计。

打开 MySQL 支持的并行复制,多个库并行复制。如果说某个库的写入并发就是特别高,单库写并发达到了 2000/s,并行复制还是没意义。

重写代码,写代码的同学,要慎重,插入数据时立马查询可能查不到。

asp.net mysql 读写分离_MySQL读写分离相关推荐

  1. mysql sharding 读取_MySQL读写分离(一)——sharding-jdbc

    sharding-sphere是强大的读写分离.分表分库中间件,sharding-jdbc是sharding-sphere的核心模块.官方网站 springboot项目中集成sharding-jdbc ...

  2. Java中mysql的读写分离_mysql读写分离

    MySQL读写分离原理 MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先部署主从复制,只有复制完了,才能在此基础上进行数据的读写分离. 读写分离就是只在主服务器上写,只在从服务器上读, ...

  3. linux mysql 主从分离_MySQL主从分离基本配置

    1.介绍 MySQL数据库设置读写分离,可以使对数据库的写操作和读操作在不同服务器上执行,提高并发量和响应速度.现在的网站一般大点的,都采用有数据库主从分离.读写分离,既起到备份作用也可以减轻数据库的 ...

  4. atlas mysql 读写分离_MySQL读写分离工具Atlas

    大家好,我是anyux.本文介绍MySQL读写分离工具Atlas. Atlas介绍 原来mha构架下有三台服务器,利用率只有30%,可以使用Atlas数据库中间件提高服务器利用率.即利用从库读,主库写 ...

  5. php解决mysql主从同步_Mysql读写分离,主从同步实现

    随着用户量的增多,数据库操作往往会成为一个系统的瓶颈所在,因此我们可以通过实现数据库的读写分离来提高系统的性能. 通过设置主从数据库实现读写分离,主库负责"写"操作,从库负责&qu ...

  6. mysql dal层_MySQL读写分离的DAL层策略设计

    MySQL读写分离的DAL层策略设计 MySQL读写分离的DAL层策略设计 一 .MySQL集群简介 所谓的mysql集群,是指多台机器完成一个工作,最主要的场景是数据库服务器和Web服务器,但是集群 ...

  7. mysql负责均衡读写分离_MySQL读写分离之负载均衡

    mysql官方文档中有这么一句话: MySQL Proxy is currently an Alpha release and should not be used within production ...

  8. mysql中从分离_Mysql主从分离

    一.什么是Mysql主从分离 将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈:主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发: 数据拥有多个容灾副本,提高数据 ...

  9. mysql官方读写性能_mysql读写性能测试-阿里云开发者社区

    概述和测试环境 压测的目的是为了尽量模拟真实情况.测试的表都是由10个int型字段和10个字符串型字段组成.每个测试项目都测试了myisam和innodb两个引擎.测试的方法都是用两个线程并发,一共跑 ...

最新文章

  1. 第十六届全国大学生智能汽车竞赛RT-Thread创新专项奖
  2. 广度优先搜索_深度优先搜索和广度优先搜索[09]
  3. elementui 隐藏输入框_elementui select下拉框输入完全匹配值则下拉隐藏
  4. wxWidgets:wxTipProvider概述
  5. Spring5.0 Kafka2.11
  6. 【Java语法】DateFormat时间格式转化、java.util.Date和java.sql.Date之间的相互转化
  7. MFC初探 —— 子窗体相对于显示屏位置固定
  8. VB 断开指定进程网络连接函数
  9. 计算机数制和运算的一点总结.
  10. Aruba7010 默认密码_收藏 | 各大品牌的变频器默认密码、万能密码、超级密码汇总...
  11. 网页自动填表html,风越网页表单批量自动填写工具
  12. 基于单片机的智能交通灯
  13. html小说站源码,读取本地HTML的小说阅读器应用源码项目
  14. SecureCRT 8.5下载安装破解
  15. 浅谈企业知识资产管理及建设思路
  16. 联通loid认证_光纤LOID 认证 需要填写的用户名是什么?有人说不...
  17. WIN32 2048游戏
  18. 国行Surface Laptop 3评测:微软最佳轻薄本之作
  19. 2023 年对程序员英语学习记单词很有帮助的网站
  20. 忘记win7,xp系统的开机密码

热门文章

  1. pt-tools系统:pt-kill 实战
  2. Janusec应用安全网关(WAF网关)
  3. OpenStack入门修炼之实战--实现阿里云ESC多FLAT网络(21)
  4. “黑客”一年能赚多少钱?
  5. 几种常用的C#排序方法简介
  6. pytorch .item_pytorch + SGD
  7. 无法安装到这个磁盘 这台计算机,安装Win7提示无法安装到这个磁盘怎么办
  8. 数据权限设计思路_后台权限管理设计思路:三种模型分析
  9. 定期存款单的mysql编写程序_MySQL 调优和使用必读
  10. 了解下RDF 都柏林核心元数据