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

基本流程:

对于每一个连上来的从库,主库都有一个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. gpio引脚介绍 树莓派3b_如何让LabVIEW程序运行在树莓派3B(此处有坑)
  2. Alpha冲刺 - (5/10)
  3. kafka comsumer
  4. C语言linux getopt_long()函数(命令行解析)(getopt、getopt_long_only)(短选项 -,长选项 --)(option结构体)(optind、optarg变量)
  5. 【Greenplum代码】记录一次不了解GP数据库编号函数使用方法导致的问题(1次疏忽 + 1次不必要 = 2次弯路)
  6. C语言实现高斯-赛德尔迭代gauss seidel(附完整源码)
  7. 网路知识:为什么宽带越用越慢,看完你就明白了
  8. JVM核心——JVM运行和类加载全过程
  9. 多路查找树之2-3树的插入原理
  10. 字符串匹配(二)——逆向思维 BMH
  11. 为防盗装自动门 不想也会影响生活
  12. Hive数据导出的三种方式
  13. php动态增加div,JavaScript动态创建div等元素实例
  14. web前端炫酷特效-CSS3制作环形星星发光动画
  15. 生成CFree 5.0 注册码
  16. 阿里云oos对象存储 上手快速入门
  17. 解决Keystore was tampered with, or password was incorrect
  18. python format函数 日期_Python-日期格式化
  19. matlab控制理论学习
  20. JDK9-17开发常用的新特性

热门文章

  1. 空间装扮代码_你多久没进过QQ空间了
  2. window7 已经分好区的硬盘如何再次分区?
  3. 在weblogic上配置数据源
  4. 深入浅出C/C++中的正则表达式库(一)--GNU Regex Library
  5. 关于 Injection of autowired dependencies failed 错误的解决方法
  6. zw版【转发·台湾nvp系列Delphi例程】HALCON HistoToThresh1
  7. Oracle新建用户、角色,授权,建表空间
  8. url地址中 /等符号的转义处理(转)
  9. Hexo 简明入门教程(一)
  10. Linux下Socket网络编程send和recv使用注意事项