十二 26

lower_case_table_names迷思

关于 lower_case_table_names 选项的设置的建议是怎样的呢?我个人认为,纠结于这个选项设置源于有些项目是从ORACLE或SQL Server迁移过来,在这两个数据库系统中,都无需关心数据表的大小写。而在MySQL中,默认是要区分大小写的(因为Unix/Linux文件系统是区分文件名大小写的),除非在windows系统下(windows系统是不区分大小写的)。

继续阅读全文

02

磁盘空间不足的临时解决方案

一、通过软连接的方式迁移部分表空间到其他硬盘 优点:对数据没有任何影响,反而可以适当增加IO能力,使用多个磁盘的IOPS 缺点:需要停机 处理步骤: 1、关掉mysql实例 2、cp big.ibd /new/big.ibd 3、rename big.ibd big.ibd.remove 4、ln -s big.ibd /new/big.ibd 5、chow -R mysql:mysql /new/big.ibd 6、启动数据库,检查是否异常 7、删掉 remove的文件. 。。。。

继续阅读全文

01

记一次Auto Increment故障

实际上本次故障的素材来自于朋友的朋友,虽然我并不是故障的亲身经历者,但即便只是作为旁观者,依然感觉有所收获,于是乎记录下来以馈读者。
故障的来龙去脉大致是这样的:在一个月黑风高的晚上,苦逼的程序员被一阵急促的报警短信声惊醒,原来是数据库的某个表出问题了,虽然查询操作都正常,但创建操作却都失败了,经过调试,发现原因是表被插入了一行问题数据,其自增字段的值被显式的设置为整型的最大值,导致后续缺省插入的数据不能获取到一个合法的主键值。

继续阅读全文

20

slave复制异常

以下是两种slave复制异常的情况。导致的原因都是由于跨机房同步,slave的机房突然掉电导致的。 案例一、 这个错误大原因是Read_Master_Log_Pos: 1028687822的pos号在主库上是没有的. 处理方法:获取这个pos号的前一个pos号,从新开启同步,这里注意如果是row模式的话就没有问题.如果是mix的或者statement的话,就需要去分析binlog,确认具体执行到哪个pos号了,不然可能会导致数据不一致。

继续阅读全文

十一 28

一个最不可思议的MySQL死锁分析

本着机器不会骗人,既然报出死锁,那么就一定存在死锁的原则,我又重新深入分析了InnoDB对应的源码实现,进行多次实验,配合恰到好处的灵光一现,还真让我分析出了这个死锁产生的原因。这篇博文的余下部分的内容安排,首先是给出”润洁”同学描述的死锁场景,然后再给出我的剖析。对个人来说,这是一篇十分有必要的总结,对此博文的读者来说,希望以后碰到类似的死锁问题时,能够明确死锁的原因所在。

继续阅读全文