【MySQL】テーブル破損対応(mysqlcheck コマンド)
問題
MySQLが強制終了されてから様子がおかしいです。
どうやって状況の確認、修正の対応などするとよいでしょうか。
答え
MyISAMテーブルの場合は、mysqlcheck コマンドが使える。
mysqlcheck コマンドは、テーブルのチェック、分析、最適化、修復ができる。
MySQLサーバ稼働中でも実行できる。
テーブルのエラーのチェック
チェックは、cオプションで。
特定のテーブルのみ
$ mysqlcheck -c データベース名 テーブル名 -u root -p Enter password: データベース名.テーブル名 OK
特定のデータベースのみ
$ mysqlcheck -c データベース名 -u root -p Enter password: データベース名.テーブル名1 OK データベース名.テーブル名2 OK データベース名.テーブル名3 OK
データベース全体
$ mysqlcheck -c --all-databases -u root -p Enter password: データベース名1.テーブル名1 OK データベース名1.テーブル名2 OK データベース名1.テーブル名3 OK データベース名2.テーブル名1 OK データベース名2.テーブル名2 OK データベース名2.テーブル名3 OK
破損していなければOK、破損していると「Table ‘テーブル名’ is marked as crashed and should be repaired」のようなメッセージが表示される。
テーブルの分析
分析(Analyze)は、aオプションで。
$ mysqlcheck -a データベース名 テーブル名 -u root -p Enter password: データベース名.テーブル名 OK
テーブルの最適化
最適化(Optimize)は、oオプションで。
$ mysqlcheck -o データベース名 テーブル名 -u root -p Enter password: データベース名.テーブル名 status : OK
テーブルの修復
修復(Repair)は、rオプションで。
$ mysqlcheck -r データベース名 テーブル名 -u root -p
$ mysqlcheck -r データベース名 -u root -p
$ mysqlcheck -r --all-databases -u root -p
チェックとともにエラーがあれば自動修復
エラーがあれば自動修復するオプションもある。
$ mysqlcheck --auto-repair -c -o testデータベース名 -u root -p
メモ
InnoDBにはrepairは使えない。
note : The storage engine for the table doesn't support repair
コメント