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-完美的分布式事务支持,
什么鬼!基于备份恢复的数据还能变多?
对数据库进行数据备份无非两种方式,一种是逻辑备份,也就是直接连上数据库导出所有的数据,对于MySQL,就是通过MySQL客户端或JDBC等MySQL驱动进行全表Select,将查询结果转化为Insert语句并保存到文件中,实际场景下,一般使用mysqldump或mydumper等工具来…
MongoDB复制集与Raft协议异同点分析
一、日志复制流程: a、raft leader节点在接收client请求后,先将请求写到日志中,再将日志通过AppendEntries RPC发送到follow上。如果收到了大多数follow的确认消息,则对应日志可以在leader节点回放,之后follow上对应的日志也会被应用; b、mongodb prim…
MongoDB账号管理及实践
MongoDB作为一个成熟的数据库,像MySQL一样,也提供账号管理,但又跟MySQL不大一样,MongoDB使用基于角色的访问权限控制(Role-Based Access Control,RBAC),包括账号(Users,直译为用户,但似乎账号更好理解)、角色(Roles)和权限(Privileges)三层关…
网易蜂巢MongoDB云服务简介
MongoDB是目前最为流行的NoSQL数据库,在2017年1月新鲜出炉的数据库权威排行榜上,MongoDB超越PostgreSQL,重回第四宝座,是前五中唯一的NoSQL数据库,遥遥领先其他NoSQL数据库。 MongoDB官方调查得出结论:“MongoDB is generally a good fit for 60%-80% …
MongoDB安全事件的防范与反思
近段时间来,全球范围内数以万计的MongoDB实例被攻击,这次事件从技术层面看并没有什么高深之处,应对措施也非常方便,下面以网易蜂巢MongoDB服务为例进行介绍。 首先,不要把MongoDB实例直接暴露在公网下,这是原则问题。可以说没有任何理由将您的数据存储…
mysqlbinlog工具使用的几个疑惑点和解释
1、Format_description_event问题: BINLOG ' kTXkUxMKAAAALQAAAPoDAAAAAEgAAAAAAAEABHRlc3QAAnQzAAEDAAFS1mTW kTXkUyAKAAAALQAAAOgEAAAAAEgAAAAAAAEAAgAB//4BAAAA/gIAAAC52uck '/*!*/;假设以上是使用 ../mysql/bin/mysqlbinlog -v --start-position=1094 m…
自建MySQL实例迁移到云平台实践
(文中图都挂,待补上)简介 我们把数据库中部分或全部Schema和数据迁移到另一个实例的行为称为实例迁移,将导出数据的实例称为源实例,导入数据的实例称为目标实例。根据迁移数据库类型的不同,可以分为同种数据库之间的迁移,如从MySQL迁到MySQL;跨数据…
在Debian上部署安装MongoDB 3.2
如果要安装3.4版本,只需要替换到版本信息即可。1、执行如下命令下载安装包:sudo apt-key adv --keyserver hkp://http://keyserver.ubuntu.com:80 --recv EA312927echo "deb
谈谈MongoDB适用领域
本篇文章写于2016年底,现在一年半时间过去了,MongoDB的发展显然越来越好。不仅MongoDB公司上市了,且股价彪了不少。另外,新出的版本增加了很多好用的特性,尤其是在最新的MongoDB 4.0版本已支持Replica Set级别的事务,对于Secondary上的读也做了较大的…
InnoDB记录压缩及使用分析
这篇文章,源于RDS组内的一次饭后闲聊,两位小伙伴在探讨InnoDB启用压缩后的种种,比如在磁盘上是怎么存放数据的,数据页的大小是多少?怎么知道一个页里面可以写入多少压缩前的数据等等。两年前曾看过InnoDB压缩的文档和代码,现在好多东西都模糊了,趁此…
InnoDB透明页压缩与稀疏文件
MySQL 5.7中包括了很多让人耳目一新的新特性,其中就包括了InnoDB Transparent Page Compression,姑且称之为InnoDB透明页压缩。其实透明页压缩这个东西,早就关注过,其用到了sparse file和hole punching技术,但一直没能将这两种技术跟InnoDB压缩联系起来…
MongoDB复制集成员及状态转换
复制集(Replica Set)是MongoDB核心组件,相比早期版本采用的主从(Master-Slave)架构,复制集具有很多天然的优势,包括自动故障恢复、多机房部署、读写行为控制等。本文介绍复制集中最基础的部分,就是复制集成员(Replica Set Member)。大体分为成员的…