深入浅出MGR(MySQL Group Replication)
Dmall MySQL集群高可用实践
主要内容:
1. MySQL高可用方案选型
2. DNS api & NamesHA
3. MHA切换流程
4. MHA自动化及监控
5. MHA问题及总结
6. MGR集群高可用
活动链接:MySQL技术交流大会
PPT链接:Dmall MySQL集群高可用实践
MySQL Group Replication深度剖析及实践
本技术分享于2018年8月 「3306π」成都站
视频1 => 腾讯课堂「3306π」技术Meetup-成都站
视频2 => 大咖秀「3306π」技术Meetup-成都站
主要内容:
1. MySQL Group Replication特性
2. MGR集群整体架构
3. MGR集群数据同步、冲突检测、流控
4. MGR集群性能分析
5. MGR适用场景及实践
MySQL 5.7新特性(JSON, Functional index, GIS…)
主要介绍内容
1. JSON
2. Functional index
3. GIS
4. Parallel replication
5. Statement timeout
6. Multi source replication
7. CJK parser for fulltext index
8. Performance
9. More..
谈谈MySQL水平扩展
写在前面
14年中换了一份工作,出国游荡了一阵子,目前工作离数据库内核远了点,离业务近了些,业务层面碰到的‘高深’技术问题也少了,旅行后发现人也懒了不少,导致博客都长草了
2015开始了,先表态一下目标:我2015年的目标就是搞定2014年那些原定于2013年完成的安排,不为别的,只为兑现我2012年时要完成的2011年年度计划的诺言
问题背景
工作中遇到数据库数据增长过快,单表一年之后预计到达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) |
[……]
SELECT…FROM UPDATE 特性介绍及性能测试
使用背景:
将update+select两条SQL合并成单条SQL,向客户端直接返回update之后的结果列,通过减小网络开销及sql解析代价提高性能
特性描述:
postgresql的语法是returning … as …
http://www.postgresql.org/docs/9.1/static/sql-update.html
oracle的语法是returning…into…
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/returninginto_clause.htm#LNPLS01354
MySQL中由于需要兼容MySQL JDBC,我们将这个特性实现为:SELECT…FROM UPDATE…
[……]