62 lines
1.3 KiB
Bash
62 lines
1.3 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# ===== 설정값 =====
|
||
|
|
DOCKER_CONTAINER="sam-mysql-1"
|
||
|
|
DOCKER_DB="chandj"
|
||
|
|
DOCKER_USER="root"
|
||
|
|
DOCKER_PASS="root"
|
||
|
|
|
||
|
|
REMOTE_USER="pro"
|
||
|
|
REMOTE_HOST="114.203.209.83"
|
||
|
|
REMOTE_DB="chandj"
|
||
|
|
|
||
|
|
CHARSET="utf8mb4"
|
||
|
|
|
||
|
|
# ===== 인자 체크 =====
|
||
|
|
if [ -z "$1" ]; then
|
||
|
|
echo "사용법: $0 table1 또는 $0 table1,table2,table3"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 콤마 기준으로 테이블 분리
|
||
|
|
IFS=',' read -ra TABLES <<< "$1"
|
||
|
|
|
||
|
|
for TABLE in "${TABLES[@]}"; do
|
||
|
|
SQL_FILE="${TABLE}.sql"
|
||
|
|
|
||
|
|
echo "▶ 테이블 덤프: $TABLE"
|
||
|
|
|
||
|
|
docker exec -i "$DOCKER_CONTAINER" mysqldump \
|
||
|
|
-u"$DOCKER_USER" -p"$DOCKER_PASS" \
|
||
|
|
--default-character-set="$CHARSET" \
|
||
|
|
--add-drop-table \
|
||
|
|
"$DOCKER_DB" "$TABLE" > "$SQL_FILE"
|
||
|
|
|
||
|
|
if [ $? -ne 0 ]; then
|
||
|
|
echo "❌ 덤프 실패: $TABLE"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "▶ 서버로 복사: $SQL_FILE"
|
||
|
|
scp "$SQL_FILE" "$REMOTE_USER@$REMOTE_HOST:~/"
|
||
|
|
|
||
|
|
if [ $? -ne 0 ]; then
|
||
|
|
echo "❌ SCP 실패: $SQL_FILE"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "▶ 서버 DB 적용: $TABLE"
|
||
|
|
ssh "$REMOTE_USER@$REMOTE_HOST" \
|
||
|
|
"mysql -u $REMOTE_USER -p $REMOTE_DB < ~/$SQL_FILE"
|
||
|
|
|
||
|
|
if [ $? -ne 0 ]; then
|
||
|
|
echo "❌ DB 적용 실패: $TABLE"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "✅ 완료: $TABLE"
|
||
|
|
echo "--------------------------------------"
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "🎉 모든 테이블 처리 완료"
|