MySQLのイメージを5.7
と8.0
に切り替えた所、MySQLのコンテナが起動できないエラーが発生しましたので、その時の対処方法を記載します。
おそらく、稼働中にMySQLのバージョンを5系からアップグレードしたい場合でも発生する可能性があります。
目次
状況
下記の様な構成にしていました。
. ├── docker │ └── db | └── Dockerfile └── docker-compose.yml
docker-compose.yml
version: "3.7" services: db: build: docker/db ports: - 3306:3306 environment: MYSQL_DATABASE: db MYSQL_ROOT_PASSWORD: pass
Dockerfile
FROM mysql:5.7
再現手順
ます、MySQLの5.7
のイメージを使用してコンテナをビルドします。
その後、Dockerfile
を次の様に、8
系の安定版に変えてビルドします。
FROM mysql:8.0.16
この状態でdocker-compose up
します。
エラー内容
MySQLのDockerイメージを、dbというコンテナで起動しているのですが、次の様にエラーが出力されてコンテナが止まって(閉じて)しまいます。
$ docker-compose # 省略 db_1 | 2019-05-31T03:35:06.188985Z 1 [ERROR] [MY-012526] [InnoDB] Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.26. Please follow the instructions at htt p://dev.mysql.com/doc/refman/8.0/en/upgrading.html db_1 | 2019-05-31T03:35:06.189016Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error. db_1 | 2019-05-31T03:35:06.690818Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine. db_1 | 2019-05-31T03:35:06.691041Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. db_1 | 2019-05-31T03:35:06.691184Z 0 [ERROR] [MY-010119] [Server] Aborting db_1 | 2019-05-31T03:35:06.696164Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.16) MySQL Community Server - GPL.
原因
公式のページで原因を確認できるページが見つからないため憶測です。
ご了承下さい。
MySQLのメジャーアップデートで、システムの構成が変わったのかもしれません。
新しいバージョンを正常に上書きできなかったようです。
Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.26. Please follow the instructions at.
http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
参考ページ
公式解説ページではありませんが、同じ様なエラーが起こっている人はいる様です。
過去バージョンを削除してから、新しいバージョンを導入する事で解決できるとの事なので、バージョン間の問題の様です。
対応方法
作ったコンテナを削除してから、再度ビルドしたところ解決しました。
docker-compose build --no-cache
でキャッシュを使わない状態でビルドしても解決しませんでしたので、削除するのが良いのかもしれません。
$ docker ps -a # コンテナIDを確認 CONTAINER ID 57f700157a84 $ docker rm 57f700157a84