自建Binlog订阅服务 —— Maxwell

1. 介绍 Maxwell 是java语言编写的能够读取、解析MySQL binlog,将行更新以json格式发送到 Kafka、RabbitMQ、AWS Kinesis、Google Cloud Pub/Sub、文件,有了增量的数据流,可以想象的应用场景实在太多了,如ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案,等等。 ...

2018-01-13 · 12 min

自建Binlog订阅服务 —— Maxwell

1. 介绍 Maxwell 是java语言编写的能够读取、解析MySQL binlog,将行更新以json格式发送到 Kafka、RabbitMQ、AWS Kinesis、Google Cloud Pub/Sub、文件,有了增量的数据流,可以想象的应用场景实在太多了,如ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案,等等。 ...

2018-01-13 · 12 min

MySQL数据库表结构同步之SchemaSync

SchemaSync是个能够在mysql数据库之间,比较并生成表结构差异的工具,项目地址 https://github.com/mmatuson/SchemaSync 。 SchemaSync介绍与使用 因为工作中经常需要在各个环境之间同步表结构,特别是生产与测试环境之间,长时间的运行后,总会有不一致的。测试环境的表结构一般是测试验证功能之后没有问题,然后通过工单的形式由DBA在生产环境修改。但生产库的结构,如修改索引,紧急修改字段长度,久而久之就会与测试环境有差异,需要同步到测试环境。 ...

2017-11-02 · 4 min

MySQL数据库表结构同步之SchemaSync

SchemaSync是个能够在mysql数据库之间,比较并生成表结构差异的工具,项目地址 https://github.com/mmatuson/SchemaSync 。 SchemaSync介绍与使用 因为工作中经常需要在各个环境之间同步表结构,特别是生产与测试环境之间,长时间的运行后,总会有不一致的。测试环境的表结构一般是测试验证功能之后没有问题,然后通过工单的形式由DBA在生产环境修改。但生产库的结构,如修改索引,紧急修改字段长度,久而久之就会与测试环境有差异,需要同步到测试环境。 ...

2017-11-02 · 4 min

MySQL order by limit 走错索引(range->indexscan)

生产库遇到过好几例本文要讨论的案例,而且比较棘手。简而言之,有类似这样的查询 SELECT * FROM t1 where t1.f2>1 and t2.f2<100 order by t1.id,id是主键,条件里面有个range查询,就会造成优化器是选择主键,还是选择filesort问题,有些特殊情况就会选错索引,比如为了回避内存排序,选择了主键扫描,导致原本走范围过滤再sort 500ms勉强可以结束的查询,5分钟不出结果。 ...

2017-10-26 · 12 min

MySQL order by limit 走错索引(range->indexscan)

生产库遇到过好几例本文要讨论的案例,而且比较棘手。简而言之,有类似这样的查询 SELECT * FROM t1 where t1.f2>1 and t2.f2<100 order by t1.id,id是主键,条件里面有个range查询,就会造成优化器是选择主键,还是选择filesort问题,有些特殊情况就会选错索引,比如为了回避内存排序,选择了主键扫描,导致原本走范围过滤再sort 500ms勉强可以结束的查询,5分钟不出结果。 ...

2017-10-26 · 12 min

“大”事务引起的锁等待分析案例

1. 现象 生产环境数据库在某一刻突然发现大量活跃连接,而且大部分状态是 updating 。问题出现在周六上午,持续了大概三四分钟,得益于我们自己的快照程序,拿到了当时现场的的processlist, 锁等待关系,innodb status 信息:(经过脱敏处理) ...

2017-10-17 · 6 min

“大”事务引起的锁等待分析案例

1. 现象 生产环境数据库在某一刻突然发现大量活跃连接,而且大部分状态是 updating 。问题出现在周六上午,持续了大概三四分钟,得益于我们自己的快照程序,拿到了当时现场的的processlist, 锁等待关系,innodb status 信息:(经过脱敏处理) ...

2017-10-17 · 6 min

table_open_cache 与 table_definition_cache 对MySQL(内存)的影响

1. 现象,内存使用大 首先说一下最近遇到的一个现象,因为分库的缘故,单实例里面的表的数量增加了20倍,总数将近达到10000个。在开发环境明显感觉到执行简单查询都很慢,在processlist里面看到状态 opening table 达到好几秒但数据库并没有什么负载。本能的想到应该要加大 table_open_cache,可是加大后发现MySQL刚启动 RES 就占用了2.5G内存,之前才500-600M的样子。 ...

2017-10-13 · 11 min

table_open_cache 与 table_definition_cache 对MySQL(内存)的影响

1. 现象,内存使用大 首先说一下最近遇到的一个现象,因为分库的缘故,单实例里面的表的数量增加了20倍,总数将近达到10000个。在开发环境明显感觉到执行简单查询都很慢,在processlist里面看到状态 opening table 达到好几秒但数据库并没有什么负载。本能的想到应该要加大 table_open_cache,可是加大后发现MySQL刚启动 RES 就占用了2.5G内存,之前才500-600M的样子。 ...

2017-10-13 · 11 min