#!/bin/bash # 配置属性 DB_HOST="139.9.72.189" DB_PORT="8052" DB_USER="root" DB_PASS="kanglai@2022" DB_NAMES="db_kicc db_kicc_config db_kics db_kanglai" ROOT_DIR="/opt/database-backup/mysql-backup" BACKUP_DIR="${ROOT_DIR}/$(date +%Y-%m-%d)" if [ -d $BACKUP_DIR ]; then echo "今天已经备份过了无法覆盖备份需要覆盖备份请先删除今天的备份目录" else for DB_NAME in $DB_NAMES do echo "开始备份${DB_NAME}..." TABLE_PATH=${BACKUP_DIR}/${DB_NAME}/Tables DB_PATH=${BACKUP_DIR}/${DB_NAME}/Database mkdir -p $TABLE_PATH $DB_PATH # 执行 MyDumper 备份命令(直接连接远程MySQL服务器执行备份) mydumper -h $DB_HOST -P $DB_PORT -u $DB_USER -p $DB_PASS -B $DB_NAME -o $TABLE_PATH -s 104857600 # 合并备份文件为一个 SQL 文件 find $TABLE_PATH -name "*.sql" -exec cat {} >> "${DB_PATH}/${DB_NAME}.sql" \; echo "${DB_NAME}备份完毕." done fi # 清除超过30天未修改的备份目录 find $ROOT_DIR -type d -mtime +30 -exec rm -rf {} \;