| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #!/bin/bash
- # 数据库备份脚本
- # 备份所有 xdz 相关数据库
- # 数据库连接配置
- DB_HOST="127.0.0.1"
- DB_PORT="3306"
- DB_USER="root"
- DB_PASSWORD="Xiuxiu@087"
- # 要备份的数据库列表
- DATABASES=("xdz_user" "xdz_business" "xdz_vehicle" "xdz_message")
- # 创建备份目录
- BACKUP_BASE_DIR="$(cd "$(dirname "$0")" && pwd)/backups"
- TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
- BACKUP_DIR="${BACKUP_BASE_DIR}/${TIMESTAMP}"
- mkdir -p "${BACKUP_DIR}"
- echo "=========================================="
- echo "开始数据库全量备份"
- echo "=========================================="
- echo "备份时间: $(date '+%Y-%m-%d %H:%M:%S')"
- echo "备份目录: ${BACKUP_DIR}"
- echo ""
- # 备份每个数据库
- for DB_NAME in "${DATABASES[@]}"; do
- echo "正在备份数据库: ${DB_NAME}..."
-
- BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}.sql"
-
- # 使用 mysqldump 备份数据库
- mysqldump -h"${DB_HOST}" -P"${DB_PORT}" -u"${DB_USER}" -p"${DB_PASSWORD}" \
- --single-transaction \
- --routines \
- --triggers \
- --events \
- --default-character-set=utf8mb4 \
- "${DB_NAME}" > "${BACKUP_FILE}" 2>&1
-
- if [ $? -eq 0 ]; then
- FILE_SIZE=$(du -h "${BACKUP_FILE}" | cut -f1)
- echo "✓ 备份成功: ${DB_NAME} (${FILE_SIZE})"
- else
- echo "✗ 备份失败: ${DB_NAME}"
- echo "错误信息已保存到备份文件"
- fi
- echo ""
- done
- # 生成备份说明文件
- cat > "${BACKUP_DIR}/备份说明.txt" << EOF
- 数据库备份说明
- ================
- 备份时间: $(date '+%Y-%m-%d %H:%M:%S')
- 备份目录: backups/${TIMESTAMP}
- 备份的数据库:
- EOF
- for DB_NAME in "${DATABASES[@]}"; do
- BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}.sql"
- if [ -f "${BACKUP_FILE}" ]; then
- FILE_SIZE=$(du -h "${BACKUP_FILE}" | cut -f1)
- echo "1. ${DB_NAME} (${FILE_SIZE})" >> "${BACKUP_DIR}/备份说明.txt"
- fi
- done
- cat >> "${BACKUP_DIR}/备份说明.txt" << EOF
- 备份说明:
- - 包含所有表(包括日志表的结构和数据)
- - 使用 --single-transaction 保证数据一致性
- - 包含存储过程和函数(--routines)
- - 包含触发器(--triggers)
- - 包含事件(--events)
- 备份参数:
- - --single-transaction: 保证数据一致性
- - --routines: 包含存储过程和函数
- - --triggers: 包含触发器
- - --events: 包含事件
- 恢复方法:
- mysql -h${DB_HOST} -u${DB_USER} -p'密码' 数据库名 < 备份文件.sql
- 例如:
- mysql -h${DB_HOST} -u${DB_USER} -p'${DB_PASSWORD}' xdz_user < xdz_user.sql
- mysql -h${DB_HOST} -u${DB_USER} -p'${DB_PASSWORD}' xdz_business < xdz_business.sql
- mysql -h${DB_HOST} -u${DB_USER} -p'${DB_PASSWORD}' xdz_vehicle < xdz_vehicle.sql
- mysql -h${DB_HOST} -u${DB_USER} -p'${DB_PASSWORD}' xdz_message < xdz_message.sql
- 注意: 所有表都已备份,包括日志表的结构和数据,确保恢复后应用程序能正常运行。
- EOF
- echo "=========================================="
- echo "备份完成!"
- echo "备份目录: ${BACKUP_DIR}"
- echo "=========================================="
|