#!/bin/bash # 遠端MySQL連線資訊 REMOTE_HOST="8.8.11.100" REMOTE_USERNAME="root" REMOTE_PASSWORD="Yaya@1972" # 本地MySQL連線資訊 LOCAL_HOST="8.8.9.248" # 或者 "localhost" LOCAL_USERNAME="root" LOCAL_PASSWORD="root" # 要備份並同步的資料庫列表 DATABASES=("alpha_erp""bamboo""bi_system""open_api""pdm""public_service""seata""ums""wms""xxl_job") # 備份目錄 BACKUP_DIR="/usr/backup/mysql" # 同步目錄(可選,用於儲存臨時SQL檔案) SYNC_DIR="/tmp/mysql_sync" mkdir -p "$SYNC_DIR" # 迴圈備份並同步每個資料庫 for DB_NAME in "${DATABASES[@]}" do # 建立備份檔名 TIMESTAMP=$(date "+%Y%m%d_%H%M%S") REMOTE_BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql" LOCAL_SYNC_FILE="$SYNC_DIR/$DB_NAME.sql" # 使用 mysqldump 命令備份遠端資料庫 mysqldump -h $REMOTE_HOST -u $REMOTE_USERNAME -p$REMOTE_PASSWORD $DB_NAME > $REMOTE_BACKUP_FILE # 檢查備份是否成功 if [ $? -eq 0 ]; then echo "備份 $DB_NAME 成功: $REMOTE_BACKUP_FILE" # 複製備份檔案到同步目錄(可選,如果備份和同步在同一臺機器上) cp $REMOTE_BACKUP_FILE $LOCAL_SYNC_FILE # 檢查本地資料庫是否存在,如果不存在則建立 mysql -h $LOCAL_HOST -u $LOCAL_USERNAME -p$LOCAL_PASSWORD -e "SHOW DATABASES LIKE '$DB_NAME';" | grep -q "$DB_NAME" if [ $? -ne 0 ]; then echo "資料庫 $DB_NAME 在本地不存在,正在建立..." mysql -h $LOCAL_HOST -u $LOCAL_USERNAME -p$LOCAL_PASSWORD -e "CREATE DATABASE $DB_NAME;" fi # 匯入備份到本地資料庫 mysql -h $LOCAL_HOST -u $LOCAL_USERNAME -p$LOCAL_PASSWORD $DB_NAME < $LOCAL_SYNC_FILE if [ $? -eq 0 ]; then echo "同步 $DB_NAME 到本地成功" else echo "同步 $DB_NAME 到本地失敗" fi else echo "備份 $DB_NAME 失敗" fi done