MySQL Group Replication深度剖析及实践

本技术分享于2018年8月 「3306π」成都站

视频1 => 腾讯课堂「3306π」技术Meetup-成都站
视频2 => 大咖秀「3306π」技术Meetup-成都站

主要内容:
1. MySQL Group Replication特性
2. MGR集群整体架构
3. MGR集群数据同步、冲突检测、流控
4. MGR集群性能分析
5. MGR适用场景及实践

PDF下载:MySQL Group Replication深度剖析及实践[……]

继续阅读

谈谈MySQL水平扩展

写在前面

14年中换了一份工作,出国游荡了一阵子,目前工作离数据库内核远了点,离业务近了些,业务层面碰到的‘高深’技术问题也少了,旅行后发现人也懒了不少,导致博客都长草了

2015开始了,先表态一下目标:我2015年的目标就是搞定2014年那些原定于2013年完成的安排,不为别的,只为兑现我2012年时要完成的2011年年度计划的诺言

2015-goal

问题背景

工作中遇到数据库数据增长过快,单表一年之后预计到达35M行数据,可以预见MySQL性能将下降厉害,并且随着业务的规模化,担心单表将很难抗住并发压力,出现故障后恢复时间变长对业务影响也会变大,因此需要考虑数据水平扩展,目前项目采用[……]

继续阅读

Galera replication for MySQL

这篇文章总结了之前对Galera replication的调研,内容包括Galera特性,原理,Galera cluster配置,参数及性能等

Galera replication是什么

MySQL DBA及开发应该都知道MySQL源生复制及semi-sync半同步复制,它们都基于MySQL binlog,原生复制是完全异步的,master不需要保证slave接收并执行了binlog,能够保证master最大性能,但是slave可能存在延迟,主备数据无法保证一致性,在不停服务的前提下如果master宕机让slave顶上,就会丢失数据,semi-sync在异步复制基础上增加了数据保护的考虑,master必须确认slave收到binlog后(但不保证slave执行了事务)才能最终提交事务,在没有退化(延迟较大时可能发生)成异步复制之前可以保证数据安全,此时master挂掉之后,slave可以在apply完所有relay log后切换成master提供读写服务

Galera replication是codership提供的MySQL数据同步方案,具有高可用,易于扩展等特点,它将多个MySQL节点组织成一个cluster
[……]

继续阅读

MySQL metadata lock源码分析

花了些时间理了下MySQL Meatadata Lock(元数据锁,有人将其翻译为数据字典锁)的实现,文章内容比较偏源码层面,在如何使用方面有些欠缺,需要对数据库系统原理或者MySQL实现有一定基础才不会觉得枯燥,如果连S/X/IS/IX及他们之间的关系都不清楚,建议先学习这部分知识!

源码版本:
Oracle MySQL community server 5.6.16

关键数据结构:

MDL_map
管理系统中所有的mdl(MDL_lock),为了减小锁竞争,被划分为mdl_locks_hash_partitions(默认为8)部分,该类全局只有一个对象:mdl_locks

MDL_map_partition
MDL_map中的一个partition,使用hash存储部分mdl(MDL_lock)
[……]

继续阅读

MyISAM表一例查询性能问题排查

问题背景

线上相同结构的两个MyISAM表,数据量差不多,执行的SQL查询计划基本一致,但是执行时间却相差很大

mysql> select * from auction_info_d__201402 where unit_id=7016 and day='2014-03-27';
Empty set (0.31 sec)
mysql> select * from auction_info_d__201403 where unit_id=7016 and day='2013-03-27';
Empty set (19.81 sec)

MySQL版本:

mysql> select @@version;
+------------+
| @@version  |
+------------+
| 5.1.48-log |
+------------+
1 row in set (0.00 sec)

[……]

继续阅读