MySQL のテーブルを修復

August 25, 2010
mysql_main.gif

先日、サーバー障害により、このブログ(KYS-LAB)含め各種の CMS のデータベース(MySQL)が、破損。複数のデータベースを管理していたサーバーだけに、泣きそうになりました。

定期的にバックアップを取っていれば何も問題はないのですが、中には最近取ってないモノもあったりで、やはり自動化させないと (お客さんのはきちんと取ってますよ、念のため)。

一部のデータは、データが消去されていたり、破損がひどく修復できませんでしたが、大半はMySQL のテーブルを修復すると回復したので、以下その手順。

phpMyAdmin でバックアップ

  • phpMyAdmin(ver.2.10.1)
  • MySQL(5.1.22-rc)
  • Movable Type 4 のデータベース

まずは、バックアップを取りましょう。鉄則です。

【1. phpMyAdmin にログイン】

phpMyAdminにログイン

使用言語を間違えないように。

【2. データベースを選択】

データベース選択

【3. エクスポートで、バックアップ】

エクスポートでバックアップ

「DROP TABLE / DROP VIEW を追加」のチェックを忘れずに(インポートするときに、以前のテーブルとの重複を制御するため)。

エクスポートした MySQL データをローカル上に大切に保存しておきましょう。

phpMyAdmin で MySQL の修復

【1. オーバーヘッドのテーブルを最適化】

オーバーヘッドのあるテーブルを確認してください

「オーバーヘッドのあるテーブルを確認してください」をクリック

オーバーヘッドしているテーブルにチェックがつく

オーバーヘッドのあるテーブルが選択される

「構造」タブを選択し、画面下の「オーバーヘッドのあるテーブルを確認してください」をクリック。自動で、オーバーヘッドしているテーブルにチェックがつく。

テーブルを最適化する

「チェックしたものを:」のリストから、「テーブルを最適化する」を選択して実行 【 OPTIMIZE TABLE コマンド】。

参考:MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.2.5 OPTIMIZE TABLE 構文

データレコードを削除したり再編成したりするとゴミ(未使用領域)がたまるので、それを最適化するコマンドです。ハードディスクの最適化と一緒ですね。

【2. 破損したテーブルを修復】

破損された可能性があるテーブルを選択。

今回の場合、なぜか「使用中」という表示が消えないテーブル発見。

使用中という表示のテーブルが。。。

怪しそうなテーブル発見。コイツか!

構造をみてみるとエラーが出ていた。

エラー

エラーの表示画面

テーブルを修復する

問題のテーブルを選択したまま、「チェックしたものを:」のリストから、「テーブルを修復する」を選択して実行【 REPAIR TABLE コマンド】。

参考: MySQL :: MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 8.5.2.6 REPAIR TABLE 構文

以上の作業で、無事データベースを修復できました。

あくまで、私の場合ですので、環境やデータベースによって異なると思います。くれぐれも事前のバックアップと、作業は自己責任でお願いいたします。

いずれにせよ、日頃の定期的なバックアップが一番大切ですな。

STAFF_01 [KYS-LAB]: ページが見つかりません。