MongoDB 4.0 事务实现浅析
前言 本篇由腾讯互娱MongoDB技术专家孔德雨原发表于MongoDB中文社区,经作者同意转载。 多行事务Mongodb4.0引入了多文档事务的特性,我们来看,4.0中是如何进行一个多文档事务的(js的mongoshell代码)。Mongo进行一个多文档事务,必须和一个session对象绑…
从MGR start命令看MGR代码框架
上一篇我们从方案层面讲解了MGR的成员管理和故障恢复。本篇从源码层面捋一捋,本篇内容可以分为2个部分,第一部分对应的是start group_replication命令执行过程,第二部分对应命令返回后节点状态从RECOVERING(恢复中)到ONLINE(在线)的过程。start group…
MySQL MGR成员管理与故障恢复实现
MySQL Group Replication(MGR)框架让MySQL具备了自动主从切换和故障恢复能力,举single primary(单主)模式为例,primary作为主节点对外提供读写服务,是唯一的可写节点,其他节点均为secondary节点,可提供读服务。在传统的master-slave主从复制模式下…
MySQL慢日志线上问题分析及功能优化
MySQL慢日志(slow log)是MySQL DBA及其他开发、运维人员需经常关注的一类信息。使用慢日志可找出执行时间较长或未走索引等SQL语句,为进行系统调优提供依据。本文结合线上案例分析如何正确设置MySQL慢日志参数和使用慢日志功能,并介绍网易云RDS(InnoSQL…
MySQL XA事务bug再一例
问题现象上周RDS组同事反馈了一个问题:对RDS高可用实例进行主从切换时,主上设置super_read_only后,show master status记录了对应的Binlog文件及偏移位置pos1。从上等待复制线程完成所有relay-log回放后,show slave status获取slave此时执行到主上Binlog…
MySQL InnoDB MVCC实现
注:本文由网易数据库和大数据资深专家蒋鸿翔分享。原发表于其个人博客 。 数据多版本(MVCC)是MySQL实现高性能的一个主要的一个主要方式,通过对普通的SELECT不加锁,直接利用MVCC读取指版本的值,避免了对数据重复加锁的过程,今天我们就用最简单的方式,…
MySQL InnoDB Recovery过程解析
本文由网易数据库和大数据资深专家蒋鸿翔分享。原发表于知乎 网易云社区。 InnoDB如果发生意外宕机了,数据会丢么?对于这个问题,稍微了解一点MySQL知识的人,都会斩钉截铁的回答:不会!为什么?他们也会毫不犹豫的说:因为有重做日志(redo log),数据可…
MySQL Group Replication流控实现分析
MySQL Group Replication流控实现分析前言 MGR是有别于传统Master-Slave主从复制模式的一种新型的复制方式,其通过分布式一致性协议Paxos在Group中原子广播事务产生的Binlog并在远端节点进行回放的方式来达到数据复制的目的。但MGR的复制模式还是异步的,一…
MySQL事务在MGR中的漫游记 - Paxos协议
前两篇分别介绍了事务在MGR中的执行流程以及如何进行事务认证,本篇我们详细介绍事务如何进入Paxos以及在Paxos中具体执行过程,最后描述完成Paxos协议后如何返回给MGR。Paxos实现简介几个关键协程在MGR中,Paxos协议通过一系列协程实现,其中与MySQL事务相…
MySQL事务在MGR中的漫游记 - 事务认证
在上篇的基础上,本篇展开分析在pipeline中事务认证全过程,对应的handler为Certification_handler::handle_transaction_id()。应该说这篇的内容非常实用,在使用MGR时可能遇到的不少问题,都跟事务认证机制有关。不管是DBA还是MySQL开发都应该对此有所了解。…
MySQL事务在MGR中的漫游记 - 路线图
MGR即MySQL Group Replication,是MySQL官方推出的基于Paxos一致性协议的数据高可靠、服务高可用方案。MGR在2016年12月12号发布的MySQL 5.7.17版本达到GA状态,在这之后一年半时间里,MySQL又相继发布了5.7.18到5.7.22版本,每个版本都对MGR做了功能增强、…
MySQL 5.7版本XA事务若干bug分析
MySQL 5.7实现了对XA事务的完美支持,通过将XA PREPARE操作记录在Binlog文件来解决prepare事务的持久化问题。MySQL 5.7 XA事务目前已经有多篇文章进行了介绍,可参考 mysql-5-7-完美的分布式事务支持,