在slave上有两个线程:io线程和sql线程
io线程接收master的二进制日志信息并写入到本地的relay log中;sql线程执行本地relay log中的信息。
io线程读取到的二进制日志当前位置信息写在master.info中;sql线程读取到的当前relay log位置信息写在realy-log.info文件中

存在的问题就是相应的内容写入文件后,并不能都实时刷新到磁盘上。当mysql实例crash后,对应的位置信息就可能不一致。
在5.6中可以set sync_master_info = 1和 sync_relay_log_info =1来确保每个事务结束后对应的信息被写入磁盘。
但是复制信息是在事务提交后才写的,如果在事务提交后slave发生了crash,而realy-log.info信息还没有被更新,实例重启后就可能会导致事务执行两次,就可能会发生复制错误。当然也可能对复制没有影响。

5.6中,引进了两个参数relay_log_info_repository、master_info_repository
设置relay_log_info_repository=table,就会创建表mysql.slave_relay_log_info,并将realy-log.info文件中的信息写入到该表中。
设置master_info_repository=table,就会创建表mysql.slave_master_info,并将master.info文件中的信息写入该表。
这个方法很简单,就是把SQL线程的事务和更新mysql.slave_relay_log_info的语句看成一个事务处理,这样就会一直同步的.

虽然解决了sql线程的问题,但是io线程的问题还没有解决,因为更新slave_master_info表跟事务没有关系。那么如何让msyql server更新该表呢?
于是又引入了参数sync_master_info,5.6.6之后默认值是10000。

当master_info_repository=file,sync_master_info=n的值大于0,表示n个events之后刷新到磁盘;如果n值为0,表示如何刷新到磁盘取决于操作系统。
当master_info_repository=table,sync_master_info=n的值大于0,表示n个events之后更新表mysql.slave_master_info;如果n值为0,表示不更新mysql.slave_master_info。

还有更优雅的方法,使用参数relay_log_recovery = ON,但是设置这个参数生效,需要服务器重启。
开启该参数,重启server后,io线程抛弃现有的IOthread的偏移量,从slave_relay_log_info表中获取当前的IO线程偏移量,这样你就不需要以为crash-safe存储IO线程的信息到表里。也就是说master_info_repository = TABLE不是必须的。

最后注意,relay_log_info_repository = TABLE和 sync_relay_log_info是 没有关联的。所以你可以放心的从配置文件中移除sync_relay_log_info。

MySQL 5.6新特性 -- crash-safe replication的更多相关文章

  1. InnoSQL HA Suite的实现原理与配置说明 InnoSQL的VSR功能Virtual Sync Replication MySQL 5.5版本引入了半同步复制(semi-sync replicaiton)的功能 MySQL 5.6支持了crash safe功能

    InnoSQL HA Suite的实现原理与配置说明  InnoSQL的VSR功能Virtual Sync Replication MySQL 5.5版本引入了半同步复制(semi-sync repl ...

  2. [转帖 ]MySQL 5.7 新特性 JSON

    MySQL 5.7 新特性 JSON 的创建,插入,查询,更新 作者: 我不是鱼 (2016-08-31 16:13)分类: MySQL   标签: MySQL JSON MySQL JSON 应用 ...

  3. Mysql 8.0 新特性测试

    Mysql 8.0 新特性测试 Role MySQL8.0版本添加了role特性,role是一种逻辑概念是权限的集合,可以将一个或以上的权限赋予给role,再将role赋给user.Oracle,Po ...

  4. MySQL 8.0 新特性梳理汇总

    一 历史版本发布回顾 从上图可以看出,基本遵循 5+3+3 模式 5---GA发布后,5年 就停止通用常规的更新了(功能不再更新了): 3---企业版的,+3年功能不再更新了: 3 ---完全停止更新 ...

  5. Mysql 5.6 新特性

    随笔,真的随笔,以后理解得更深了再修改.   Index Condition Pushdown 更多的让存储引擎去处理Where语句中的条款,避免返回无关字段数据等:   Multi-Range Re ...

  6. MySQL 5.7新特性介绍

    本文是基于MySQL-5.7.7-rc版本,未来可能 还会发生更多变化. 1.即将删除的特性1.1.InnoDB monitoring features,详见:WL#7377(访问地址:http:// ...

  7. MySQL 5.7新特性之Generated Column(函数索引)

    MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  8. 初识 MySQL 5.6 新特性、功能

    背景: 之前介绍过 MySQL 5.5 新功能.参数,现在要用MySQL5.6,所以就学习和了解下MySQL5.6新的特性和功能,尽量避免踩坑.在后续的学习过程中文章也会不定时更新. 一:参数默认值的 ...

  9. MySQL 5.7新特性之generated column

    MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  10. MySQL 5.6新特性 -- Multi-Range Read

    如果基表很大,数据没有被缓存,在二级索引上使用范围扫描读取行可能会导致大量的随机磁盘访问.使用Multi-Range Read新特性,mysql可以减少对磁盘的随机读的次数:首先,mysql只是扫描索 ...

随机推荐

  1. ThreadPoolExecutor线程池的分析和使用

    1. 引言 合理利用线程池能够带来三个好处. 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行. 第 ...

  2. 【转载-译文】requests库连接池说明

    转译自:https://laike9m.com/blog/requests-secret-pool_connections-and-pool_maxsize,89/ Requests' secret: ...

  3. python 字符串组成MySql 命令时,字符串含有单引号或者双引号导致出错解决办法

    引用自:https://blog.csdn.net/zhaoya_huangqing/article/details/48036839 一.在组成SQL语句并发送命令时完全按照Python中的样式去传 ...

  4. HDU3336 Count the string KMP 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU3336 题意概括 给T组数据,每组数据给一个长度为n的字符串s.求字符串每个前缀出现的次数和,结果mo ...

  5. 【Java】 剑指offer(12) 机器人的运动范围

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 地上有一个m行n列的方格.一个机器人从坐标(0, 0)的格子开始移 ...

  6. DSP 知识点

    1:自定义数据段 #pragma DATA_SECTION(symbol,".section") Int32 symbol[LENGTH]; 2:前几天遇到一个问题.dsp在执行某 ...

  7. centos 支持复制与粘贴

    centos 要支持与主机的交互,vmtools 必不可少. 为了方便虚拟机和主机之间复制粘贴文件,拖拽文件,需要安装VMwareTools.下面将我的安装步骤记录如下:第一步:打开虚拟机后,在VM的 ...

  8. Pytorch 基础

    Pytorch 1.0.0 学习笔记: Pytorch 的学习可以参考:Welcome to PyTorch Tutorials Pytorch 是什么? 快速上手 Pytorch! Tensors( ...

  9. 大数据系列博客之 --- 深入简出 Shell 脚本语言(基础篇)

    首先声明,此系列shell系列博客分为四篇发布,分别是: 基础篇:https://www.cnblogs.com/lsy131479/p/9914747.html 提升篇:https://www.cn ...

  10. 洛谷.3437.[POI2006]TET-Tetris 3D(二维线段树)

    题目链接 下落一个d*s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵 ...