一、mysql主从复制的工作原理

1、mysq支持的复制类型

1)基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高。

2)基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。

3)混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。

2、复制的工作过程

1)在每个事务更新数据完成之前,master在二进制日志记录这些改变。写入二进制日志完成后,master通知存储引擎提交事务。

2)Slave将master的binary log复制到其中继日志。首先slave开始一个工作线程(I/O),I/O线程在master上打开一个普通的连接,然后开始binlog dump process。binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件,I/O线程将这些事件写入中继日志。

3)Sql slave thread(sql从线程)处理该过程的最后一步,sql线程从中继日志读取事件,并重放其中的事件而更新slave数据,使其与master中的数据一致,只要该线程与I/O线程保持一致,中继日志通常会位于os缓存中,所以中继日志的开销很小。

3、mysql读写分离原理

读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。

目前较为常见的Mysql读写分离分为两种

1)基于程序代码内部实现

在代码中根据select 、insert进行路由分类,这类方法也是目前生产环境下应用最广泛的。优点是性能较好,因为程序在代码中实现,不需要增加额外的硬件开支,缺点是需要开发人员来实现,运维人员无从下手。

2)基于中间代理层实现

代理一般介于应用服务器和数据库服务器之间,代理数据库服务器接收到应用服务器的请求后根据判断后转发到,后端数据库,有以下代表性的程序。

(1)mysql_proxy。mysql_proxy是Mysql的一个开源项目,通过其自带的lua脚本进行sql判断。

(2)Atlas。是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。支持事物以及存储过程。

(3)Amoeba。由阿里巴巴集团在职员工陈思儒使用序java语言进行开发,阿里巴巴集团将其用户生产环境下,但是他并不支持事物以及存数过程。

不是所有的应用都能够在基于程序代码中实现读写分离,像一些大型的java应用,如果在程序代码中实现读写分离对代码的改动就较大,所以,像这种应用一般会考虑使用代理层来实现。

mysql主从复制读写分离_MySQL主从复制与读写分离的工作原理相关推荐

  1. mysql主从与读写分离_MySQL主从复制与读写分离

    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...

  2. mysql读写分离_Mysql数据库09MySQL读写分离

    Mysql数据库09-MySQL读写分离 一.读写分离应用案例分析 在企业用户中,在大量的数据请求下,单台数据库将无法承担所有读写操作.解决方法:配置多台数据库服务器以实现主从复制+读写分离. 二.读 ...

  3. mysql主从复制巡检脚本_mysql主从复制监控shell脚本

    ########本脚本应用在生产环境中,是运用mysql主从的基础上######## vi mysqlm-s.sh #!/bin/bash ip=`ifconfig eth0|sed -n 2p|aw ...

  4. win7 mysql读写分离_mysql 主从复制 读写分离配置

    口水:第一次写博客,欢迎大家来拍砖. 最近项目中用mysql主从复制主要是为了实现读写分离.数据库备份.故障转移的需要,采用的是一主一从,配置比较简单. 自已在本机做测试 测试环境如下: OS:win ...

  5. mysql双机热备 读写分离_MySQL——主从复制与读写分离

    什么是主从复制 主从复制是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 主从复制的作用 1.做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到 ...

  6. mysql driver 读写分离_Mysql主从复制和读写分离实践

    1.主从复制 原理 MySQL之间数据复制的基础是二进制日志文件(binary log file).一台MySQL数据库一旦启用二 进制日志后,其作为master,它的数据库中所有操作都会以" ...

  7. mysql主从复制于读写分离_MySQL主从复制读写分离

    mysql主从复制读写分离 master和slave时间同步 [[email protected]~]#ntpdate 172.18.0.1 [[email protected]~]#vim /etc ...

  8. mysql读写分离_MySQL基于amoeba读写分离实验

    =========================================== 主从复制只是一个同步数据的方式 读写分离:只在主的上面写,只在从的上面读 读写分离方案:[1]基于程序代码内部 ...

  9. mysql慢sql增加读写分离_MySQL主从同步+读写分离

    MySQL主从同步+读写分离 实验拓扑: 三台mysql数据库: 192.168.80.101 主服务器 mysql 192.168.80.102 从1服务器 mysql 192.168.80.103 ...

最新文章

  1. 开源:ASP.NET MVC+EF6+Bootstrap开发框架
  2. LCD显示原理和驱动方式介绍
  3. Leet Code OJ 4. Median of Two Sorted Arrays [Difficulty: Hard]
  4. 进程控制 (二) Others
  5. CSS每日学习笔记(2)
  6. 如何做规划?分享2种思维和4个方法
  7. 如果你负债累累,上班已经不能还账,又没有创业资金,该怎么办?
  8. ROS的学习(九)理解ROS的参数
  9. SLAM_怎么评价slam建图效果
  10. 【语音判别】基于matlab双门限法判别语音信号【含Matlab源码 1720期】
  11. 在64位WIN7系统中修改驱动的sys文件,主要在sys文件中修改一下提供商等信息。
  12. linux-2.6.32在mini2440开发板上移植(15)之移植看门狗驱动
  13. 手机怎么把图片转成PDF格式?这个方法很好用
  14. 乐视2 pro2 IMAX手机root权限 刷rece 解锁 刷系统等
  15. Ubuntu18.04下 安装SMPlyer视频播放器 设置倍速播放
  16. swoole 2.x使用php什么版本,Think-Swoole 教程(二)安装
  17. 用python动态时钟代码_python实现简易动态时钟
  18. 怎么确保数据在网络传输的安全性?
  19. OCA/OCP Oracle 数据库12c考试指南读书笔记:第31章:Multitenant Container and Pluggable Database Architecture
  20. 什么是软件产品----老吴说产品

热门文章

  1. Mybatis 源码分析(一)配置文件加载流程
  2. Assembly Manifest 通俗简易手册
  3. 潭州Java中级班(day_13)-异常概述
  4. 20135320赵瀚青LINUX内核分析第一周学习笔记
  5. 清除stoped impdp/expdp job的方法
  6. Flex 4中组件背景设置(填充方式)group为例子
  7. 【jeecg-mybatis版本】 mybatis+spring mvc 完美整合方案 查询,保存,更新,删除自动生成...
  8. 地址null一个简单的第三人称汽车驾驶系统
  9. html怎么限制密码字母个数字,怎样限制密码长度,并且只能为字母数字及下划线组成?...
  10. linux命令最终篇