-
-
Notifications
You must be signed in to change notification settings - Fork 9
Docker 開発環境: MySQL 5.7 から 8.0 への移行手順
docker-compose.yml の更新 #2289 により、開発用データベースコンテナが MySQL 5.7 から 8.0 ベースのイメージに切り替わります。
既存の docker/db/mysql_data ディレクトリをそのままマウントすると MySQL 8.0 の起動時に失敗し、環境全体が立ち上がらなくなるため、事前にデータのバックアップとディレクトリの移行作業が必要です。
- Connect-CMS 開発用 Docker Compose スタック(従来の
app/db/mailhog構成) -
docker/db/mysql_dataに MySQL 5.7 の永続化データが残っている場合
- MySQL 5.7 コンテナを起動したまま、必要なデータをダンプする
- コンテナを停止し、旧データディレクトリを退避または削除する
- 新しい
docker-compose.ymlを適用して MySQL 8.0 を初期化する - 必要に応じてバックアップをリストアする
以下では docker compose を利用した例を記載しています。古いバージョンの Docker Compose をお使いの場合は docker-compose に読み替えてください。
# 任意のバックアップ保存先を作成
mkdir -p backup/mysql
# connect スキーマのみバックアップする例
docker compose exec db \
mysqldump --single-transaction --routines --events \
-u"${DB_USERNAME:-JohnDoe}" -p"${DB_PASSWORD:-foobar}" \
"${DB_DATABASE:-connect}" > backup/mysql/connect.sql
# すべてのスキーマをバックアップしたい場合
docker compose exec db \
mysqldump --single-transaction --routines --events --all-databases \
-uroot -p"${MYSQL_ROOT_PASSWORD:-hogehoge}" > backup/mysql/all.sql
注意: ここで使用している環境変数は既存の MySQL 5.7 コンテナのデフォルト値です。値を変更している場合は適宜読み替えてください。
docker compose down
# 旧データを残しておきたい場合は退避
mv docker/db/mysql_data docker/db/mysql_data_57_backup
# データが不要であれば削除しても構いません
# rm -rf docker/db/mysql_data
# リポジトリを最新化(例)
git pull origin master
# 新しいイメージをビルド
docker compose build webapp
# DB コンテナのみ先に起動して初期化を完了させる
docker compose up -d db
# ログを確認し、"ready for connections" が出力されていれば初期化完了
docker compose logs -f db
データディレクトリが空の場合、新しいコンテナは docker/db/initdb.d 配下のスクリプトを利用して connect, connect_testing, connect_dusk の 3 つのデータベースを自動生成します。
# 例: connect スキーマのバックアップをリストア
docker compose exec -T db \
mysql -u"${DB_USERNAME:-app}" -p"${DB_PASSWORD:-secret}" \
"${DB_DATABASE:-connect}" < backup/mysql/connect.sql
# 旧来の root パスワードを利用する場合
docker compose exec -T db \
mysql -uroot -p"${MYSQL_ROOT_PASSWORD:-root-secret}" < backup/mysql/all.sql
リストア後は、必要に応じて docker compose up -d で webapp や mailhog を起動します。
-
MySQL 8.0 が
Upgrade requiredエラーで停止する
→ 旧ディレクトリdocker/db/mysql_dataが残っている可能性があります。手順 2 に従って退避・削除してください。 -
Access deniedでバックアップが実行できない
→DB_USERNAMEやMYSQL_ROOT_PASSWORDを.envで変更している場合があります。docker compose exec db envで現在の値を確認してコマンドを書き換えてください。 -
バックアップが巨大でコマンドラインから実行できない
→mysql/mysqldumpコマンドに--max-allowed-packetを付与する、あるいは gzip で圧縮するなど調整してください。
- home
- Overview
- Install
- Install (インストール)(Linux等へのインストール:root権限ある場合)
-
Install-sakura(さくらのレンタルサーバ)
- Install-sakura-root(ドキュメントルート版)
- Install-Xserver(XServer)
- Install-lolipop(ロリポップ-ハイスピードプラン)
- Install-ColorfulBox(カラフルボックス)
- install-CentOS7+PHP7
- Install-XAMPP(Windows+XAMPP)
- install-Docker
- Install‐WSL
- Update
- Plans
- Data
- File Upload
- Design
- Theme(テーマ)
- Font-Icon(アイコン)
- Button(ボタン)
- Display of input error(入力エラーの表示)
- Multi Language
- Policies
- Plugin
- Basic function(基本の関数)
- Opac(蔵書管理)
- OpeningCalendar(開館カレンダー)
- Template(テンプレート)
- Cabinet(キャビネット)
- Whatsnew(新着)
- Search(サイト内検索)
- Approval(承認機能)
- Holidays(祝日管理)
- Menu(メニュー)
-
OriginalPlugin(オリジナル・プラグイン開発)
- OriginalPluginFiles(ファイル一覧)
- Sample.php
- SamplePost.php
- plugin.ini
- SamplesPlugin.php
- create_samples_table.php
- create_sample_posts_table.php
- samples_frame_edit_tab.blade.php
- card/index.blade.php
- card/template.ini
- default/bucket.blade.php
- default/edit.blade.php
- default/index.blade.php
- default/list_buckets.blade.php
- default/show.blade.php
- default/template.ini
- WYSIWYG
- Session
- Programing tips
- Rule(ルール)
- Laravel method tips
- Laravel reference pages
- PHP
- phpcs
- Datetimepicker(日付入力)
- Hook(処理のフック)
- SQL
- Pull-Request(Web画面上)
- Post
- Optimize
- Composer
- npm
- コントローラー側の$this--can()-の調査
- API (外部サービスAPI)
- Test Case(テストケース)
- memo(永原のメモ)
- TCPDF(実装サンプル)
- Phpunit(ユニットテスト)
-
Dusk(ブラウザテスト)
- Github-Actions-Dusk(Github Actionsでブラウザテスト)
- Docker で Laravel Dusk を利用する方法
- Dusk-Manual(マニュアル自動生成)
- Develop-Windows(Windows開発環境)
- users_columns(ユーザ任意項目)
- container-page-beta(コンテナ方式(ページ)対応(ベータ版))
- Migration
- Other
- Link
- MultiLanguage(多言語化の際の注意点)
- パフォーマンス