Files
keinasystem/sync_db.sh
Akira 4516a74772 Fix sync_db.sh to run migrate after DB restore
サーバーより新しいマイグレーションがローカルに存在する場合、
リストア後にmigrateを実行しないと500エラーになるバグを修正。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 17:32:23 +09:00

49 lines
2.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# サーバーのDBをローカルに同期するスクリプト
#
# 事前準備サーバー側でkeinasystemユーザーとして実行:
# docker exec keinasystem_db pg_dump -U keinasystem keinasystem > /tmp/keinasystem_dump.sql
#
# 使用: bash sync_db.sh
set -e
REMOTE_HOST="keinafarm"
LOCAL_DUMP="/tmp/keinasystem_dump.sql"
echo "=== DBSync: サーバー → ローカル ==="
# 1. サーバーからdumpファイルをscpで取得
echo "[1/4] サーバーからダンプファイルを取得..."
scp "$REMOTE_HOST:/tmp/keinasystem_dump.sql" "$LOCAL_DUMP"
echo " → ダンプ取得完了: $LOCAL_DUMP ($(du -sh $LOCAL_DUMP | cut -f1))"
# 2. ローカルのDBコンテナが起動しているか確認
echo "[2/4] ローカルDBコンテナを確認..."
if ! docker compose -f docker-compose.local.yml ps db 2>/dev/null | grep -q "running"; then
echo " → ローカルDBコンテナが起動していません。起動します..."
docker compose -f docker-compose.local.yml up -d db
echo " → DB起動待機中..."
sleep 10
fi
# 3. 既存データをドロップして復元
echo "[3/4] ローカルDBにリストア既存データをリセット..."
# DBを一旦削除して再作成してからリストア
docker compose -f docker-compose.local.yml exec -T db \
psql -U keinasystem -d postgres -c "DROP DATABASE IF EXISTS keinasystem;" --quiet
docker compose -f docker-compose.local.yml exec -T db \
psql -U keinasystem -d postgres -c "CREATE DATABASE keinasystem OWNER keinasystem;" --quiet
cat "$LOCAL_DUMP" | docker compose -f docker-compose.local.yml exec -T db \
psql -U keinasystem -d keinasystem --quiet
echo " → リストア完了"
# クリーンアップ
rm -f "$LOCAL_DUMP"
# 4. マイグレーション(サーバーより新しいマイグレーションを適用)
echo "[4/4] マイグレーション実行..."
docker compose -f docker-compose.local.yml exec backend python manage.py migrate
echo ""
echo "=== 同期完了 ==="