Amazon Aurora MySQLでERROR 1034が発生した場合の原因と対処

2021.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

皆さんAurora使ってますか?
今日は、Aurora MySQL使用中に発生した掲題のエラーについて解説します。

ERROR 1034概要

発生状況

Aurora MySQLで、テーブルを再編成するためにALTER TABLE文を実行した時などに、以下のエラーが発生することがあります。

ERROR 1034 (HY000): Incorrect key file for table '<テーブル名>'; try to repair it

原因と対処

これは、Auroraのローカルストレージ領域の枯渇が原因です。

Auroraの特徴的なアーキテクチャにストレージノードクラスタがありますが、それとは別の、Auroraクラスタ構築時に指定するインスタンスに直接接続されているストレージがローカルストレージです。下図の濃い青の部分に配置されるイメージになります。

ローカルストレージは、EC2インスタンスにおける、インスタンスストアをイメージすると良いでしょう。 この領域は、ログおよび一時処理の領域として使用されます。下ユーザーズガイドのFreeLocalStorageの項を参照ください。

その為、一時作業データが大量に発生するSQL文を発行すると、このローカルストレージの空き容量が不足し、エラーが発生します。

対処法として、ローカルストレージのサイズを大きくする発想が直ぐに思い浮かびますが、残念ながらローカルストレージのサイズはインスタンスクラス毎に決まっており、変更はできません。

そこで、より上位のインスタンスクラスに変更する事で対処する必要があります。

予防

ローカルストレージの容量が十分かどうかは、上記ユーザーズガイド記載のメトリクスのFreeLocalStorage(空きローカルストレージ)を確認します。

参考までに、db.r4.largeでAurora MySQLクラスタを構築し確認しました。

ご覧の通り、約30GB(30,000MB)程度の容量が確保されているようです。

まとめ

Aurora MySQLで発生し得るエラー、ERROR 1034についてその原因と対処法を解説しました。Auroraのローカルストレージという要素もぜひ押さえておいてください。それでは、また。