relay log 在执行after_append_to_relay_log 的时候调用了flush_and_sync 进行flush 和sync

bool MYSQL_BIN_LOG::flush_and_sync(const bool force)
{mysql_mutex_assert_owner(&LOCK_log);if (flush_io_cache(&log_file))return 1;std::pair<bool, bool> result= sync_binlog_file(force);return result.first;
}
看sync_binlog_file 这个函数,有个技术器,没有达到设置的值,是不会sync文件的。
MYSQL_BIN_LOG::sync_binlog_file(bool force)
{bool synced= false;unsigned int sync_period= get_sync_period();if (force || (sync_period && ++sync_counter >= sync_period)){sync_counter= 0;/**On *pure non-transactional* workloads there is a small windowin time where a concurrent rotate might be able to closethe file before the sync is actually done. In that case,ignore the bad file descriptor errors.Transactional workloads (InnoDB) are not affected since thethe rotation will not happen until all transactions havecommitted to the storage engine, thence decreased the XIDcounters.TODO: fix this properly even for non-transactional storageengines.*/if (DBUG_EVALUATE_IF("simulate_error_during_sync_binlog_file", 1,mysql_file_sync(log_file.file,MYF(MY_WME | MY_IGNORE_BADFD)))){THD *thd= current_thd;thd->commit_error= THD::CE_SYNC_ERROR;return std::make_pair(true, synced);}synced= true;}return std::make_pair(false, synced);
}也就是说在after sync 的设置下,sync_relay_log > 1的情况下,不会等到全部的relay log全部都sync就会返回ack,这种情况下如果从库挂了,就会丢数据。

MySQL半同步与sync_relay_log关系2相关推荐

  1. MySQL · 源码分析 · MySQL 半同步复制数据一致性分析

    简介 MySQL Replication为MySQL用户提供了高可用性和可扩展性解决方案.本文介绍了MySQL Replication的主要发展历程,然后通过三个参数rpl_semi_sync_mas ...

  2. MySQL半同步安装以及参数

    MySQL半同步安装以及参数 基于MySQL5.5 官档地址: Semisynchronous Replication Administrative Interface https://dev.mys ...

  3. mysql 半同步复制_Mysql半同步复制原理及问题排查

    mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master ...

  4. mysql半同步复制问题排查

    1.问题背景       默认情况下,线上的mysql复制都是异步复制,因此在极端情况下,主备切换时,会有一定的概率备库比主库数据少,因此切换后,我们会通过工具进行回滚回补,确保数据不丢失.半同步复制 ...

  5. mysql半同步复制

    从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...

  6. mysql半同步复制实现

    mysql半同步复制和异步复制的区别如上述架构图所看到的:在mysql异步复制的情况下.Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Mast ...

  7. mysql 5.5半同步复制_(5.5)mysql高可用系列——MySQL半同步复制(实践)

    关键词,mysql半同步复制 [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复 ...

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

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

  9. mysql半同步模式_MySQL 半同步复制模式的实现

    半同步复制原理图 #半同步启动需要主从两端都需要加载安装各自对应的semi模块,从库端支持半同步功能的数量至少一台:主库端当一个事务成功提交后,并不及时反馈给前端用户,该线程会被临时block,等待由 ...

最新文章

  1. 在MFC对话框中快速集成三维控件
  2. 张亚勤:PC之外的争夺战
  3. 别太贪婪,这些技能能让你一辈子满足
  4. mysql top 1效率_TOP 1比不加TOP慢的疑惑
  5. 代码重构技巧宝典,学透本篇就足够了!
  6. python list add_Python的List方法附加和扩展有什么区别?
  7. 架构运维篇(五):Centos7/Linux中安装RocketMQ
  8. 筛选法求100以内的素数
  9. deepinv2 添加打印机_科学网-Deepin Linux虚拟PDF打印机的安装与妙用-黄健的博文
  10. python wps et_使用Python操作XLS文件(wps中叫et)
  11. 漫聊科技发展史——1. 人工智能的发展史
  12. 编程题:用for循环嵌套,输出下列图形:
  13. mac的 tr命令_tr命令 - Holy_Shit - 博客园
  14. NLP-信息抽取-三元组-联合抽取-多任务学习-2019:CasRel【关系三元组抽取:一种新的级联二元标注框架】【没用CRF】【基于Lic2019比赛】【数据集:NYT、WebNLG】
  15. 【设计】1359- Umi3 如何实现插件化架构
  16. 文件锁(一)——文件锁的概述
  17. python按照号段生成手机号接收验证码_django 发送手机验证码的示例代码
  18. js获取内网ip地址,操作系统,浏览器版本等信息
  19. 安装pyrit qq5ed84579da89e
  20. 10.1 快乐,自费送几本豆瓣9.0高分书籍

热门文章

  1. HBase学习之路(七):理解计数器的基本概念及计数器的使用
  2. Android Dialer,Mms,Android开发指南
  3. Dynamo绘制锚下螺旋筋
  4. SolidWorks与3D扫描技术不得不说的故事!
  5. Nokia S60v5的用户小心了
  6. 国王挖金子(动态规划)
  7. 计算机视觉——Bag-of-words
  8. [Git] Mac通过brew升级git
  9. Hive QL场景题第六部分详解
  10. ArcGIS三调地类转三大类