MySQL数据复制的原理图大致如下:

从上图我们可以看出MySQL数据库的复制需要启动三个线程来实现:

其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句。主服务器创建一个线程将二进制日志中的内容发送到从服务器。该线程可以识别为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程。从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,是从服务器创建用于读取中继日志并执行日志中包含的更新。

在前面的描述中,每个从服务器有3个线程。有多个从服务器的主服务器创建为每个当前连接的从服务器创建一个线程;每个从服务器有自己的I/O和SQL线程。

这样读取和执行语句被分成两个独立的任务。如果语句执行较慢则语句读取任务没有慢下来。例如,如果从服务器有一段时间没有运行了,当从服务器启动时,其I/O线程可以很快地从主服务器索取所有二进制日志内容,即使SQL线程远远滞后。如果从服务器在SQL线程执行完所有索取的语句前停止,I/O 线程至少已经索取了所有内容,以便语句的安全拷贝保存到本地从服务器的中继日志中,供从服务器下次启动时执行。这样允许清空主服务器上的二进制日志,因为不再需要等候从服务器来索取其内容。

二、实列说明MySQL的主从复制架构和实现详细过程

主从架构数据库的复制图如下:

其配置详细过程如下:

MySQL数据的主从复制、半同步复制和主主复制详解 - goustzhu地盘 - 博客频道 - CSDN.NET

http://blog.csdn.net/goustzhu/article/details/9339621

1、半同步复制原理图

#半同步启动需要主从两端都需要加载安装各自对应的semi模块,从库端支持半同步功能的数量至少一台;主库端当一个事务成功提交后,并不及时反馈给前端用户,该线程会被临时block,等待由从库端返回确认该条事务也同时成功写入到relay log中的receipt(回执确认),这时主库线程才返回给当前session告知操作完成,半同步复制并不关心在从库一端该事务是否都被执行并被提交完成。

复制类型还可以分为 异步复制和半同步复制。

2、异步复制

通常没说明指的都是异步,即主库执行完Commit后,在主库写入Binlog日志后即可成功返回客户端,无需等等Binlog日志传送给从库,一旦主库宕机,有可能会丢失日志。

3、半同步复制

而半同步复制,是等待其中一个从库也接收到Binlog事务并成功写入Relay Log之后,才返回Commit操作成功给客户端;如此半同步就保证了事务成功提交后至少有两份日志记录,一份在主库Binlog上,另一份在从库的Relay Log上,从而进一步保证数据完整性;半同步复制很大程度取决于主从网络RTT(往返时延),以插件 semisync_master/semisync_slave 形式存在。

MySQL 半同步复制模式的实现-酷辣虫 - CoLaBug.com

http://www.colabug.com/thread-1064113-1-1.html

MySQL半同步复制 - iVictor - 博客园

http://www.cnblogs.com/ivictor/p/5735580.html

mysql 同步 异步_MySQL异步复制、半同步复制详解相关推荐

  1. mysql 事件统计_mysql事件统计之PERFORMANCE_SCHEMA基础详解

    概述 MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数.并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引 ...

  2. mysql master 配置_MySQL双Master配置的方法详解

    刚刚抽空做了一下MYSQL 的主主同步.把步骤写下来,至于会出现的什么问题,以后随时更新.这里我同步的数据库是TEST1.环境描述.主机:192.168.0.231(A)主机:192.168.0.23 ...

  3. 给mysql 授权 命令_mysql中授权命令grant用法详解:

    mysql中授权命令grant用法详解: mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为: gra ...

  4. mysql escape关键字_MySQL中ESCAPE关键字的用法详解

    MySQL转义 转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义. MySQL中,转义字符以"\" ...

  5. mysql binlog 回退_MYSQL Binglog分析利器:binlog2sql使用详解

    大部分使用mysql的业务也都会开启binlog,用以记录数据库的更新操作.当然binlog的格式大家也都比较清楚,分别是statement.mixed.row模式.针对row格式的binlog,它以 ...

  6. mysql linux文件_MySQL在Linux系统下配置文件详解

    在日常的的开发过程中接触到了SQLServer和MySQL数据库的操作性问题,可能是以前接触的都是SQL Server,才开始接触MySQL,总感觉使用MySQL没有使用SQLserver那么顺手,一 ...

  7. 免安装mysql配置图解_mysql免安装版配置步骤详解分享

    1.准备工作 下载mysql的最新免安装版本mysql-noinstall-5.1.53-win32.zip,解压缩到相关目录,如:d:\\ mysql-noinstall-5.1.53-win32. ...

  8. mysql事务并发控制_mysql事务和多版本并发控制详解

    一.mysql事务 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎可以成功执行该组全部语句,那么就执行该组语句.如果其中有任何一条语句不能执行,那么所有的语句都不会执行.也就 ...

  9. mysql密码高级_MySQL数据库高级操作(图文详解)

    数据表高级操作 准备工作:安装MySQL数据库 create database CLASS; use CLASS; create table TEST (id int not null,name ch ...

  10. mysql week 参数_MySQL week()函数及参数mode详解

    通常,一年的正常年份为365天,闰年为366天.一年又可以分为许多周,每周有7天. 所以一年,我们经常有365/7 = 52周,周范围是从1到52. 要查看给定日期属于哪个周数,您可以使用WEEK函数 ...

最新文章

  1. 使用C#的HttpWebRequest模拟登陆网站
  2. IO-6(PrintStream/PrintWriter)
  3. php 版本排序,四种常见排序算法--PHP版本
  4. Android 实现指纹识别demo
  5. 分布式数据层中间件详解:如何实现分库分表+动态数据源+读写分离
  6. BugkuCTF-Reverse题NoString
  7. 互联网薪资最新出炉,收藏了
  8. jQuery操作select控件取值和设值
  9. 初识面向对象(钻石继承,super,多态,封装,method,property,classmethod,staticmethod)...
  10. 【转载】按键精灵教程
  11. GraphPad Prism 统计教程 :高斯分布
  12. 使用vue-awesome-swiper制作H5动画页面
  13. 福建农村信用社计算机类C卷考什么,2015年福建省农村信用社公开招聘考试《计算机类》真题及详解...
  14. Forest - 轻量级HTTP客户端框架
  15. 【思特奇杯·云上蓝桥-算法训练营】第1周:excel地址
  16. 前端Html的全新认识
  17. 云服务器测速脚本_Linux VPS服务器带宽测速脚本:Speedtest Linux进行网络测速方法...
  18. nn.Flatten()函数详解及示例
  19. MATLAB数学建模-规划模型总结| MATLAB求解
  20. MATLAB实现小波变换去噪

热门文章

  1. Cannot deserialize instance of
  2. 华为OD机试用Python实现 -【信号发射和接收】(2023-Q1 新题)
  3. Redis知识点总结-钊兵的笔记
  4. 基于SC92F725X的ADC
  5. 人只剩下两颗心脏能活吗
  6. 关注的股票博客与微博
  7. Powerpoint2010也能直接截图
  8. JAVA毕业设计共享单车使用满意度评价系统计算机源码+lw文档+系统+调试部署+数据库
  9. 前端js奇淫技巧(一)
  10. 教你用Python在Excel里画画