定时备份mysql数据库

最近在带linux CentOS7.8操作系统的服务器里误删了my sql数据库,恢复起来比较麻烦。还好有一个3月5号该数据库的备份,于是用3月5号的备份恢复了数据库的大部分内容。为了减少以后出现同样问题的损失,打算定时备份mysql数据库。在网上搜了一下,搜到了相关的内容,然后试了一下,但是不成功,接着查找问题,后来找到了问题原因,并解决了该问题。

网上的解决方法是编写一个shell脚本,用这个shell脚本来做备份。在crontab里面写上一条语句来定时执行这个shell脚本。shell脚本内容如下所示。

#!/bin/bash
 
 # MySQL连接参数
 DB_USER="root"
 DB_PASSWORD="123456"
 DB_NAME="db_name"
 
  # 备份文件路径和名称
  BACKUP_DIR="/your/backup/dir"
  BACKUP_FILE="$BACKUP_DIR/backup_$(date +\%Y\%m\%d_\%H\%M\%S).sql"
   
   # 使用mysqldump进行备份
      mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE
    
    # 删除超过7天的备份文件,保留最近几次备份
    find $BACKUP_DIR -name "backup_*.sql" -type f -mtime +7 -exec rm {} \;

保存该脚本为/home/user_name/backup_script.sh。请注意,该脚本里的秘码、数据库名、备份保存目录等内容修改成你的实际值。接着给该脚本添加可执行权限。

        chmod +x backup_script.sh

接着创建备份文件目录:

        sudo mkdir -P /your/backup/dir/

然后用crontab -e 命令打开一个文件,加入如下一行(不包括注释行)。这时使用的是vi 编辑器。简单的vi命令包括:按 i 进入编辑模式,按Esc 键退出编辑模式,在命令模式下按   :wq 保存并退出vi 。vi 详细的使用说明请在游览器里搜索:vi怎么使用。

# 注释:分钟  小时  天   月  星期  执行命令

             0  2 *  *  *  /home/user_name/backup_script.sh

接着输入:wq 保存并退出该文件。

上面这句话的意思是每天凌晨2点执行backup_script.sh文件。为了测试这条语句能否执行,我修改了定时时间。再用crontab -e 命令打开一个文件,将原来的语句改成如下内容。

        */3  *  *  *  *  /home/user_name/backup_script.sh

这句话的意思是每三分钟执行一次backup_script.sh文件。

但是结果是没有看到备份文件。

于是我手动执行了备份的命令:

        sudo mysqldump -uroot -p123456 $db_name > /your/backup/dir/backup_20240422_181801.sql

这时看到了错误提示:找不到mysqldump。

于是在命令行界面输入:which mysqldump

找到了mysqldump命令具体位置:/usr/local/lighthouse/softwares/mariadb/bin/mysqldump

然后修改脚本文件的备份语句为下面两条语句。

   MYSQLDUMP="/usr/local/lighthouse/softwares/mariadb/bin/mysqldump"
   sudo $MYSQLDUMP -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE

保存该脚本文件,等待三分钟左右就看到了备份文件。定时备份数据库成功。

然后再将定时备份语句改成每天凌晨2点进行备份的语句。实现了每天定时备份数据库。

由于我使用的操作系统,设置了我的用户使用sudo命令不需要输入密码。如果你的用户使用sudo命令需要输入密码,建议你用root用户定时执行该备份脚本。具体操作你可以试用一下,并查找问题的原因。

如果用root用户定时执行该脚本,也需要写上mysqldump命令所在的目录。虽然root用户在命令行界面下不需要路径 就能找到mysqldump命令,但是执行该脚本时不能正常备份,原因很可能是找不到mysqldump命令。由于是root用户,就不需要在命令前加sudo了,不过加入也不会出错。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值