mysqlデータ容量オーバー

ちょっと前に、mysqlのテーブルを別のサーバーに移行しようとして、テーブル容量オーバーでエラーになったのでその対処についての覚書。
時間がたってるのでうる覚え。そのときに書いときゃよかった。。。

まずエラーは下記のような感じ。

Error: 1114 SQLSTATE: HY000 (ER_RECORD_FILE_FULL)
Message: table '%s' はいっぱいです。

innodb_data_file_pathに記載されているファイル名がmysqlのデータの実体なので、それを確認すると容量いっぱいになってそこで止まっている模様。
autoextendが効いていない。もしくはファイルシステムの限界に来ているようだ。
だが、df -Tで調べるとファイルシステムのタイプはext3で最大ファイルシステムサイズは約8TB、最大ファイルサイズは約2TBなのでファイルサイズとしては問題ない。

データの移行はmysqlのvar以下をコピーして行ったので後は設定ファイルが違うのだろうということで比較すると、mysqlの設定ファイル(my.cnf)が微妙に違う。
ということでmy.cnfを編集することに。
innodb_data_file_pathの出力するファイルを分割しても変わらず。

そこでしかたなく、mysqlコンパイルからやり直し。var以下のコピーではなくて元の環境のデータをdumpして対応する。
すると何の問題もなくすんなり移行完了。
autoextendもうまく動いているようで自動的に容量が増えていっている。

結局、var以下の移行時に何らかの問題があったようだが現状はわかっていない。

参考にしたサイト:
http://dev.mysql.com/doc/refman/4.1/ja/innodb-start.html
http://dev.mysql.com/doc/refman/4.1/ja/adding-and-removing.html