コマンドラインからのsql復元(リストア)方法
cdコマンドでバックアップファイルが保存されている場所に移動して

docker exec -i コンテナ名 mysql -uデータベースユーザー名 -データベースパスワード データベース名 < バックアップファイル.sql

で可能。

詳しい方法を書いていく。

コンテナ名確認方法

docker psでNAMES欄を確認する。

% docker ps 
CONTAINER ID   IMAGE                   COMMAND                  CREATED             STATUS                       PORTS                                      NAMES
dd67e96ed4fd   phpmyadmin/phpmyadmin   "/docker-entrypoint.…"   About an hour ago   Up About an hour             0.0.0.0:8081->80/tcp                       crm-phpmyadmin-1
dbe421d05ae7   nginx:latest            "/docker-entrypoint.…"   About an hour ago   Up About an hour             0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   crm-web-1
fa1c22287cf9   crm_private-app         "docker-php-entrypoi…"   About an hour ago   Up About an hour             9000/tcp                                   crm-app-1
b9070cf5df2f   crm_private-db          "/entrypoint.sh mysq…"   About an hour ago   Up About an hour (healthy)   3306/tcp, 33060-33061/tcp                  **crm-db-1**

この例は、crm-db-1っぽいね。

厳密にいうとdocker-compose.ymlに

db:
    build: ./infra/mysql
    volumes:
      - db-store:/var/lib/mysql

って書いてたから「db」が名前に含まれると判断できた。

あくまで自分の環境の例なので、勘で選んでくれていいと思う。

データベース情報確認方法

mysqlのDockerfileで指定している情報か、phpMyAdminにログインするときに叩いている情報に当たる。

自分の環境だと

infra/mysql/Dockerfile

FROM mysql/mysql-server:8.0

ENV MYSQL_DATABASE=laravel_local \
    MYSQL_USER=yaju \
    MYSQL_PASSWORD=ikisugi \
    MYSQL_ROOT_PASSWORD=ikisugi \
    TZ=Asia/Tokyo

COPY ./my.cnf /etc/my.cnf
RUN chmod 644 /etc/my.cnf

データベース名:laravel_local

データベースユーザー名:yaju

データベースパスワード:ikisugi

ってことになる。

ユーザー名とパスワードに関してだが、環境変数を使っている場合などは.envの内容を書くにする必要があるのかも。

phpMyAdminからデータベース名を確認するにはサイドバーを確認する。

なんかテーブルがいっぱい入ってるやつが本物のデータベース。

いざ復元

リストア作業に入る。

冒頭で述べたよういcdコマンドでバックアップがあるディレクトリまで移動する。

docker exec -i コンテナ名 mysql -uデータベースユーザー名 -データベースパスワード データベース名 < バックアップファイル.sql

というルールに基づくと、今回の例では下記のようなコマンドになる。

docker exec -i crm-db-1 mysql -uyaju -psikisugi laravel_local < 実際のバックアップファイル名.sql

サイズによっては時間かかるけどこれで復元できる。

15万レコードぐらいのデータを復元したときで、1、2分だった記憶がある。

無制限に質問可能なプログラミングスクール!

万が一転職できない場合は、転職保障全額返金できるコースもあり!!

無制限のメンター質問対応

 

DMMウェブキャンプでプログラミングを学習しませんか?

独学より成長スピードをブーストさせましょう!

 

まずは無料相談から!

おすすめの記事