Ubuntu服务器中定时备份数据库

  1. 编写bk-mysql.sh脚本,主要内容是进行myql dump,以及删除7天之前的备份文件,注意需要修改指定的文件路径

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #!/bin/bash

    # 删除7天之前的数据库备份
    target_date=$(date +%Y%m%d -d '7 days ago')
    echo $target_date

    # 获取当前时间 年月 20240419
    current_date=$(date +%Y%m%d)
    echo $current_date

    # 备份路径,需要自己修改
    directory_path="/home/dell/mysql-dump"

    # 判断目标文件夹是否存在
    target_directory="$directory_path/$target_date"

    if [ -d "$target_directory" ]; then
    echo "文件夹 $target_directory 存在."

    # 删除文件夹
    rm -rf "$target_directory"
    echo "文件夹 $target_directory 被删除."
    else
    echo "文件夹 $target_directory 不存在."
    fi

    # 备份数据库
    echo "开始备份MySQL数据库!"

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

    # 数据库密码
    DB_PASSWORD="P@ssW0Rd"

    #新建本月备份的文件夹
    mkdir $(date +%Y%m%d)

    # 备份每个数据库, in 列出需要备份的数据库
    for database in rppm mai2pro mai2flowable mai2dev mai2exec; do
    # 生成备份文件名
    backup_filename="$database-$(date +%Y%m%d_%H%M%S).sql.gz"

    # 备份对应的数据库,需要修改路径
    mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$database" | gzip > "/home/dell/mysql-dump/$(date +%Y%m%d)/$backup_filename"

    # 输出成功信息
    echo "数据库 $database 备份成功!"
    done

    echo "MySQL 数据库备份完成!"

  2. 使用 sudo chmod u+x bk-mysql.sh命令给脚本执行权限

  3. 使用./bk-mysql.sh进行测试,是否可以备份成功

  4. 创建定时任务,使用crontab -e命令,选择 nano编辑器,在文件中追加

    1
    2
    3
    # MySQL数据库自动备份定时任务,每天执行
    # 修改成自己脚本的路径
    0 0 * * * /home/dell/mysql-dump/bk-mysql.sh
  5. 使用crontab -l查看已有的定时任务