默认我们MySQL5.6线上环境都是

master_info_repository = TABLE

relay_log_info_repository = TABLE

官方文档上对 sync_master_info 描述如下:

The effects of this variable on a replication slave depend on whether the slaves master_info_repository is set to FILE or TABLE, as explained in the following paragraphs.

默认为10000。设置为1表示每个EVENT都要执行刷盘操作(注意不是每个事务!),为0表示有操作系统来决定何时刷盘。

对于 master_info_repository = TABLE 情况下,If the value of sync_master_info is greater than 0, the slave updates its master info repository table after every sync_master_info events. If it is 0, the table is never updated.

我们可以做个小实验

搭建一套传统复制的主从环境。

在从库执行

set global sync_master_info=1;

然后,在主库插入一条记录。再到从库去查看 select * from mysql.slave_master_info \G 结果中的Master_log_pos字段值。并执行show slave status \G 查看Exec_Master_Log_Pos值。

可以重复操作几次数据插入,可以发现和mysql.slave_master_info里面是一致的。

然后,在从库设置

set global sync_master_info=10000;

然后,在主库插入一条记录。再到从库去查看 select from mysql.slave_master_info \G 结果中的Master_log_pos字段值。并执行show slave status \G 查看Exec_Master_Log_Pos值。

可以重复操作几次数据插入,可以发现show slave status \G 和mysql.slave_master_info里面对不上了。

show slave status \G 展示的是基本实时的exec_master_log_pos数据。但是 select from mysql.slave_master_info \G 里面却迟迟不更新。 这就是sync_master_info参数的功效。

说明:

如果set global sync_master_info=1的话,理论上复制会更安全,但是这样的话执行每个event都要去update一次 mysql.slave_master_info,就增大了磁盘IO,因此我们一般在从库也启用binlog,这样即便复制出问题了,根据从库记录下的最后的binlog信息可以重新change master到主库上。

mysql syncmasterinfo_sync_master_info的一些说明相关推荐

  1. mysql 快捷查询数据库各表占用空间,mysql查看索引占用空间,mysql查看数据占用空间

    先贴一张图! 第一步,"很重要" 在mysql中,有一个创建之初自带的库information_schema,这个库中包含着数据库相关信息,查询数据占用空间就是使用该库,所以首先进 ...

  2. mysql并发更新数据,多用户并发修改数据解决方案。

    mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...

  3. mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

    下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...

  4. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  5. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  6. docker一步安装mysql,docker的魅力就在于此

    正常来说,使用docker安装东西的步骤是serach它有没有,然后pull它 这里其实只要一步(如果你没有安装过.没有端口占用等问题的话!!) $ docker run -d -p 3306:330 ...

  7. 设置腾讯云linux服务器中 MySQL 允许远程访问

    申请了一台linux腾讯云服务器,想要把数据库搭建在上面,本地的Windows直接可以访问 以下就是具体的操作流程,首先你需要安装好一个mysql,安装方法–>mysql安装(Linux) 接着 ...

  8. Linux安装mysql,一步到位!

    今天在腾讯云上面买了一个服务器,想要把自己的项目部署一下,就要安装mysql,以下是我的安装步骤,在网上有很多人把install敲错了,还有的少-get,种种错误试完之后,我决定发一篇 sudo ap ...

  9. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

最新文章

  1. 项目需求(20-30万)|人体三维动作重构
  2. MySQL InnoDB 锁表与锁行
  3. QT使用winsocket
  4. Android之Fragment(二)
  5. 15个优雅的Python编程技巧,掌握后瞬间玩转Python
  6. 设置在最小数目的阵列
  7. 09-OpenLDAP加密传输配置
  8. xxx is not mapped 错误 解决方案
  9. BZOJ1934: [Shoi2007]Vote 善意的投票
  10. linux mongo 添加用户名和密码,mongodb3.4 安装及用户名密码设置
  11. 手机组态软件_安卓平板组态软件​_移动端组态
  12. EXCEL 对筛选结果进行排序
  13. python条件判断天气_Python小课—条件判断—学习笔记(4)
  14. latex IEEEtran bib参考文献title双引号
  15. 笔记本外接扩展屏显示模糊解决方案
  16. 【C进阶】之动态内存分配及内存操作函数
  17. 关于应用程序无法正常启动0xc000007b的解决方案
  18. 制作动图简易软件(附下载方式)
  19. 2016年下半年总结(连载)!
  20. 适合中小企业的ERP管理软件如何选择?

热门文章

  1. Jenkins学习总结(6)——Jenkins 的安全实践
  2. Mysql学习总结(63)——Mysql数据库架构方案选择与分析
  3. SQLite学习总结(3)——SQLite命令及语法
  4. 项目管理学习总结(6)——产品经理常用的工具有哪些?
  5. Java基础学习总结(104)——多线程、并发、工具类相关的面试题
  6. Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
  7. mysql8无法修改端口_mysql8.0.18 修改端口报错 Can't start server: Bind on TCP/IP port: Permission denied...
  8. java client和servers_“java -server”和“java -client”之间的真正区别?
  9. (键盘)代码 19:由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备 解决方法...
  10. MYSQL正式环境主从复制(不锁表,不停服务)