[linux][shell] MySQL 数据库备份工具

        脚本是一个完整的 MySQL 数据库备份工具,它通过 mysqldump 命令将数据库导出为 SQL 文件,并将这些文件保存到指定的备份目录中。

#!/bin/bash

# 配置变量
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=root
PASS=********
BACKUP_DIR=/data/db_backup
LOG_FILE=$BACKUP_DIR/backup.log
MAX_BACKUP_DAYS=7

# 检查备份目录是否存在,如果不存在则创建
if [ ! -d "$BACKUP_DIR" ]; then
    mkdir -p "$BACKUP_DIR"
fi

# 获取数据库列表,排除系统数据库
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null | egrep -v "Database|information_schema|mysql|performance_schema|sys")

# 遍历每个数据库并备份
for DB in $DB_LIST; do
    BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
    if mysqldump -h$HOST -u$USER -p$PASS -B $DB > "$BACKUP_NAME" 2>/dev/null; then
        echo "$(date +'%F %T') $DB 备份成功" >> "$LOG_FILE"
    else
        echo "$(date +'%F %T') $DB 备份失败" >> "$LOG_FILE"
        echo "$BACKUP_NAME 备份失败!"
    fi
done

# 清理旧的备份文件
echo "$(date +'%F %T') 开始清理旧备份文件" >> "$LOG_FILE"
find "$BACKUP_DIR" -type f -name "*.sql" -mtime +$MAX_BACKUP_DAYS -exec rm -f {} \; >> "$LOG_FILE" 2>&1
echo "$(date +'%F %T') 清理完成" >> "$LOG_FILE"

总结

这段脚本是一个功能完善的 MySQL 数据库备份工具,它涵盖了以下功能:

  1. 动态生成备份文件名:根据当前时间和数据库名生成唯一的备份文件名。

  2. 排除系统数据库:避免备份不必要的系统数据库。

  3. 日志记录:将备份操作的成功或失败记录到日志文件中,便于后续查看。

  4. 清理旧备份:自动删除超过指定天数的备份文件,避免备份目录占用过多磁盘空间。

安全性建议

  1. 密码管理:建议将密码存储在更安全的地方,例如 MySQL 的配置文件(my.cnf)中,而不是直接写在脚本中。

  2. 权限管理:确保备份目录和日志文件的权限正确,避免其他用户访问敏感信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

awonw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值