18

DROP TABLE AND LOCK_OPEN MUTEX

在Oracle中直接删除一张大表,会导致free extent 的enqueue,会导致buffer cache 的object purge,所以我们要有很多步骤,让删表变得不影响性能。这方面MySQL目前没有好的方法。MySQL中在对表进行drop table 命令,实际上调度的是mysql_rm_table_part2(sql/sql_table.cc)函数。

继续阅读全文

10

MySQL多个Slave同一server_id的冲突原因分析

今天分析一个诡异问题,一个模拟Slave线程的程序,不断的被Master Server给kill掉,最终发现是因为有两个Slave使用同样一个server id去连接Master Server,为什么两个Slave用同一个server id会被Master Server给Kill呢?分析了源码,这源于MySQL Replication的重连机制。

继续阅读全文

12

MySQL半同步存在的问题

在开启MySQL半同步的时候,需要至少一个开启了半同步的slave。在master提交一个写事务之后,master会block这个事务,直到至少一个slave确认已经接受到了该复制事件,这时master才想应用程序确认提交成功。否则超时中断半同步,直到重新满足条件开启。

继续阅读全文