1、主从复制这类NFS存储数据通过inotify+rsync同步到备份的NFS服务器,只不 过Mysql的复制方案是其自带的工具
inotify 是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知,该机制是著名的桌面搜索引擎项目 beagle 引入的,并在 Gamin 等项目中被应用。
rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。

应用场景
1、从服务器作为主服务器的实时数据备份
利用mysql的数据备份功能备份数据时,在硬件故障软件故障的情况下,该数据备份是有效的,但是人为的进行sql操作比如:delete drop等操作时从库的备份功能就没有了,因为从库也会执行这些删除操作。
2、主从服务器实现读写分离,从服务器实现负载均衡
主从服务器可以通过程序或代理软件(mysql-proxy,amoeba)实现对用户(客户端)的请求读写分离,即让从服务器仅仅处理用户的select请求,降低用户查询响应时间 ,以及同时读写在主服务器上的带来的访问压力。对于更新的数据(例如update、insert、delete语句),刚仍然交给主服务器处理,确保主服务器和从服务器保持实时同步。
百度、淘宝、新浪等绝大多数的网站都是用户浏览页面多于用户发布内容,因些通过从服务器接收只读请求,就可以很好的减轻从数据库的压力,且从服务器可以很容易地扩展多台使用LVS(linux-virtual-server 意思是linux虚拟服务器)做负载均衡效果就很好了,这就是传说中的数据库读写分离架构。
3、把多个从服务器根据业务重要性进行拆分访问
可以把几个不同的从服务器,根据公司的业务进行拆分。例如:有为外部用户查询服务的从服务器,有内容DBA用来数据库备份的从服务器,还有为公司内部人员提供访问的后台、脚本、日志分析及供开发人员查询使用的从服务器。这样的拆分除了减轻主服务器的压力外,还可以使数据库对外部用户浏览、内部用户业务处理及DBA人员的备份等互不影响。

实现Mysql主从读写分离的文案
1、通过程序实现读写分离(性能和效率最佳,推荐)
php和java都可以通过设置多个连接文件实现对数据库的读写分离,当语句关键字是insert/update/delete时连接写库文件,当是select时连接读库文件。
2、通过开源的软件实现读写分离
mysql-proxy/amoeba等代理软件可以实现读写分离,但是这些软件的稳定性和功能一般不建议使用。
3、大型门户独立开发DAL层综合软件
百度、阿里等大型门户都有开发牛人,会花大力气开发适合自己业务的读写分离、负载均衡、监控报警、自动扩容、自动收缩等一系列功能的DAL层软件。

原理介绍
Mysql的主从复制,是一个异步的过程(虽然一般情况下感觉是实时的),数据将从一个mysql数据库(我们称之为master)复制到另一个mysql数据库(我们称之为slave)在master与slave之间实现整个主从复制的过程是由三个线程参与完成的。其中两个线程(sql线程和I/O线程)在slave端,另外一个线程(I/O线程)在master端
要实现mysql的主从复制,首先必须打开master端的binlog记录功能,否则就无法实现。因为整个复制过程实际上就是slave从master端获取binlog日志,然后再在slave上以相同顺序执行获取的binlog日志中所记录的sql操作。
要打开mysql binlog记录功能,可通过在mysql的配置文件my.cnf中的mysqld模块([mysqld]标识后的参数部分)增加“log-bin”参数选项来实现,具体信息如下:
[mysqld]
log-bin=/data/3306/mysql-bin
提示:如果把log-bin放在配置文件结尾而不是[mysqld]标识之后可能导致配置复制不成功。

mysql主从复制过程详细描述
下面简单的描述mysql replication 的复制过程
1、在slave服务器上执行start slave命令开启主从复制开关,开始进行主从复制
2、此时,slave服务器的I/O线程会通过在master上已经授权的复制用户权限请求连接master服务器,并请求从指定binlog日志文件的指定位置(日志文件名和位置就是在配置主从复制服务时执行change master命令指定的)之后开始发送binlog日志内容。
3、master服务器接收来息slave服务器的I/O线程后,其负责的I/O纯利会根据slave服务器的I/O线程请求的信息分批读取指定binlog日志文件指定的位置之后的binglog信息,然后返回给slave端的I/O线程。返回的信息中除了binlog日志内容外,还有在master服务器端记录的binlog文件的名称,以及在新的binlog中的下一个指定的位置。
4、当slave服务器的I/O线程获取到master服务器上的I/O线程发送的日志内容、日志文件及位置点后,会将binlog日志内容依次写到slave端自身的relay log(中继日志)文件(Mysql-relay-bin.xxxxxx)的最末端,并将新的binlog文件名和位置记录到master-info文件中,以便下一次读取master端的binlog日志时能够告诉master服务器从新的binlog文件指定上的位置开始请求新的binlog日志内容。
5、slave服务器端的sql线程会实时检测本地的relay log中I/O线程新增加的日志内容,然后及时的把relay log文件中的内容解析成sql语句,并在自身slave服务器上按解析的sql语句的位置顺序执行应用这些sql语句,并在relay-log.info中记录当前应用中继日志的文件名及位置点。

binlog文件只记录所有的数据库更改的sql语句不记录任何查询(select / show)语句

mysql主从复制原理分析的更多相关文章

  1. MySQL 主从复制原理不再难

    上篇我们分析过 Binlog 日志的作用以及存储原理,感兴趣的可以翻阅: 一文带你了解 Binlog 日志 Binlog 日志主要作用是数据恢复和主从复制.本身就是二进制格式的日志文件,网络传输无需进 ...

  2. mysql 主从复制原理

    主从形式   mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制---     用途及条件   mysql主 ...

  3. [转]MySQL主从复制原理介绍

    MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以 ...

  4. Mysql主从复制原理及配置

    Mysql主从复制原理及配置 1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其 ...

  5. MySQL主从复制--原理

    简介 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一 ...

  6. mysql 主从复制原理(转)

    本文转自https://blog.csdn.net/php_younger/article/details/59673879 mysql 主从复制原理 主从形式   mysql主从复制 灵活 一主一从 ...

  7. 如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

    如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是 ...

  8. Mysql主从复制原理及搭建

    ## Mysql主从复制原理 主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中.对于多级复制,数据库服务器即可充当主机,也可充当从 ...

  9. mysql主从复制原理及实践

    Mysql主从复制原理及实践 mysql主从框架       MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从.可以防止单一主机的 ...

随机推荐

  1. webpack中代理配置(proxyTable)

    注:用axios请求 1,下载axios npm i axios --save 2,在config文件下的index.js中配置代理地址 参考:https://vuejs-templates.gith ...

  2. 剑指offer——54数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  3. springboot+mybatis+layUI

    1.idea快速搭建 2.生成后目录结构 3.引入layui-2.4.5 4.static/新建index.html,页面代码参考https://www.layui.com/doc/element/l ...

  4. C#WinForm 窗体单例模式 反射单例

    做了个mdi窗体 原以为指定一下MDIParent就可以了 没想到多次点击会出现多个窗体的现像 所以用到了单例模式 做法是这样的(学习出处:连接) 1.在子窗体声明一个子窗体类型的私有静态变量 并把子 ...

  5. js面向对象(一)---基本的概念、属性、方法

    一.什么是面向对象编程 1.用对象的思想去写代码,就是面向对象编程 2.我们一直在使用对象,如数组Array    时间Date //我们把系统自带的对象,叫做系统对象 var arr = new A ...

  6. 百度网盘不限速下载PanDownload网页版+IDM

    1.安装配置IDM 下载链接:链接:https://pan.baidu.com/s/13P4ae-IPgi5Y13CGEZgmlg 提取码:do44 安装后在浏览器(推荐chrome或Firefox) ...

  7. No package docker-io available

    新手centos6.8安装docker时从遇到No package docker-io available开始的各种不小心的坑... 新安装了CentOS6.8,准备安装docker,执行命令 yum ...

  8. Boost.Interprocess

    https://github.com/svebert/InterprocessMsg 好像消息队列

  9. mysql 学习之1 mysql在window系统下的安装

    转载: https://blog.csdn.net/weixin_43295278/article/details/8287440 此方法只 适用 于window系统 坑 此篇文章在使用 alter ...

  10. 【转】硬盘分区知识介绍(MBR)

    转自:http://www.blogjava.net/galaxyp/archive/2010/04/25/319344.html 硬盘是现在计算机上最常用的存储器之一.我们都知道,计算机之所以神奇, ...