mysql docker 数据库定时备份 保留7天的数据

    技术2022-07-11  121

    1.普通的数据库备份

    #!/bin/bash mysqldump -uusername -ppassword DatabaseName > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql 对备份进行压缩: #!/bin/bash mysqldump -uusername -ppassword DatabaseName | gzip > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

    2.docker下备份mysql

    docker exec -it mysql mysqldump -uuser -ppassword databasename| gzip > /your/bak/file/path/databasename_$(date +%Y%m%d_%H%M%S).sql.gz

    3.删除7天外 的数据

    find $path -name "*.sql.gz" -type f -mtime +7 -exec rm {} \;

    4.crontab 添加定时任务

      crontab -e 进入编辑状态添加定时任务,每天凌晨两点执行,日志输出到指定文件中。

    00 02 * * * /your/path/for/bak/***.sh >> /your/path/for/bak/**.log 2>&1

    备注:

     脚本写正确后会正确备份,定时任务执行可能备份数据是空,由于mysqldump存在于全局环境变量mysql的bin下面,故在直接运行时可以识别到mysqldump命令,而在crontab里面无法识别到mysqldump命令。(ps:crontab运行失败问题基本都是环境变量引起的)

    解决方案1:

    在备份脚本里面的mysqldump命令前加上绝对路径可以解决,find / -name mysqldump 命令查看命令所在路径

    解决方案2:

    修改docker导出命令:

    docker exec mysql sh -c "exec /usr/bin/mysqldump -uuser -ppassword databasename | gzip " > /your/path/for/bak/databasename_$(date +%Y%m%d_%H%M%S).sql.gz

     

    Processed: 0.011, SQL: 9