Appearance
データベース同期(本番→ローカル)
本番環境のデータベースをローカル環境に同期するスクリプトの手順です。安全な実行手順は DB同期の安全ガイド を参照してください。
設定
config/local.env.exampleをconfig/local.envにコピーします
bash
cp config/local.env.example config/local.envconfig/local.envを編集し、以下の情報を設定します
bash
# 本番環境のデータベース情報
PROD_DB_HOST=your_production_db_host # 例: mysql16.conoha.ne.jp (ConoHa WING)
PROD_DB_NAME=your_production_db_name
PROD_DB_USER=your_production_db_user
PROD_DB_PASS=your_production_db_pass
# ローカル環境のデータベース情報(Local by Flywheelのデフォルト)
LOCAL_DB_NAME=local
LOCAL_DB_USER=root
LOCAL_DB_PASS=root注意: config/local.env は .gitignore で除外されているため、リポジトリにコミットされません。
実行方法
⚠️ 警告: このスクリプトを実行すると、ローカル環境の既存データベースが本番環境のデータで完全に上書きされます。重要なローカルデータがある場合は、事前にバックアップを取ってください。
bash
# プロジェクトルートから実行
./scripts/sync-db-from-production.shスクリプトは以下の処理を自動で実行します:
- 設定ファイル (
config/local.env) の読み込みと検証 - SSH接続の確認
- 本番環境からデータベースダンプを取得(SSH経由)
- ローカル環境のデータベースにインポート
- 一時ファイルの自動削除
セキュリティに関する注意事項
- パスワード管理:
- データベース認証情報は
config/local.envで管理し、.gitignoreで除外されています config/local.envのパーミッションは600に設定することを推奨します(chmod 600 config/local.env)- スクリプトは
--defaults-extra-fileオプションを使用してパスワードを安全に扱います。パスワードは一時的な設定ファイルに保存され、コマンドライン引数として渡されることはありません - 一時的な設定ファイルは自動的に削除されます。ただし、システムクラッシュやkill -9(SIGKILL)などの強制終了の場合は手動で削除してください
- データベース認証情報は
- SSH鍵: SSH鍵のパーミッションは
600に設定することを推奨します - SSH接続: ホスト鍵検証を有効にするため、事前に
known_hostsに正しいホスト鍵を登録してください- 初回接続時:
ssh-keyscan -p <SSH_PORT> <DEPLOY_HOST> >> ~/.ssh/known_hostsでホスト鍵を登録 - または、
UserKnownHostsFileオプションで専用ファイルを使用することも可能
- 初回接続時:
- 一時ファイル: ダンプファイルとMySQL設定ファイルは、スクリプトが正常終了または通常のシグナル(Ctrl+C等)で中断された場合は自動的に削除されます。ただし、システムクラッシュやkill -9(SIGKILL)などの強制終了の場合は手動で削除してください
- 一時ファイルの場所:
- ローカル:
/tmp/db-sync-*.sql,/tmp/mysql-*-config-*.cnf,/tmp/mysqldump-error-*.log,/tmp/mysql-error-*.log - リモート(本番環境):
/tmp/.db-sync-temp-*.cnf
- ローカル:
- 一時ファイルの場所:
トラブルシューティング
SSH接続エラー
bash
# SSH鍵のパーミッションを確認
ls -l ~/.ssh/your-private-key.pem
# パーミッションを600に設定
chmod 600 ~/.ssh/your-private-key.pemデータベース接続エラー
- ローカル環境のデータベースが起動しているか確認してください
- Local by Flywheel を使用している場合、サイトが起動していることを確認してください。加えて、
wpを Mac のターミナル(ホスト)で実行すると DB 接続エラーになることがあります。その場合は WP-CLI 接続手順 のとおり、Local のサイトシェルからwpを実行してください - データベース名、ユーザー名、パスワードが正しいか確認してください
ダンプファイルが空の場合
- 本番環境での
mysqldumpコマンドの実行権限を確認してください - 本番環境のデータベース接続情報が正しいか確認してください