本文简述下之前我们线上频繁碰到的“UNABLE TO PURGE A RECORD”的原因
######### […]
Tags:
Del.icio.us |
Facebook |
TweetThis |
Digg |
StumbleUpon … |
本文简述下之前我们线上频繁碰到的“UNABLE TO PURGE A RECORD”的原因
######### […]
Tags:
Del.icio.us |
Facebook |
TweetThis |
Digg |
StumbleUpon … |
译者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.
原文: http://www.mysqlperformanceblog.com/2013/12/07/linux-performance-tuning-tips-mysql/
因为很多MySQL的生产环境都在Linux下,我决定指出一些Linux下跑MySQL的很重要的优化点。这些是大家都知道的,也没什么新东西,但我想在这一个blog里收集整理一下Linux相关的配置优化经验。
文件系统:
ext4(or xfs) mount时使用notime选项
文件系统调度策略: 使用deadline or noop
# echo deadline >/sys/block/sda/queue/scheduler add "elevator=deadline" to grub.conf
译者推荐: XFS , 目前来看Red hat …
[获取更多]作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.
现象
在PHP error log里发现:
PHP Warning: mysqli::mysqli(): (HY000/2003): Can’t connect to
MySQL server on ‘XXX.XXX.XXX.XXX’ (99) in /u1/www/XXXX.php on
line 10
PHP Warning: mysqli::close(): Couldn’t fetch mysqli in
/u1/www/XXXX.php on line 11
推断:只有在高并发的环境下出现
诊断分析:
通过MySQL数据库上抓包,没发现异常。又把目标转到php 服务器上。
BTW:
linux开着selinux连接MySQL在测试中基本上属于1ms+,禁掉selinux后在0.96左右。selinux还是要禁掉的。
既然又怀疑是PHP的问题就写一个程序测试(禁掉selinux后):
cat tconn.php …
作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.
北京新媒传信科技有限公司正式成立于2007年3月,是北京神州泰岳软件股份有限公司的全资子公司.
工作环境:
拥有自行开发的一套 MySQL 容灾机制,管理20T以上的用户核心数据,大规模分布式集群环境。大数据,高并发,等待你的加入.
任职要求:
3年以上MySQL DBA工作经验,具备数据库开发能力;
精通/熟悉MySQL数据库的运行机制和体系架构,运行管理与优化;
精通MySQL复制、Cluster、备份/恢复原理,熟练掌握数据库维护工具;
精通MySQL存储引擎InnoDB、MyISAM,存储过程和事务;
…
背景
今天在讨论frm丢失后drop database失败的问题。简单复现如下。假设test库中有两个表t1, t2,执行如下脚本:
bin/mysql -uroot –socket=run/mysql.sock -e ”
前几天有位开发的同学问了个问题,InnoDB的group commit效果如何?之前说好了回头给看下,结果险些拖过年。
Group commit背景
InnoDB的redo log的group commit历史比较悠久了(有别于binlog的group commit)。如果设置为1,每次事务提交都至少需要写一次redolog。这对IOPS冲击严重,尤其是在HDD上,直接成为性能瓶颈。
5.6 的新增特性,允许对DML语句做explain。这下大家高兴了,碰到复杂更新语句(且还造成慢查询)要自己手动改成select语句的日子终于到头了。
饶有兴致的试用了一把,总体感觉不错,不过发现一个bug。
复现
背景
这个问题由一个同事问到的一次导入数据引发。一个很常见的操作,将数据从一个表中dump出来,在用mysql < a.sql的方式导入到另一个库的一个表中。
在执行导入的时候,提示 MySQL server has gone away。在追查的时候突然想到会不会是因为max_allowed_packet太小导致的。将max_allowed_packet改大,确实解决了问题。