Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

環境構築

開発環境と本番サーバーのDBの同期について

2017/11/10

仕事で本番サーバーにあるDBのデータをローカルの開発環境で利用する機会がありました。

Laravelで開発する上でもシーダーでデータを入れるよりも、サーバーに同様のデータがあれば当然それを利用したほうがいいでしょう。

今回はDBのデータをダンプしたり、それをリストアするやり方についてエントリーします。

 

目的

本番サーバーにあるDBをローカルの開発環境で同じように利用する。

 

手順

【 1 】データベースをダンプする
【 2 】ダンプしたファイルをダウンロード
【 3 】ダウンロードしたダンプファイルをリストア

 

【 1 】データベースをダンプする

sshで本番サーバーに接続します。

sshクライアントソフトは" Poderosa(ポデローサ) "を利用します。

Poderosa

サーバーに接続できたら"mysqldump"コマンドを実行します。

mysqldump -h {ホスト名} -u {ユーザー名} -p {データベース名} > {ダンプファイル名}.sql
【解説】
ホスト名はさくらサーバーの場合"mysql***.db.sakura.ne.jp"になります。
WEBサーバーとDBサーバーが同じ場合は"localhost"になります。
オプションの"-h"はホスト名を指定しないといけないのでIPアドレスを指定しても上手くいきません。
ユーザー名とこのコマンドのあとに入力するパスワードはMySQL用のユーザーとパスワードです。
sshで接続するアカウントとパスワードではありません。
ダンプファイル名はなんでもOKです。

上記のコマンドでデータベース丸ごとのダンプファイルがカレントディレクトリにできます。

テーブルごとにダンプデータをとる場合は

mysqldump -h {ホスト名} -u {ユーザー名} -p -t {データベース名} {テーブル名} > {ダンプファイル名}.sql

となります。

 

【 2 】ダンプしたファイルをダウンロード

次にカレントディレクトリに出来たダンプファイルをローカルにダウンロードするのですが、これはscpコマンドを使います。

poderosaではscpを手軽るにできる仕組みが用意されているのでそれを利用します。

まずはツールバーにあるSCPというアイコンをクリックします。

【 補足説明 】
ダンプしたファイルをダウンロードしたら削除します。

rm { ファイル名 }

 

【 3 】ダウンロードしたダンプファイルをリストア

poderosaのscpでダウンロードしたダンプファイルをリストアします。

XAMPPについているPhpMyAdminでリストアしてもいいのですが、容量制限がかかっているのでコマンドプロンプトでリストアします。

コマンドプロンプトを起動して以下のコマンドを実行します。

※ダンプファイル名が "testdump.sql" の場合でCドライブ直下に保存した場合です。

mysql -u {ユーザー名} -p {データベース名} < C:\testdump.sql
【 解説 】
データベースは事前に作成しておきます。
Laravelの場合はartisanコマンドでサーバー上にあるマイグレーションファイルをローカルでマイグレートするだけでDBの構造は複製できます。
ユーザー名とデータベース名はローカル用のものです。ご注意を。
ダンプの場合は ">" でしたがリストアの場合は "<" になります。
上記のコマンドを実行するときのカレントディレクトリはどこでもOKです。
【 注意 】
XAMPPを入れただけではコマンドプロンプトでmysqlコマンドは使えません。
事前に環境変数の「Path」にmysqlの実行ファイルのパスを登録しておく必要があります。
1)コントロールパネル -> すべてのコントロールパネルの項目 -> システム -> システムの詳細設定 -> 詳細設定 -> 環境変数
2)「ユーザー環境変数」の「PATH」を選択して「編集」をクリック
3)「C:\xampp\mysql\bin;」を末尾に追加

上記のコマンドを実行後、パスワードを入れたらリストア完了です。

以上です。

 

-環境構築