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

MySQL实例阻塞分析一例(线程statistics状态)

1. 现象 某日下午下班后低峰期,现网MySQL一个库突然报出大量慢sql,状态是 statistics,但是过后拿这些sql去执行的时候,实际很快。处于 statistics 状态的线程有个特征:查询的都是视图,但看监控那个时间段并没有明显的update/detele/insert。通过我们的快照程序,去分析当时的 innodb status,发现如下信息: ...

2017-09-23 · 5 min

一个简单的数据订阅程序(for DBA)

本程序基于大众点评github项目 binlog2sql 二次开发而来,可以实现对源库的binlog实时接收,并组装成增量sql。 原项目默认是把sql输出到控制台,二次开发后的版本把sql放入redis队列,根据需要由另一个程序消费到目标库,模拟了一个“从库”。 在测试时--stop-never在qa环境没有作用,添加了在 BinLogStreamReader 实例里面加入 blocking=True 来保证源源不断的接受binlog而不中断。 ...

2017-09-05 · 3 min

网易云跟帖迁移评论到disqus

早前折腾博客的时候,在众多评论系统中选择了多说,用了2年结果多说倒闭了,也算是影响了网络上众多的站点。 于是在16年的时候把评论换成了网易云跟帖,以为有网易这个靠山,体验虽然差点但是不会轻易关闭。云跟帖还提供了从多说直接导入的工具,随意旧的评论直接弄过来了。 ...

2017-08-29 · 3 min

MySQL数据库表结构同步之mysqldiff

mysqldiff mysql官方有个 mysql-utilities 工具集,其中 mysqldiff 可用于比较两个db之间的表结构。 mysqldiff的语法格式是: 1 $ mysqldiff --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1.object1:db2.object1 db3:db4 这个语法有两个用法: db1:db2:如果只指定数据库,那么就将两个数据库中互相缺少的对象显示出来,不比较对象里面的差异。这里的对象包括表、存储过程、函数、触发器等。 如果db1与db2名字相同,可以只指定 db1 db1.object1:db2.object1:如果指定了具体表对象,那么就会详细对比两个表的差异,包括表名、字段名、备注、索引、大小写等所有的表相关的对象。 如果两边db和对象名都相同,可以只指定 db1.object1 接下来看一些主要的参数: ...

2017-08-05 · 7 min

ProxySQL PPT分享

前些天在公司内部进行了一次 ProxySQL主题的介绍 《ProxySQL数据库中间件使用实践》,因为proxysql是我调研并引入公司的,有必要跟本组开发同学,进行一个正式的介绍和使用说明,以及我们当前的应用情况。 ...

2017-07-19 · 1 min

ProxySQL监控方案

ProxySQL能监控的信息不多,而且大部分是统计信息,不是性能数据。 1 2 3 4 5 6 7 8 9 10 11 12 13 mysql> show tables from stats; +--------------------------------+ | tables | +--------------------------------+ | global_variables | | stats_mysql_commands_counters | | stats_mysql_connection_pool | | stats_mysql_global | | stats_mysql_processlist | | stats_mysql_query_digest | | stats_mysql_query_digest_reset | | stats_mysql_query_rules | +--------------------------------+ 主要关心的指标都在表 stats_mysql_global 里面,源代码 diamond 目录下有个 proxysqlstat.py 脚本,是通过SHOW MYSQL STATUS命令,由diamond收集进程将指标上报到Graphite。有以下几个Metrics: ...

2017-07-16 · 2 min

ProxySQL高可用方案

MySQL的高可用方案现在如 MHA, Galera, InnoDB Cluster,一旦在上游使用中间件之后,中间件本身可能成为单点。所以本文要介绍的是对于ProxySQL自身高可用的方案对比。 首先ProxySQL自身是通过Angel进程的形式运行,即proxysql如果有崩溃,主进程会自动拉起来。但如果是无响应或者网络故障,则需要另外的机制去做到服务的高可用。本文总结了四种方法。 ...

2017-07-15 · 6 min

ProxySQL之改进patch:记录查询sql完整样例与合并digest多个?

近期一直在思考sql上线审核该怎么做,刚好接触到 ProxySQL 这个中间件,内置了一个计算sql指纹的功能,但是没有记录原始的sql语句。当前正有个紧急的拆库项目也希望知道库上所有的查询。于是把ProxySQL的代码下了回来研究了几天,改了把,加入了两个功能: ...

2017-04-27 · 4 min

ProxySQL之性能测试对比

本文会通过sysbench对ProxySQL进行基准测试,并与直连的性能进行对比。与此同时也对 Maxscale 和 Qihu360 Atlas 放在一起参考。 提示:压测前确保把query cache完全关掉。 ...

2017-04-20 · 3 min