mysql_upgrade升级的坑

 

通过mysql_upgrade 将MySQL 5.5.34 升级为 5.6.31 版本,发现了一些问题:

问题1:增加普通索引的时候,依然堵塞DML语句,理论上MySQL 5.6 支持在线DDL,增加普通索引不会阻塞DML。

原因:5.6.4之前的格式的时间列(TIME,DATETIME和TIMESTAMP列,不支持小数秒精度),升级成5.6后,执行ALTER TABLE会隐式升级,而升级此类列需要重建表,所以阻塞了DML。

解决方式:

  1. 等ALTER TABLE执行完,下次就不用重建表了。
  2. 开启 set global avoid_temporal_upgrade=on;  它会使ALTER TABLE不重建临时列。但是官方不推荐使用这个参数,以后会删除。

 

 

 

 

升级建议:

  大版本升级还是使用逻辑升级,mysqldump这种导入导出比较好,避免意外,就是太慢了。

 

mysql_upgrade升级的坑

上一篇:Oracle 连接池问题


下一篇:java换成ip访问数据库无法访问