在Linux中备份MySQL数据库

要求

  1. 每天凌晨2:30备份数据库DBTEST到 /data/banckup/db中。
  2. 备份开始和结束能够显示相应的信息。
  3. 备份后的文件要求以备份时间为文件名,并打包成.tar.gz格式的文件,例如:2020-09-11_023000.tar.gz。
  4. 在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。

代码实现

  1. Shell文件-/usr/sbin/mysql_db.backup.sh

    vim /usr/sbin/mysql_db.backup.sh
    
    #!/bin/bash
    #备份目录
    BACKUP=/data/backup/db
    #当前时间
    DATETIME=$(date +%Y-%m-%d_%H%M%S)
    #数据库的地址
    HOST=localhost
    #数据库用户名
    DB_USER=root
    #数据库密码
    DB_PW=abc123
    #备份的数据库名
    DATABASE=hspedu
    #创建备份目录, 如果不存在,就创建
    [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
    #备份数据库
    mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip >
    ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
    #将文件处理成 tar.gz
    cd ${BACKUP}
    tar -zcvf $DATETIME.tar.gz ${DATETIME}
    #删除对应的备份目录
    rm -rf ${BACKUP}/${DATETIME}
    #删除 10 天前的备份文件
    find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
    echo "备份数据库${DATABASE} 成功~"
    
    chmod +x /usr/sbin/mysql_db.backup.sh
    
  2. crond代码

    crontab -e
    30 2 * * */usr/sbin/mysql_db.backup.sh
    
posted @   AlsonLiu  阅读(463)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示