Skip to content

データベース同期スクリプト - 安全な実行ガイド

⚠️ 重要な警告

このスクリプトを実行すると、ローカル環境の既存データベースが本番環境のデータで完全に上書きされます。

重要なローカルデータがある場合は、必ず事前にバックアップを取ってください

段階的な実行方法

方法1: 段階的実行スクリプトを使用(推奨)

bash
# プロジェクトルートから実行
./scripts/sync-db-step-by-step.sh

このスクリプトは、各ステップを確認しながら実行できます:

  1. 設定ファイルの読み込み - 設定値の確認
  2. 設定の検証 - 必須変数が設定されているか確認
  3. SSH接続の確認 - 本番サーバーへの接続テスト
  4. データベースダンプの取得 - 本番環境からダンプを取得(まだローカルDBは変更されない)
  5. データベースのインポート - ローカルDBを上書き(このステップでデータが失われます

各ステップで確認プロンプトが表示されるため、安全に実行できます。

方法2: 手動で各ステップを実行

bash
# プロジェクトルートに移動
cd /path/to/project

# スクリプトの関数を読み込み
source scripts/sync-db-from-production.sh

# ステップ1: 設定ファイルの読み込み
load_config

# ステップ2: 設定の検証
validate_config

# ステップ3: SSH接続の確認
check_ssh_connection

# ステップ4: データベースダンプの取得(まだローカルDBは変更されない)
fetch_dump

# ステップ5: データベースのインポート(⚠️ このステップでローカルDBが上書きされます)
import_dump

実行前の確認事項

1. ローカルデータベースのバックアップ

bash
# テーマ配下の外にバックアップディレクトリを作成(初回のみ)
mkdir -p /path/to/slot-kouryaku/backups

# ローカルDBのバックアップを取得(テーマ配下の外に保存)
mysqldump -u root -p local > /path/to/slot-kouryaku/backups/backup_$(date +%Y%m%d_%H%M%S).sql

注意: 巨大な SQL バックアップをテーマ配下(例: myCustom/backups/)に置くと、WordPress のテーマファイルエディター表示時にメモリ不足を引き起こす場合があります。バックアップは必ずテーマ配下の外に保存してください。

2. 設定ファイルの確認

bash
# 設定ファイルの内容を確認
cat config/local.env

確認ポイント:

  • LOCAL_DB_NAME: 正しいローカルDB名が設定されているか
  • PROD_DB_NAME: 正しい本番DB名が設定されているか
  • SSH接続情報が正しいか

3. SSH接続の事前確認

bash
# SSH接続を手動でテスト
ssh -i ~/.ssh/your-private-key.pem -p 8022 your-user@your-server-ip "echo 'test'"

4. ローカルMySQLの起動確認

bash
# MySQLが起動しているか確認(パスワードはプロンプトで入力)
mysql -u root -p -e "SELECT 1;"

実行時の注意点

ステップ4(ダンプ取得)まで実行した場合

  • ローカルDBはまだ変更されていません
  • ダンプファイルは /tmp/db-sync-XXXXXX.sql に保存されています
  • この時点で中断しても安全です

ステップ5(インポート)を実行する場合

  • ローカルDBが完全に上書きされます
  • 元のデータは復元できません(バックアップを取っていない場合)
  • 実行前に必ず確認してください

トラブルシューティング

SSH接続エラー

bash
# SSH鍵のパーミッションを確認
ls -l ~/.ssh/your-private-key.pem

# パーミッションを600に設定
chmod 600 ~/.ssh/your-private-key.pem

# known_hostsにホスト鍵を登録
ssh-keyscan -p 8022 your-server-ip >> ~/.ssh/known_hosts

データベース接続エラー

bash
# ローカルMySQLが起動しているか確認(パスワードはプロンプトで入力)
mysql -u root -p -e "SELECT 1;"

# データベースが存在するか確認(パスワードはプロンプトで入力)
mysql -u root -p -e "SHOW DATABASES;"

ダンプファイルが空の場合

  • 本番環境のデータベース接続情報を確認
  • 本番環境でのmysqldumpコマンドの実行権限を確認
  • エラーログを確認: /tmp/mysqldump-error-XXXXXX.log

安全な実行フロー(推奨)

  1. バックアップを取得

    bash
    # テーマ配下の外にバックアップディレクトリを作成(初回のみ)
    mkdir -p /path/to/slot-kouryaku/backups
    
    # ローカルDBのバックアップを取得(テーマ配下の外に保存)
    mysqldump -u root -p local > /path/to/slot-kouryaku/backups/backup_$(date +%Y%m%d_%H%M%S).sql

    注意: 巨大な SQL バックアップはテーマ配下に置かず、必ずテーマ配下の外に保存してください。

  2. 段階的実行スクリプトを実行

    bash
    ./scripts/sync-db-step-by-step.sh
  3. ステップ1-3を実行して確認

    • 設定が正しいか確認
    • SSH接続が成功するか確認
  4. ステップ4を実行(ダンプ取得)

    • ダンプファイルのサイズを確認
    • ダンプファイルの内容を確認(必要に応じて)
  5. ステップ5を実行(インポート)

    • 最終確認をしてから実行
    • 実行後、ローカル環境で動作確認
  6. ステップ6を実行(URL置換)

    • WordPressのサイトURLをローカル環境用に置換
    • ローカルサイトが正常に表示されることを確認

復元方法

もし誤って実行してしまった場合、バックアップから復元できます:

bash
# バックアップから復元(パスワードはプロンプトで入力)
mysql -u root -p local < /path/to/slot-kouryaku/backups/backup_YYYYMMDD_HHMMSS.sql

関連ドキュメント