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

基本流程:

对于每一个连上来的从库,主库都有一个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

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

  1. redis mysql主从同步_Redis主从数据库同步

    Redis主从同步原理-SYNC 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以 ...

  2. mysql 半同步_mysql 主从同步 与 半同步

    mysql主从同步复制定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave).通过配置文件,可以指 ...

  3. mysql主从同步 sql_mysql主从同步报错;Slave_SQL_Running: No

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常. show master status ...

  4. mysql主从同步_utf8_MySQL主从同步

    MySQL主从同步 特别提醒: 做主从前最好在数据库尚未创建的时候做,如果已经创建了.可以将原来数据导出,等建立好主从以后在主上面导入即可让数据同步 1.环境 主数据库  IP:10.5.100.15 ...

  5. [MySQL]-主从同步实战-主从搭建

    [MySQL]-主从同步实战 森格 | 2022年12月14日 本文主要为在平时work中遇到的主从同步上的问题的处理,对其进行巩固总结. 一.场景介绍 ​ 在一个风和日丽的下午4点半,突然就收到一个 ...

  6. mysql 主从同步_Mysql主从同步的实现原理

    1.什么是mysql主从同步? 当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库. 2.主从同步有什么好处? 水平扩展数据库的负载能力. 容错,高可用.Failover ...

  7. mysql主从同步ddl_mysql主从同步

    mysql主从同步不生效 这几天尝试搭建下mysql主从同步,用的是内网 1.主库 192.168.1.58 从 192.168.1.220 2.主库my.ini配置如下: server-id = 1 ...

  8. mysql架构 三级主从同步_MySQL 主从同步架构中你不知道的“坑”

    以下操作征对指定不同步库 binlog-format=ROW模式 1 查看主从的binlog模式 mysql> show slave status\G ********************* ...

  9. linux下mysql主从同步是主从i/o线程显示为no_mysql主从同步IO线程NO

    主从同步错误一例 mysql> show slavestatus\G; ***************************1. row *************************** ...

最新文章

  1. 团队-团队编程项目作业名称-模块开发过程
  2. 牛!开创交互式电脑绘图先河,虚拟现实之父传奇
  3. linux2.6内核链表
  4. 冒泡算法代码java_java版本的冒泡算法
  5. 拉5000万存款,银行客户经理能拿40万奖金?
  6. apache 隐藏php版本,PHP+Apache环境中怎么隐藏Apache版本
  7. 2021年中国助听器电池市场趋势报告、技术动态创新及2027年市场预测
  8. oracle中文转全拼音,Oracle数据库之oracle汉字转拼音
  9. 用Excel做直方图(2):频率分布直方图
  10. ODC预端接光纤配线箱
  11. 【转载】NURBS概念
  12. 1、学习笔记-谁说rookie不会数分(入门篇)
  13. C语言家谱管理程序,[C语言]家谱 - 代码贴 - BCCN
  14. win10 解决:无法访问网络地址
  15. final修饰的变量必须初始化吗?
  16. 作为程序员这些都是必读的书
  17. sqlmap工具基本使用(检测sql注入)
  18. iOS 8人机界面指南(一):UI设计基础
  19. ADODB 入门(推荐)
  20. 如何用Python对股票数据进行LSTM神经网络和XGboost机器学习预测分析(附源码和详细步骤),学会的小伙伴们说不定就成为炒股专家一夜暴富了

热门文章

  1. python数据驱动登录_python之数据驱动ddt操作(方法三)
  2. python网络爬虫的特点_Python网络爬虫(一)- 入门基础
  3. TimeSten专题:配置TT客户端的简明方法
  4. 【运维安全】-HTTP协议
  5. 企业级 SpringCloud 教程 (五)路由网关(zuul)
  6. select 下拉框的选中项的change事件
  7. 快速搭建Web环境 Angularjs + Express3 + Bootstrap3
  8. 如何更改rhevm中admin的密码
  9. js 添加事件 attachEvent 和addEventListener 的用法
  10. Windows2003 安装MVC4 环境的步骤