• 当前位置: 首 页 > 教育百科 > 学历/技能 > 正文

    用 Shell 脚本实现 MySQL 数据库每日自动备份

    :2025年05月16日
    web攻防

    本文介绍了一种用 Shell 脚本自动备份 MySQL 数据库的方法。文章详细解释了为什么要备份数据库、备份思路、准备备份文件、编写脚本文件和执行脚本等步骤,并提供了一步全注释的 Shell 脚本示例。

    本文带你一步步动手用 Shell 脚本自动备份 MySQL 数据库,即使你是刚入门的小白也能学会。从环境准备到脚本编写到定时执行,保姆级讲解!

    一、为什么需要数据库备份?

    数据库是 Web 应用的核心资产,一旦丢失,后果不堪设想。比如:

    • 博客数据没了?

    • 订单信息丢了?

    • 用户账号密码没了?

    所以我们要定期备份,哪怕出了问题也能快速恢复。

    二、备份思路与目标

    我们希望:

    1. 每天自动执行一次备份

    2. 备份文件保存到 /home/backup/

    3. 文件名包含日期,如:mydb_2025-05-15.sql

    4. 自动压缩为 .tar.gz 节省空间

    5. 保留最近 7 天的备份,自动清理旧文件

    三、准备工作(一步不落)

    检查是否已安装 mysqldump

    bash

    which mysqldump

    如果输出路径如 /usr/bin/mysqldump,说明已安装。

    如果没有,使用以下命令安装(centos):

    bash

    sudo yum update

    sudo yum install mysql-client

    四、Shell 脚本编写(全注释)

    创建脚本文件:

    bash

    nano /home/backup/mysql_backup.sh

    粘贴以下内容

    bash

    #!/bin/bash

    # 数据库信息配置

    DB_USER="root"          # 数据库用户名

    DB_PASSWORD="123456"    # 数据库密码

    DB_NAME="mydb"          # 数据库名称

    # 备份保存路径

    BACKUP_DIR="/home/backup"

    DATE=$(date +%F)

    FILENAME="${DB_NAME}_${DATE}.sql"

    TARFILE="${FILENAME}.tar.gz"

    # 创建备份目录(如果不存在)

    mkdir -p "$BACKUP_DIR"

    # 开始备份

    echo "[$(date)] 开始备份数据库 $DB_NAME ..."

    mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > "$BACKUP_DIR/$FILENAME"

    # 压缩备份

    tar -czf "$BACKUP_DIR/$TARFILE" -C "$BACKUP_DIR" "$FILENAME"

    rm "$BACKUP_DIR/$FILENAME"

    echo "[$(date)] 备份完成:$TARFILE"

    # 自动删除7天前的旧备份

    find "$BACKUP_DIR" -name "${DB_NAME}_*.tar.gz" -mtime +7 -exec rm {} \;

    echo "[$(date)] 清理7天前备份完成"

    保存并退出(Ctrl + O → 回车 → Ctrl + X)

    五、添加执行权限

    bash

    chmod +x /home/backup/mysql_backup.sh

    六、设置定时任务(Crontab)

    让脚本每天凌晨 2 点自动执行:

    bash

    crontab -e

    添加以下一行:

    bash

    0 2 * * * /home/backup/mysql_backup.sh >> /home/backup/backup.log 2>&1

    这表示每天 2 点执行脚本,并把日志写入 backup.log。

    七、执行效果示例

    进入备份目录:

    bash

    cd /home/backup

    ls -la

    你将看到类似这些文件:

    pgsql

    mydb_2025-05-13.sql.tar.gz

    mydb_2025-05-14.sql.tar.gz

    mydb_2025-05-15.sql.tar.gz

    backup.log

    八、小知识点补充 

    命令

    作用说明

    mysqldumpMySQL 官方提供的数据库备份工具

    tar -czf压缩文件为 .tar.gz 格式

    find -mtime +7查找7天前的文件

    crontabLinux 的定时任务工具

    九、常见问题解答

    Q1:密码会不会泄露?

    是明文写入脚本,但文件权限设置好就不会有问题(chmod 700)。如需更安全方式,建议用 .my.cnf 配置隐藏密码。

    Q2:能备份所有数据库吗?

    可以,将 mysqldump 替换成:

    bash

    mysqldump -u$DB_USER -p$DB_PASSWORD --all-databases > all_$(date +%F).sql

    总结

    恭喜你!现在你已经完成了一个自动化数据库备份系统,再也不用担心数据突然丢失啦!

    今 日 收 获

    • 熟悉了 mysqldump 用法

    • 学会用 Shell 脚本打包压缩

    • 搞懂了 Linux 的定时任务 cron

    • 实现了自动清理旧文件

    原谅来源:https://mp.weixin.qq.com/s/YmbN5q_snqZKd4zGd1_6FQ

    [编辑:宋聪乔 &发表于江苏]
    [我要纠错]

    来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
    声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

    关键词: 本文 步步 手用 Shell 脚本
    有价值
    0
    无价值
    0
    猜您喜欢
    最热文章

    暂不支持手机端,请登录电脑端访问

    正在加载验证码......

    请先完成验证