PostgreSQL数据同步到远程脚本

相关概念:PostgreSQL

这个脚本适合把本地 Docker 容器里的 PostgreSQL 数据,导出后同步到远程机器。

脚本

#!/bin/bash
 
LOCAL_CONTAINER_NAME="pg"
LOCAL_DB_USER="postgres"
LOCAL_DB_NAME="comic_db_v2"
 
REMOTE_SSH_HOST="picacenter"
REMOTE_SSH_USER="pver"
REMOTE_DB_USER="postgres"
REMOTE_DB_NAME="comic_db_v2"
 
BACKUP_FILE="migration_$(date +%Y%m%d_%H%M%S).dump"
 
echo "开始数据库迁移..."
 
docker exec "$LOCAL_CONTAINER_NAME" \
  pg_dump -U "$LOCAL_DB_USER" -d "$LOCAL_DB_NAME" --data-only --format=custom \
  > "$BACKUP_FILE"
 
scp "$BACKUP_FILE" "$REMOTE_SSH_USER@$REMOTE_SSH_HOST:/tmp/"
 
ssh "$REMOTE_SSH_USER@$REMOTE_SSH_HOST" \
  "pg_restore -h localhost -U $REMOTE_DB_USER -d $REMOTE_DB_NAME --data-only --disable-triggers /tmp/$BACKUP_FILE"
 
ssh "$REMOTE_SSH_USER@$REMOTE_SSH_HOST" "rm /tmp/$BACKUP_FILE"
rm "$BACKUP_FILE"
 
echo "迁移完成!"

适用边界

这份脚本更像“快速迁移模板”,适合:

  • 开发环境到测试环境
  • 单次数据搬运

不太适合:

  • 严格的生产迁移
  • 需要结构变更控制的场景
  • 大体量数据的稳定同步