mysqlコンテナのバックアップ&リストア

今日はこのブログサイトのmysqlコンテナのバックアップを取得したいと思います。

このブログは、AWS EC2上でdockerのwordpressコンテナとmysqlコンテナを使って動かしています。

EC2上のディレクトリ構成は以下の通り

/home/royozaki/roysblog/
                     ┝ docker-compose.yml
                     └ wordpress

そして、dockerコンテナとしては以下の2つ(roysblog_db_1, roysblog_wordpress_1)が動いています。

       Name                     Command               State          Ports       
 --------------------------------------------------------------------------------
 roysblog_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
 roysblog_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:80->80/tcp  

docker-compose.ymlの内容は以下

 version: '3.3'
 

 services:
    db:
      image: mysql:5.7
      volumes:
        - db_data:/var/lib/mysql
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: mysql rootユーザーのパスワードを入力
        MYSQL_DATABASE: wordpress
        MYSQL_USER: wordpress
        MYSQL_PASSWORD: wordpressユーザーのパスワードを入力
 

    wordpress:
      depends_on:
        - db
      image: wordpress:latest
      ports:
        - "80:80"
      restart: always
      volumes:
        - ./wordpress:/var/www/html
      environment:
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_USER: wordpress
        WORDPRESS_DB_PASSWORD: wordpressユーザーのパスワードを入力
        WORDPRESS_DB_NAME: wordpress
 volumes:
     db_data: {} 

それでは。本題のmysqlコンテナのバックアップです。
以下のコマンドで実施しています。

docker run --rm --volumes-from roysblog_db_1 -v $PWD:/backup busybox tar cvf /backup/backup.tar /var/lib/mysql

バックアップ取得用に一時的にbusyboxコンテナを使用しています。
そして、mysqlコンテナの/var/lib/mysqlのデータをtarで固めて、ホストのアプリケーションディレクトリ(roysblog)に保存されるようにしています。

以上です。こんなことがOfficalでもわかりやすく解説されているdockerってすごいですね。
http://docs.docker.jp/engine/userguide/dockervolumes.html

お疲れ様でした。今日も前のめりで働くぞ。

—2020/2/16追記—

肝心のリストアを書いていなかった。

docker run --rm --volumes-from リストア先コンテナ -v $PWD:/backup busybox tar xvf /backup/backup.tar

したら、コンテナrestartして完了、動作確認済(2020/2/16)

docker restart リストア先コンテナ
Please share this page:

コメントを残す