MySQL DBA's Blog

Archive for February, 2010

过年了,祝福大家新年快乐!

Friday, February 12th, 2010

下午就要离开杭州,坐汽车回温州了,预祝大家有一个幸福的新年~

这个星期远在美国的阿婆(九十岁……)介绍了个美国妞,让我打国际长途去慰问,结果打了好几次没打通。
决定不继续打了,回去爱咋地咋地,大不了被老妈骂过年。都说距离产生美,但是阿凡达干的那事对我而言,还是有点难度的。
昨天有人说我唠叨,为了保持简洁的风格,就不继续唠叨了。

再次祝愿大家新年快乐,阖家美满!

mysqldump意外终止的原因以及解决方法

Saturday, February 6th, 2010

mysqldump是非常重要的MySQL备份工具。然而在长年累月的使用过程中,TAOBAO多次出现了因mysqldump意外终止而导致备份失败的情况。
以下是我们经常遇到的问题:

1、Lost connection to MySQL server at ‘reading initial communication packet’:
这个主要是因为DNS不稳定导致的。如果做了网络隔离,MySQL处于一个相对安全的网络环境,那么开启skip-name-resolve选项将会最大程度避免这个问题。

2、Lost connection to MySQL server at ‘reading authorization packet’:
从MySQL获取一个可用的连接是多次握手的结果。在多次握手的过程中,网络波动会导致握手失败。增加connect_timeout可以解决这个问题;然而增加connect_timeout并不能防止网络故障的发生,反而会引起MySQL线程占用。最好的解决办法是让mysqldump重新发起连接请求。

3、Lost connection to MySQL server during query:
这个问题具备随机性,而淘宝MySQL的应用场景决定了我们无法多次备份数据以便重现问题。
然而我们注意到这个问题一般会在两种情况下会发生。一种是mysqldump **** | gzip ****;另外一种是mysqldump **** > /nfs-file
注意,不管是gzip还是nfs都有一种特点,那就是它们影响了mysqldump的速度。从这个角度思考,是不是mysqldump从MySQL接受数据包的速度不够快导致Lost connection to MySQL server during query错误呢?
(more…)

MySQL Timeout解析

Saturday, February 6th, 2010

“And God said, Let there be network: and there was timeout”

在使用MySQL的过程中,你是否遇到了众多让人百思不得其解的Timeout?
那么这些Timeout之后,到底是代码问题,还是不为人知的匠心独具?
本期Out-man,讲述咱们MySQL DBA自己的Timeout。
(more…)

Sphinx初试(使用篇)

Tuesday, February 2nd, 2010

搜索三大要素:数据来源、预处理、查询。
在Sphinx+MySQL的架构中,MySQL主要提供了数据来源和查询接口,真正进行全文索引建立和查询的是Sphinx。
MySQL里面存放真正的数据;Sphinx从MySQL中获取数据建立全文索引;应用程序使用相应的api与Sphinx交互以获得真正的数据(此处的api包含SQL接口、php接口,以及其他一些编程语言能够调用的接口)。
(more…)