Linux系统定时自动备份数据库,附带脚本信息

1. 效果展示

手动执行一次脚本,会出现一个MySQL数据库指定数据库压缩包红色的.gz文件,如下图出现多个是因为我多次执行,忽略数量。下载到本地解压,里面就是MySQL全部表结构和表数据sql文件.下文会说到数据库备份文件的生成过程和定时生成。
在这里插入图片描述

2. 生成数据库备份文件脚本

  1. 登录Linux系统,创建一个存放数据库备份的文件夹。如:/usr/local/mysql-backup,根据自己的实际文件夹创建。

  2. 个人电脑在本地创建一个txt文本文件,用于写脚本。复制下面脚本内容,粘贴到文本中,然后做修改。

    修改内容:
    1.修改你自己的数据库地址,注意""不要=后面直接跟值就行。
    2.修改备份文件夹地址。改成自己Linux系统中创建的备份文件夹。

    #!/bin/bash
    
    # MySQL Server 登录信息
    MYUSER="数据库账号"
    MYPASS='数据库密码'
    MYHOST="数据库IP"
    MYPORT="数据库端口"
    MYDB="需要备份的数据库"
    
    # 备份相关配置信息
    BAKDIR="/www/wwwroot/mysqlbackup/$(date +'%Y-%m-%d')"  # 备份保存目录(根据实际项目路径设置)
    BAKFILE="$BAKDIR/db.$(date +'%Y-%m-%d-%H%M%S').sql.gz"  # 备份文件名(可以不改)
    KEEPDAYS=7  # 保留天数
    
    # 创建备份目录
    if [ ! -d "$BAKDIR" ]; then
        mkdir -p "$BAKDIR"
    fi
    
    # 备份数据库至压缩文件
    mysqldump -h "$MYHOST" -P "$MYPORT" -u "$MYUSER" -p"$MYPASS" --databases "$MYDB" | gzip > "$BAKFILE"
    
    # 清理旧备份文件,只保留指定天数内的备份,超过时间的就会被清除
    find "$BAKDIR" -name '*.sql.gz' -type f -mtime +"$KEEPDAYS" -delete
    
  3. 保存txt文件。然后修改文件.txt后缀为.sh保存。

  4. 上传.sh脚本文件到Linux服务器目录下。推荐和备份文件夹一个目录/usr/local/mysql-backup
    在这里插入图片描述

  5. 登录Linux系统,切换到脚本文件目录下。

  6. 手工执行一下脚本,验证脚本是否正常。
    脚本执行命令:

    sh 脚本名称.sh
    

    我执行的结果:mysql-backup.sh: line 21: mysqldump: command not found,报错了,因为找不到mysqldump命令,处理方法见下面的步骤,如果你不报错并且生成了备份文件,可以跳过以下步骤,直接看自动化执行。在这里插入图片描述

  7. 处理找不到mysqldump命令问题

    • 执行一下命令,查询MySQL的安装目录,找到对应的bin目录
      find  / -name mysql -print
      
    • 切换当前目录到bin目录下。找到mysqldump,创建软连接,注意软连接修改mysqldump的目录为自己实际目录。
      ln -fs /usr/local/mysql/mysql-8.0/bin/mysqldump /usr/bin
      
  8. 切换到脚本目录

  9. 再次手工执行脚本,注意需要在脚本的目录下执行,不然会提示找不到脚本No such file or directory

  10. 根据脚本中备份目录找到一个文件夹,可以下载到本地,看到是一个压缩包,里面就是MySQL备份

3. 自动化任务执行

  1. 查询定时器

    crontab -l
    

    此时无任何定时器
    在这里插入图片描述

  2. 修改定时器
    进入编辑

    crontab -e
    

    输入cron表达式+你需要执行的脚本路径
    例如:0 3 * * * /usr/local/mysql-backup/mysql-backup.sh
    保存退出。

  3. 查询修改之后的定时器

    	crontab -l
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XuDream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值