MySQL主从同步相关-主从多久的延迟?

这次单独调查一下主从延迟的时间。这里说的主从延迟,并不是指“从库更新性能跟不上主库”, 而是“一个命令从主库更新完成到从库更新完成的延迟时间。

基本流程:

对于每一个连上来的从库,主库都有一个client线程与之对应。

先看主从的基本数据流

1、客户端SQL更新命令

2、主库执行

3、主库写binlog

4、主库client线程读binlog发送给从库的io线程

5、从库io线程写盘(relay-log)

6、从库sql线程读relay-log

7、执行更新。

这里有涉及到两个写盘,主库binlog和从库的relaylog(3、5)。不过不用担心不停扫描文件造成的延迟,因为读文件的线程是在同一个进程内,每次写完都会广播,所以虽然看上去是异步,实际上延迟并不大。

我们主要考察步骤2完成瞬间到7开始执行之前的延时。

实验方法――一级主从

实际应用中主从库机器应该是分开的,这里也讨论这种情况(同机房,不同机器)

可以想象延迟很小,因此在不同机器上输出时间还需要考虑机器之间的时间同步。设计流程如下:

1、机器A上的MySQL S设置为机器B上的MySQL M的从库

2、在A上有一个简单客户端C,向M发起一个insert操作,这个操作会被同步到S。

3、在C执行mysql_real_query返回时输出当前系统微秒时间 t1

4、在S上的引擎回调接口write_row入口处输出当前系统微秒时间 t2

则 t2- t1的值是我们需要的结果。

实验方法――二级主从

项目中担心多个从库连接一个主库,影响主库性能,因此还要在实验二级级联主从的延迟时间。

这种结构下,在第一级从库上增加了一次写盘转发 (sql执行更新后写本地binlog),

实验结果

一级主从 50~100 us

二级主从 1.1~1.2 ms

时间: 2024-10-01 16:59:38

MySQL主从同步相关-主从多久的延迟?的相关文章

一种MySQL主从同步加速方案

一.问题起源 MySQL的主从同步一直有从库延迟的问题,背景资料网上很多,原因简单描述如下: 1. MySQL从库上有一个IO线程负责从主库取binlog到写到本地.另外有一个SQL线程负责执行这些本地日志,实现命令重放: 2. 正常网络状况下IO线程没有性能问题(这个待会会用到),问题是SQL线程只有一个,更新速度跟不上.所以经常会看到从库的CPU idle很高,但同步性能就是上不去. 二.方案雏形 单线程的SQL线程是造成这个问题的主要原因.比较直接的想法是把它改成多线程版本,这个据说官方版

使用MySQL Proxy解决MySQL主从同步延迟

  MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方 面开发带来了极大的便利.但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负 载.网络拥堵等方面的原因,Master与Slave之间的数据同步延迟是完全没有保证的.短在1秒内,长则几秒.几十秒甚至更长都有可能. 由于数据延迟问题的存在,当应用程序在Master上进行数据更新,然后又立刻需要从数据库中读取数据时,这时候如果应用程序从Slave上取数据(这也

MySQL主从同步加速 Transfer-- FAQ

  Q: Transfer是什么 A: 是一个解决MySQL原生主从同步延迟的方案. Transfer本身是一个在MySQL源码上打的patch,可以用于当Slave,也可以用于当第三方工具,将Master的数据同步发给Slave. 利用多线程实现主从无延迟.   Q: Transfer目前的发布形式? A: 目前的发布形式是可执行的mysqld文件. 最后更新日期 2013-12-01 Transfer.2.3 下载地址    Q: Transfer模式下,主库执行grant 语句会导致同步停

mysql主从同步(低版本)参数说明

在主服务器上为从服务器建立一个用户: grant replication slave on *.* to '用户名'@'主机' identified by '密码'; 如果使用的是MySQL 4.0.2之前的版本,则用file权限来代替replication slave 编辑主服务器的配置文件:/etc/my.cnf server-id=1log-binbinlog-do-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可binlog-ignore-db=不需要复制的数据库苦命,

Mysql中max_allowed_packet限制导致主从同步出错

Mysql主从运行有一段时间了,没有出过什么问题.但最近接着出了两次问题,记录下方便后面排查! Slave_IO_Running和Slave_SQL_Running均为YES,主从同步出错 首先还是确认下各服务器状态.查看主库状态正常,binlog position一直在变,进程状态也正常. mysql> show master status; +------------------+-----------+--------------+------------------+ | File   

详解windows下mysql的主从同步_Mysql

半路出家到Java,刚开始听说到说程序支持读写分离感觉特别高大上,也一直没接触 偶然的机会接触到了,就一定得记下来. 今天先讲讲数据库的主从同步,两个好处: 是读写分离可以用上.比如 写操作就写到主数据库,读就从从数据库读取 是纯粹给数据库备份,以防硬盘彻底崩了 主从数据库操作准备: 两台电脑,都安装好mysql 5.5及以上版本,最好两台电脑都安装同一版本数据库,且能单独正常使用 记住两台电脑的ip地址: 以我家里电脑为例: 主数据库:192.168.0.102   从数据库:192.168.

MySQL数据库主从同步第四版

MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服 务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器.所以我在项目部署和实施中经常会采用这 种方案;鉴于生产环境下的mysql的严谨性,我这里推荐采用张宴兄的MySQL源码编译的方法. 第④版更新内容如下: 一.增加了mysql5.1.38的编译安装过程,安装过程仍然采用张宴早期安装mysql的方法,摈弃了用脚本控制的办法; 二.从库

mysql数据库主从同步

环境: Mater:   CentOS7.1  5.5.52-MariaDB  192.168.108.133 Slave:   CentOS7.1  5.5.52-MariaDB  192.168.108.140 1.导出主服务数据,将主备初始数据同步 master: //从master上导出需要同步的数据库信息 mysqldump -u*** -p*** --database test > test.sql //将master上的备份信息传输到slave上 scp /root/test.sq

mysql主从同步

MySQL编译安装 shell> groupadd mysql shell> useradd -g mysql mysql shell> gunzip < mysql-VERSION.tar.gz | tar -xvf - shell> cd mysql-VERSION shell> ./configure --prefix=/usr/local/mysql shell> make shell> make install shell> cp suppo