MySQL管理によく使うコマンド類(プロセス一覧,プロセスの停止,テーブル修復,INNODB空き容量確認)

MySQL管理によく使うコマンド類(プロセス一覧,プロセスの停止,テーブル修復,INNODB空き容量確認)Web開発者の備忘録最近DBパンクとかDB重い!という事で呼び出されることがありまして。
ちゃんと管理(空き容量の監視とかエクステントの設計管理など)していればそもそもそんなヘルプに呼び出される必要もないのですが、人様の管理するシステムだから口出しもあまりできない。

ということでその場しのぎの対応することがままあり、そこでよく使うコマンドをよく忘れるのでメモっておきたいと思います。

1.実行中のプロセス一覧表示

 mysql> SHOW PROCESSLIST;
mysql> SHOW FULL PROCESSLIST;

どちらも今実行しているクエリーの一覧を出します。後者はクエリーが全部表示されますが、前者は途中で切れて表示されます。

2.実行中のプロセスを停止させる

 mysql> KILL プロセス番号;

上の「SHOW PROCESSLIST」で表示されるプロセス番号を指定して、そのクエリーを止める事が出来ます。

3.テーブルの修復

 mysql> CHECK TABLE テーブル名;
mysql> REPAIR TABLE テーブル名;

指定したテーブルが壊れていないか、壊れていた場合に修復するものです。

DBサーバプロセスを何らかの理由で強制終了したり、ディスクパンクで書きこみ途中でおかしくなった場合など、要は書き込み途中で整合性が取れなくなった場合に行います。

Table XXXX is marked as crashed and should be repaired.
こんなメッセージが出た場合に行います。なお、こうなると、読み書きどちらも出来なくなるので、すぐ気づくと思います。
なお、REPAIRすると、直前の整合性が取れた状態にまで戻されるので、更新途中だったものは反映されていない可能性があります。ご注意・・というか頑張ってデータ復旧させるか諦めるかしてください。

4.INNODBの空き容量チェック

INNODBは、通常1~2個の物理ファイルで構成されています。DBを追加してもテーブルを追加しても、MyISAMと異なりファイルの数が増える事はありません。その代り、この物理ファイルのファイルサイズが大きくなります(エクステント指定していた場合)。
逆に、DBを削除してもテーブルを削除、レコードを削除しても、この物理ファイルの大きさが小さくなることはありません。つまり、一度肥大化したらもう後戻りは出来ない(ディスク食いっぱなし)というものなのです。
※標準インストールした場合、大抵は /var/lib/mysql にDBファイルが作られているはずです。

それはさておき、では今確保されている物理ファイルのうち、実際にデータがどれだけ使われているか、というのを調べる方法が以下のものです。

mysql> SHOW TABLE STATUS;

Data_free,又はComment(古いバージョン)フィールドに空き領域がバイトで示されております。

とまあ、こんな感じです。