問題現象:
alter table portal_app_xxxx_xxx add devno varchar(64) NOT NULL DEFAULT '' COMMENT '設備機編',add serialno varchar(64) NOT
NULL DEFAULT '' COMMENT '綁定流程流水號',Error_code: 1034
MySQL error code 1034 (ER_NOT_KEYFILE): Incorrect key file for table 'XXXXXX'; try to repair it
查找解決方法:
在網上查找了一下,發現大多的解決辦法都是repair,然后再進行myisam進行檢查及恢復;
但是發現這個方法只適用於存儲引擎為MyISAM的表,於是繼續猜測着查找方法。
使用repair table時,直接報Innodb表不支持repair方法。
猜測解決方法:
由於是對39GB大表進行alter操作,猜想一定會耗用不用臨時表,於是檢查從庫的臨時空間為/tmp,僅為總內存的一半,16GB,所以導致了臨時表空間不夠用,再alter過程中失敗了,所以導致修改表結構失敗,最終導致主從復制失敗。
此次的解決方法:
(1) 增加/tmp目錄空間;
(2) 修改mysql數據庫的tmp目錄,把tmp對應的目錄遷移到空間更大的地方,然后重啟動數據庫。
| innodb_tmpdir | /data/mysql/mysql3306/data/inno_tmp_dir | <- 該參數指定alter行為的tmp目錄。
| tmpdir | /data/mysql/mysql3306/tmp