myisamchkを実行したときに
myisamchk: error: myisam_sort_buffer_size is too small
Try fixing it by using the –safe-recover (-o), the –force (-f) option or by not using the –quick (-q) flag
というエラーが発生してテーブルの修復が完了することができなかった。サイズが小さすぎる、デフォルトではたしか64M程度ということなので、それでは大きめにメモリサイズを指定して実行してみたところ、
cdn-project:/usr/local/mysql# ./bin/myisamchk -r –myisam_sort_buffer_size=2024M ./data/auc/aucTable.MYI
./bin/myisamchk: unknown variable ‘myisam_sort_buffer_size=2024M’
そんな変数は知らないということらしい。それはないだろう・・・。myisam_sort_buffer_sizeの変わりにsort_buffer_sizeを指定することにした。
cdn-project:/usr/local/mysql# ./bin/myisamchk -r –sort_buffer_size=2024M ./data/auc/aucTable.MYI
– recovering (with sort) MyISAM-table ‘./data/auc/aucTable.MYI’
Data records: 0
– Fixing index 1
Wrong bytesec: 169-186-231 at 3476352160; Skipped
Wrong bytesec: 169-186-231 at 3476352160; Skipped
– Fixing index 2
Data records: 49302846
sort_buffer_sizeを2GB指定して修復を実行したらとりあえずは完了した。mysqlのデーモンを起動したら問題なく動作するようになった。起動後に一応テーブルのチェックをしてみる。
mysql> check table aucTable;
+————–+——-+———-+———-+
| Table | Op | Msg_type | Msg_text |
+————–+——-+———-+———-+
| auc.aucTable | check | status | OK |
+————–+——-+———-+———-+
1 row in set (8 min 36.97 sec)
問題なし。テーブルの最適化ということができるらしいので気休めにやっておく。
mysql> optimize table aucTable;
+————–+———-+———-+———-+
| Table | Op | Msg_type | Msg_text |
+————–+———-+———-+———-+
| auc.aucTable | optimize | status | OK |
+————–+———-+———-+———-+
1 row in set (19 min 21.08 sec)
最適かされたのかされていないのか不明。