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?

More than 1 year has passed since last update.

Docker Compose の MySQL バックアップ・リストアを行う方法

Last updated at Posted at 2023-01-25

Docker Compose で MySQL のデータ移行をしようと思ったのですが、chownエラーで悩まされたため、ちゃんとした移行方法を残すことにしました。

cp コマンドでマウントしてるディレクトリごとコピーはダメだね... (それはそう)

今回用いる構成

docker-compose.yml
version: '3.2'

services:
  db:
    container_name: 'db-container'
    build: ./docker/db
    tty: true
    ports:
      - '3306:3306'
    environment:
      TZ: 'Asia/Tokyo'
    env_file:
      - .env
    volumes:
      - ./docker/db/data:/var/lib/mysql
      - ./docker/db/conf.d:/etc/mysql/conf.d

フォルダ階層

.
└── docker
    └── db
        ├── conf.d
        └── data // ここにvolumesがマウントされています。

MySQLにログインし、バックアップを行う

$ docker compose exec db /bin/bash
# ここからコンテナ内のシェル
$ mysqldump --no-tablespaces -u <ユーザー名> -p -D <データベース名> > ./dump.sql
# パスワードを求められるので、打ちましょう

上記のコマンドを利用することで、dump.sqlが作成されました。

.
└── docker
    └── db
        └── data // このフォルダ内に dump.sql が存在しているはずです。

リストアを行う

リストア先は、先ほどと同じ構成のDockerコンテナとします。

$ docker compose exec db /bin/bash
# ここからコンテナ内のシェル
$ mysql -u <ユーザー名> -p -D <データベース名> < dump.sql

# dump.sqlが必要ない場合は削除しても大丈夫です。
# ここからコンテナ内シェル
$ rm dump.sql
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?