定时备份mysql数据库

news/2024/9/22 19:10:37/

最近在带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。请注意,该脚本里的秘码、数据库名、备份保存目录等内容修改成你的实际值。接着给该脚本添加可执行权限。

        chomod +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命令。


http://www.ppmy.cn/news/1434701.html

相关文章

C++如何使用string类

文章目录 为什么要学习string?库中的string关于编码ASCII编码Unicode编码 迭代器Iteratorsstring常用构造接口接口声明与功能说明接口演示 string类对象的容量操作接口声明与功能说明接口演示reverse与resize在不同平台下的扩容与缩容机制 string类对象的访问及遍历操作接口声…

C++:模板(初级)

hello,各位小伙伴,本篇文章跟大家一起学习《C:模板(初级)》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 如果本篇文章对你有帮助,还请各位点点赞…

MT3030 天梯赛

跟MT3029战神小码哥类似,都是贪心堆。注意开long long 这里的堆顶为战斗力最小的,便于贪心的反悔操作。先按容忍度从大到小排序(q中总容忍度取决于最小的容忍度),再向q中存数,存到不能容忍之后再把堆顶踢出…

mathtype设置公式编号,公式居中以及编号靠右

在word中实现: 1. 首先点击栏,选择更多栏去看 看到栏的宽度,然后去设置样式 在开始-样式中设置,新建样式: 新建样式,然后设置格式-制表位,选择对齐方式,居中对齐设置刚才的一半,右…

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?

12.1.为什么没有选择二叉树? 二叉树是一种二分查找树,有很好的查找性能,相当于二分查找。 二叉树的非叶子节值大于左边子节点、小于右边子节点。 原因: 但是当N比较大的时候,树的深度比较高。数据查询的时间主要依赖于磁盘IO的次数,二叉树深度越大,查找的次数越多,性能…

人工智能中两个较为常见的评估模型性能指标(EVS、MAE)

1、解释方差(EVS) 官方社区链接:sklearn.metrics.explained_variance_score-scikit-learn中文社区 explained_variance_score是一个用于评估回归模型性能的指标,它衡量的是模型预测值与实际值之间关系的密切程度。具体来说,解释方差分数表示…

【2023】springboot通过阿里云oss进行文件单个批量文件上传下载

SpringBoot整合阿里OSS实现上传下载 目录💻 前言一、介绍二、阿里云添加oss1、进入oss目录2、创建bucket3、测试上传下载4、创建AccessKey管理账号 三、依赖以及配置1、依赖2、yml3、Config类4、OSSUtil 工具类 四、controller五、测试1、测试上传2、测试删除 前言 …

【SpringCloud】一文详谈Nacos

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 文章目录 …