#!/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
标签:shell,REMOTE,NAME,dump,备份,DB,拉取,FILE,LOCAL From: https://www.cnblogs.com/liran123/p/18251739