定时备份Docker中的MySQL数据库


  1. 新建脚本 mysql_bak.sh

    # mysql 为docker中的mysql容器名
    #!/bin/bash
    docker_name=mysql
    data_dir="/opt/docker/mysql/backup/"
    docker exec -i $docker_name mysqldump -uroot -ppassword --all-databases > "$data_dir/bak_`date +%Y%m%d%H%M%S`.sql"
    # 删除14天以前的备份
    find $data_dir -mtime +14 -name 'bak_*.sql' -exec rm -rf {} \;
    

    可以使用sh mysql_bak.sh来测试一下,看看备份文件有没有打印到 /opt/docker/mysql/backup/ 目录下

  2. 使用 crontab 创建自动备份定时任务

    crontab -e
    
    # 每天凌晨3点半定时备份Docker中的MySQL
    30 3 * * * sh ~/mysql_bak.sh > /opt/docker/mysql/logs/mysql_bak.log 2>&1
    

    做完这些,按下 Esc, 输入 :wq保存即可