0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PC再起動後にDockerのMySQLテーブルデータが消えた問題

Last updated at Posted at 2024-12-06

はじめに

Dockerを使ったMySQLのローカル開発環境を構築中に、PC再起動後にMySQLのテーブルデータが消えてしまう問題が発生しました。同時に、データベースの復旧を試みた際にエラーが発生し、ダンプファイルの再インポートも失敗しました。本記事では、発生した事象、対応内容、考えられる原因をまとめます。


発生した事象

  1. PCを再起動してDocker Desktopを再起動

    • Dockerコンテナ(MySQL、アプリケーション、phpMyAdmin)は正常に起動。
    • しかし、MySQLデータベースに接続した際、テーブルデータが空になっていることを確認。
    • phpMyAdminでデータベースのテーブルを参照しようとすると、以下のエラーが発生:
      Tablespace is missing for table `hogehoge`.`hugahuga_table`.
      
  2. ダンプファイルの再インポートを試みた際のエラー

    • ダンプファイルのインポートを試みたところ、以下のエラーが発生しインポートできず:
      Tablespace '`hogehoge`.`hugahuga_table`' exists.
      
    • 既存のテーブルスペースが原因でインポートが拒否される状態。
  3. Docker Desktop上で停止→再起動の場合(問題解決後に実施)

    • Docker Desktop上でコンテナを停止してから再起動した場合は、データが正常に残存しており、問題は発生しなかった。

対応内容

  1. コンテナを削除して環境を再構築
    以下の手順でDocker環境をリセット。
    docker rm hogehoge_db
    docker system prune -a --volumes
    docker-compose build
    docker-compose up -d
    
  2. ダンプファイルを再インポート
    • 新たに構築した環境にダンプファイルをインポートし直し、動作確認を実施。
    • エラーは発生せず、正常に動作。

考えられる原因

  1. データ永続化の設定ミス

    • docker-compose.ymlでは以下の設定をしていた:
      volumes:
        - ./db:/var/lib/mysql
      
    • しかし、ホスト側のdbディレクトリにMySQLの必要なデータファイルが完全に保存されていない可能性。
  2. MySQLデータの破損

    • PCの強制終了や不適切なシャットダウンが原因で、MySQLのテーブルスペースが破損した可能性。

検討事項

  1. データ永続化の設定を見直す

    • データ永続化にホスト側ディレクトリ(./db)を使う場合、必要なファイルが正しく保存されているか確認。
    • Dockerボリュームを使用することで、ホスト側のファイルシステム依存を減らす選択肢も検討。
  2. MySQLのバックアップ体制を強化

    • 定期的にmysqldumpでデータベースのバックアップを取得する。
  3. PC再起動とコンテナ停止→起動の違いを検証

    • 再現テストを行い、どの条件でデータが失われるのかを特定。
  4. Docker Desktopのログ確認

    • 再起動時のエラーが記録されていないか、Docker Desktopのログを確認。

まとめ

今回の問題は、Dockerを利用する際のデータ永続化設定や再起動時の処理に起因する可能性があります。原因の特定には至っていませんが、再発防止のための設定見直しや検証を進める必要があります。


参考

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?