July 26, 2012

[MySQL Bug] <=5.1.49 alter table rename 操作导致复制中断

转载请署名:印风 —————– 在我们传统的认识里,MySQL对于alter操作是隐式提交的,也就是说,执行一条Alter会直接写入binlog,而不等待commit。 这种看法在大多数情况下是正确的,但有一个例外,也就是alter table rename操作,在MySQL5.1.50之前,如果你设置了autocommit = 0 , 该DDL不会隐式提交,直到你显式的commit。 有意思的是,官方的修复初衷并不因为这个bug,而是其他的一个debug版本的断言失败(详见http://bugs.mysql.com/bug.php?id=54453) 废话不多说,看test case: session 1: root@test 10:42:03>reset master; Query OK, 0 rows affected (0.00 sec) root@test 10:42:07>create table t1 (a int, b int); Query OK, 0 rows affected (0.01 sec) root@test 10:42:22>set autocommit = 0; Query OK, 0 rows affected (0.00 sec) root@test 10:42:27>alter table […]