0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MYSQLテーブル破損_今後の対策

Posted at

承知しました。今日やった MySQL 復旧手順 を ESA(エンジニア向けナレッジ共有記事)風にまとめました。
社内共有できるように「背景 → 調査 → 対応 → 学び」で整理しています。


MySQL が「mysql.db テーブル破損」で起動しない問題の復旧手順

背景

  • XAMPP (MariaDB 10.4.10) 環境で MySQL が突然停止し、起動しなくなった。

  • XAMPP Control Panel のログには以下が出力された:

    Error: MySQL shutdown unexpectedly.
    Can't open and lock privilege tables: Table '.\mysql\db' is marked as crashed
    
  • mysql.db はシステムデータベース(権限管理用テーブル)のため、起動不能に直結。


調査

  1. ポート競合 / サービス競合 を確認 → 問題なし。

  2. 強制リカバリ起動

    mysqld.exe --defaults-file="...\my.ini" --console --innodb-force-recovery=1
    

    → 依然として mysql.db が crashed と出力され、起動不可。

  3. C:\xampp7312\mysql\data\mysql を調査したところ、db.frm, db.MAD, db.MAI が存在。
    → MyISAM ではなく Aria ストレージエンジン のテーブルであることが判明。


対応

1. バックアップ

copy db.frm db.frm.bak
copy db.MAI db.MAI.bak
copy db.MAD db.MAD.bak

2. aria_chk による修復

cd /d C:\xampp7312\mysql\data\mysql
"C:\xampp7312\mysql\bin\aria_chk.exe" --recover --quick db
  • 出力例:

    info     : Wrong CRC on datapage at ...
    warning  : Number of rows changed from 0 to 2
    status   : OK
    
  • → CRC エラーを修復し、テーブルが復旧。

3. 通常起動

  • innodb_force_recovery 設定を削除。
  • XAMPP から MySQL 起動 → 成功。

4. ダンプ取得

mysqldump.exe -u root --all-databases --routines --events > C:\temp\all.sql
  • これで全データをバックアップ。

学び / 注意点

  • mysql.dbAria テーブル。破損時は aria_chk を利用する。
  • innodb_force_recovery は InnoDB テーブル復旧には有効だが、システムテーブルが Aria の場合は効果が薄い。
  • 今回の復旧後、mysql.db の行数が減少(= 権限情報の一部消失)していた。必要に応じて GRANT コマンドで再設定が必要。
  • 復旧直後に 必ず全DBを mysqldump で退避すること。

今後の対策

  • 定期的に mysqldump --all-databases を自動化してバックアップを確保する。
  • サーバー強制終了や電源断を避ける(Aria/ MyISAM はクラッシュに弱い)。
  • システムDBが壊れた場合は 同バージョンのクリーンな mysql フォルダと置換 するのも最終手段。

👉 これで「今日の復旧の流れ」を ESA 用にまとめてみました。
必要なら Markdown のまま esa.io に貼り付けられます。

ご希望あれば コードブロック部分をシェルスクリプト化したり、チェックリスト形式に直すこともできますが、その方がいいですか?

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?