Dockerコンテナ内でMariaDBを安全にアップグレードする方法:公式イメージとinplaceアップグレードの比較
Dockerコンテナで稼働中のMariaDBをアップグレードする方法
このガイドでは、Dockerコンテナ内で実行されているMariaDBをアップグレードする方法を説明します。2つの主要な方法があります。
- 公式イメージを使用する: MariaDBは、最新バージョンのMariaDBを含む公式Dockerイメージを提供しています。この方法はシンプルで、データ損失のリスクが低くなります。
- inplaceアップグレード: この方法は、既存のコンテナイメージをアップグレードし、データディレクトリを保持します。ダウンタイムが短縮されますが、データ損失のリスクがわずかに高くなります。
公式イメージを使用する
- 新しいバージョンへの
mariadb
イメージのタグを指定して、新しいコンテナを起動します。
docker run -d --name some-mariadb -p 3306:3306 \
mariadb:10.6
- 既存のデータを使用したい場合は、
-v
フラグを使用してデータディレクトリをマウントします。
docker run -d --name some-mariadb -p 3306:3306 \
-v /path/to/data:/var/lib/mysql \
mariadb:10.6
- 既存のコンテナを停止し、新しいコンテナを削除します。
docker stop some-mariadb-old
docker rm some-mariadb-old
inplaceアップグレード
- 既存のコンテナに接続します。
docker exec -it some-mariadb mysql
- MariaDBを停止します。
STOP SLAVE;
SET GLOBAL innodb_fast_shutdown = 0;
STOP;
- データディレクトリのバックアップを取ります。
docker cp some-mariadb:/var/lib/mysql ./backup
- イメージを新しいバージョンにアップグレードします。
docker-compose up -d
- コンテナ内に再度接続し、MariaDBをアップグレードします。
docker exec -it some-mariadb mysql
mysql_upgrade
START;
注意事項
- アップグレード前に必ずMariaDBのバックアップを取ってください。
- inplaceアップグレードを使用する場合は、
innodb_fast_shutdown
変数を設定する必要があります。 - アップグレード後、MariaDBの互換性に関する問題が発生する可能性があることに注意してください。
# 古いコンテナを停止
docker stop some-mariadb-old
# 古いコンテナを削除
docker rm some-mariadb-old
# 新しいバージョンへの `mariadb` イメージのタグを指定して、新しいコンテナを起動
docker run -d --name some-mariadb -p 3306:3306 \
mariadb:10.6
# 既存のコンテナに接続
docker exec -it some-mariadb mysql
# MariaDBを停止
STOP SLAVE;
SET GLOBAL innodb_fast_shutdown = 0;
STOP;
# データディレクトリのバックアップ
docker cp some-mariadb:/var/lib/mysql ./backup
# イメージを新しいバージョンにアップグレード
docker-compose up -d
# コンテナ内に再度接続
docker exec -it some-mariadb mysql
# MariaDBをアップグレード
mysql_upgrade
# MariaDBを起動
START;
- 上記のコードはあくまで例であり、環境に合わせて変更する必要があります。
Dockerコンテナ内のMariaDBをアップグレードするその他の方法
mysqldumpとmysqlimportを使用する
- 既存のデータベースをダンプします。
docker exec some-mariadb mysqldump --all-databases > backup.sql
docker run -d --name some-mariadb -p 3306:3306 \
mariadb:10.6
- 新しいコンテナに接続し、データベースをインポートします。
docker exec -it some-mariadb mysql
mysqlimport -u root -p backup.sql
Docker Composeを使用している場合は、docker-compose up -d
コマンドを使用してコンテナをアップグレードできます。Composeファイルで、新しいMariaDBイメージのバージョンを指定する必要があります。
- 上記の方法は、公式イメージを使用する方法よりも複雑な場合があります。
- データ損失のリスクを軽減するために、アップグレードプロセス中に新しいコンテナでテストすることをお勧めします。
docker mariadb