XAMPPでMySQLがStart→Stopになる時の原因と対処方法

2022-01-05

wikiの導入テストや諸々の開発環境を簡単に構築したいので、普段はWindwos10にXAMPPをインストールして使っています。

トラブルは急に起こるもの

先日、いつものようにXAMPPを起動し、Apache→MySQLを起動しようとstartを押すと何かエラーが…。

 [mysql] Error: MySQL shutdown unexpectedly.
 [mysql] This may be due to a blocked port, missing dependencies,
 [mysql] improper privileges, a crash, or a shutdown by another method.
 [mysql] Press the Logs button to view error logs and check
 [mysql] the Windows Event Viewer for more clues
 [mysql] If you need more help, copy and post this
 [mysql] entire log window on the forums

困ったことになりました。

念のためlogを確認

コンソールからmysql_error.logを確認します。

 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
 [Note] InnoDB: Uses event mutexes
 [Note] InnoDB: Compressed tables use zlib 1.2.11
 [Note] InnoDB: Number of pools: 1
 [Note] InnoDB: Using SSE2 crc32 instructions
 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M
 [Note] InnoDB: Completed initialization of buffer pool
 [Note] InnoDB: 128 out of 128 rollback segments are active.
 [Note] InnoDB: Creating shared tablespace for temporary tables
 [Note] InnoDB: Setting file 'C:\xampp\mysql\data\ibtmp1' size to 12 MB. Physically writing the file full; Please wait …
 [Note] InnoDB: File 'C:\xampp\mysql\data\ibtmp1' size is now 12 MB.
 [Note] InnoDB: Waiting for purge to start
 [Note] InnoDB: 10.4.22 started; log sequence number 300342; transaction id 170
 [Note] InnoDB: Loading buffer pool(s) from C:\xampp\mysql\data\ib_buffer_pool
 [Note] Plugin 'FEEDBACK' is disabled.
 [Note] Server socket created on IP: '::'.

log上はエラー無し、本格的に困ったことになりました。

困った時はGoogle検索

何かヒントは無いかと調べてみたところ、以下のサイトを見つけました。

いずれにしても、XAMPPの終了時に適切な終了をさせない場合に起こる事が多いようです。

https://sakuragraphica.jp/pc_app/software/post-631/

…ものすごく心当たりがあります。

おそらく原因はMySQLをstopする前にXAMPPのコンソールを終了することを繰り返していた事で、何かの拍子に壊れたようです。

書かれている対処方法を試す

  • netstatでポート競合の確認 → ポート競合無し
  • 他に起動しているMySQL → 無し
  • 一時ファイルの削除 → 起動しない!
  • PC再起動 → 起動しない!!
  • 管理者モードで実行 → 起動しない!!!

結局、XAMPPの再インストールで動くようになりました…。

テスト環境がメインだったので重要なデータベースが無かったのが幸いです。

バックアップは基本ですよね

改めてバックアップの大切さを実感したので、MySQLのバックアップとリストアの手順をまとめました。

参考サイト:MySQLのバックアップツールの比較

とは言えXAMPPだとmysqldumpか、フォルダごとコピーのどちらかになると思います。個人的にはmysqldumpがリストア環境が変わっても対応できるので、融通が利きやすくて良いと思っています。

参考サイト:mysqldumpの使い方まとめ

自動起動・定時シャットダウンでの運用

別のファイルサーバー機ではXAMPPを自動起動・定時シャットダウンでwikiを運用しているため、慌ててシャットダウン前にMySQLをstopするようにしました。

難しいことは何もしていなく、定時シャットダウンのバッチファイルに停止コマンドを追加しただけです。今後は、バックアップも定時シャットダウンに組み込んで安心運用をできるようにしたいと思います。

追記:自動シャットダウン時にバックアップを追加しました。