MySQL如何传输二进制日志

MySQL Replication可以很方便的用来做应用的读扩展,也可以帮MySQL实现一定程度的HA方案。MySQL通过向备库传送二进制日志来实现Replication,本文将通过二进制日志相关源代码的主要接口来解释:“MySQL如何传输二进制日志,是主库推,还是备库拉?MySQL日志传输的实时性如何?”。

在MySQL Replication结构中,备库端初次通过CHANGE MASTER TO完成Replication配置,再使用start slave命令开始复制。更细致的,备库通过IO Thread向主库发起读取binlog的请求(COM_BINLOG_DUMP命令),主库收到COM_BINLOG_DUMP请求后,使用单独线程(dump thread)不断向备库IO Thread发送Binlog。示意图(大图):

在主库端一旦有新的日志产生后,立刻会发送一次广播,dump线程在收到广播后,则会读取二进制日志并通过网络向备库传输日志,所以这是一个主库向备库不断推送的过程;

新日志在产生后,只需一次广播和网络就会立刻(<1ms)向发送到备库,如果主备之间网络较好的话(例如RTT<1ms),备库端的日志也就小于2ms了。所以,一般的(依赖于RTT),备库的实时性都非常好。

<转> http://www.orczhou.com/index.php/2011/11/how-mysql-send-the-binary-log/

时间: 2024-10-09 02:27:33

MySQL如何传输二进制日志的相关文章

如何提升mysql replication的性能&&多线程传输二进制日志

如何提升replication的性能: 延迟 : 对于mysql replication来说,在没有发生故障的情况下,出现master与slave数据不同步,延迟分为以下两种情况: 经常性延迟   : 异步同步的数据差距比较大 ,周期性的,循环. 暂时性延迟   : 突发情况,导致延迟 其主要原因就是: 网络带宽 I/O 如何减少replication延迟?? 1,最好使用内网或者专线链路传输binlog数据 (千兆网卡.还不够的话,bounding 技术,扩展带宽) 在my.cnf中强制使用内

MySQL主从复制 - 基于二进制日志(理论篇)

mysql日志类型 1    二进制日志 2    事务日志 3    一般查询日志 4    中继日志 5    慢查询日志 二进制日志 二进制日志通常记录的是可能潜在引起数据库发生改变的操作,每一个操作我们称为一个event. 二进制日志记录一个event的时候,通常还会记录timestamp,position(偏移量offset),server-id,event本身. 二进制日志的数据存储形式,形如mysql-bin.xxxxxx这种,二进制日志除了mysql-bin.xxxxxx之外,还

Mysql主从复制、二进制日志、基于GTID的主从复制、双主复制

 一.主从复制的工作原理   Mysql在Master与slave之间实现整个复制的过程由3个线程来完成的,   其中两个线程(SQL线程和IO线程)在 Slave端,   另外一个线程(IO)在Master端   要实现Mysql的复制必须首先打开Master端的binary log(也就是二进制日志)否则无法实现. Mysql复制基本过程如下:   (1)Slave上面的IO 线程链接上Master,并且请求指定日志文件的位置(或者 从开始的日志之后的日志内容)   (2)Master接收到

mysql数据库中 二进制日志与重做日志的差别

首先:二进制日志会记录所有与mysql有关的日志记录,包括innodb myisam heap等其他引擎的日志.而innodb引擎的重做日志只记录与其有关的事务日志. 其次:记录的内容不同,不管你将二进制日志文件的格式设为statement 还是 row,又或者是mixed,其记录的都是关于一个事物的具体操作内容.而innodb存储引擎的重做日志文         件记录的关于每个页(page)的更改的屋里情况. 此外,写入的时间不同,二进制日志文件是在事物提交前进行记录的,而事物进行的过程中,

MySQL学习之二进制日志

二进制日志记录了数据库的所有改变,使得任何Slave都可以通过执行Master二进制日志保持数据的一致. 二进制日志仅包含可能改变数据库的语句.那些尚没有但是可能改变数据库的语句也会记录下来,注意那些可能带来变化的语句,如DROP TABLE IFEXISTS CREATE IF NOT EXISTS,以及那些不匹配任何行的语句,select语句一般不会被记录,因为它们不会对数据库做任何改动. 服务器上的事务通常不是一个接一个顺序执行的,而是交错的并行执行,为了防止两个事务之间产生冲突导致不一致

Wampserver 2.5 下Mysql无法开启二进制日志

根据网上百度来的资料,需要在my.ini的[mysqld]内添加 server-id = 1log-bin=mysql-binbinlog-do-db=abcbinlog-ignore-db=mysql 但是wamp自带的mysql里用的是[wampmysqld] 我一开始把配置内容加在[wampmysqld]里,总是无法打开.后来把内容放到最末尾的[mysqld]才生效. 集成环境总是有各种坑啊..

mysql增量备份二进制日志shell脚本

#!/bin/bash #?Date:2017-10 #?Description:backup?mysql?binary?logs #?Version:0.1 db_user="root" myisam_db="mysql" db_passwd="123456" host="localhost" export?PATH="/usr/local/mysql/bin:/usr/local/sbin:/usr/local/

MySQL中基于mysqldump和二进制日志log-bin二进制日志进行逻辑备份以及基于时间点的还原

本文出处:http://www.cnblogs.com/wy123/p/6956464.html 本文仅模拟使用mysqldump和log-bin二进制日志进行简单测试,仅作为个人学习笔记,可能离实际应用还有很大差距,仅参考. 开启MySQL的bin-log二进制日志 模拟还原是需要mysqldump出来的文件和log-bin,因此需要开始log-bin二进制日志. mysql5.7.18在开启二进制日志的时候除了要设置log-bin的位置之外,另外需要设置一个server-id,MySQL之前

MySQL二进制日志总结

二进制日志简单介绍 MySQL的二进制日志(binary log)是一个二进制文件,主要用于记录修改数据或有可能引起数据变更的MySQL语句.二进制日志(binary log)中记录了对MySQL数据库执行更改的所有操作,并且记录了语句发生时间.执行时长.操作数据等其它额外信息,但是它不记录SELECT.SHOW等那些不修改数据的SQL语句.二进制日志(binary log)主要用于数据库恢复和主从复制,以及审计(audit)操作. 官方文档关于二进制日志(binary log)的介绍如下: T