当前位置: 首页 > news >正文

crontab 定时备份 mysql 数据库

1、使用 mysqldump 命令备份数据

1.1 备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A > /data/backup/db.sql
1.2 备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d > /data/backup/db.sql
1.3 备份全部数据库的数据(加 -t 参数)
mysqldump -uroot -p123456 -A -t > /data/backup/db.sql
1.4 备份单个数据库的数据和结构(,数据库名mydb)
mysqldump -uroot -p123456 -A -t > /data/backup/db.sql
1.5 备份单个数据库的结构
mysqldump -uroot -p123456 mydb -d > /data/backup/db.sql
1.6 备份单个数据库的数据
mysqldump -uroot -p123456 mydb -t > /data/backup/db.sql
1.7 备份多个表的数据和结构
mysqldump -uroot -p123456 mydb t1 t2 > /data/backup/db.sql
1.8 备份多个表的数据和结构
mysqldump -uroot -p123456 --databases db1 db2 > /data/backup/db.sql

2、还原 MySQL 备份内容

2.1 系统命令
mysql -uroot -p123456 < /data/backup/db.sql
2.2 使用系统命令登录mysql(mysql -uroot -p123456)
mysql> source /data/mysqlDump/mydb.sql

注意:
在使用 mysqldump 命令的时候,如果提示 -bash: mysqldump: command not found
解决方法:
可以找到你的 mysql 安装目录下面的 bin 目录
然后给 bin 目录下面的 mysqldump 建立一个软连接
eg:

ln -s /data/soft/mysql/install/mysql5.7/bin/mysqldump /usr/bin/mysqldump

3、编写备份命令脚本

#!/bin/bash#保存备份个数,备份24个月的数据
number=24
#备份保存路径
backup_dir=/data/backup/sql
#日期
dd=`date +%Y%m%d%H%M%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=123456
#将要备份的数据库
database_name=blog#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then     mkdir -p $backup_dir;
fi#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`if [ $count -gt $number ]
then#删除最早生成的备份,只保留number数量的备份rm $delfile#写删除文件日志echo "delete $delfile" >> $backup_dir/log.txt
fi

注意:
脚本中的换行符号要是 unix 的,如果是 windows 的会报错。

3、设置定时任务 (crontab)

3.1 使用yum命令安装Crontab
yum install vixie-cron 
yum install crontabs
注:vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
cron是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start #启动服务
/sbin/service crond stop #关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload #重新载入配置
3.2 查看Crontab状态
service crond status
ntsysv #查看crontab服务是否已设置为开机启动
chkconfig –level 35 crond on #加入开机自动启动
3.3 添加定时任务
crontab -e #编辑cron任务模式
i #默认文字编辑器为vim,按i字母键即可添加cron任务
0 0 1 * * /data/backup/sql/mysql_dump_script.sh #将命令代码放入,此命令意义为每天的03:30 重启apache
ESC #按ESC键退出编辑模式
:wq #键入:wq保存
service crond restart #重启crontab服务
3.4 查看任务列表
crontab -l

注意:
如果添加定时任务的时候出现

crontab: installing new crontab "/tmp/crontab.6ET70C":1: bad day-of-month errors in crontab file, can't install.

这个提示的时候,需要检查一下你的 cron 表达式是否正确,如果错误的话,就会出现这个提示。
eg:
0 0 1 * * crontab 的 cron 表达式是从 minute 分钟开始的,这里需要注意,可以使用 cat /etc/crontab 命令查看一下。

相关文章:

  • PowerBi中REMOVEFILTERS怎么使用?
  • 开源状态机引擎,在实战中可以放心使用
  • SAP 采购订单如何防止开票数量 大于 收货数量呢
  • 面向组织的网络安全措施
  • java并发编程-高性能内存队列
  • OpenVINO教程(二):图片目标检测推理应用
  • MySQL VS SQL Server:优缺点全解析
  • Unity3D 编辑器扩展开发指南
  • 基于大模型的贲门失弛缓症手术全流程风险预测与治疗方案研究
  • docker 国内源和常用命令
  • 【Ultralytics 使用yolo12 读取tiff 数据异常解决】
  • 实践项目开发-hbmV4V20250407-跨平台开发框架深度解析与VSCode一站式开发实践
  • 双向流-热-固耦合分析
  • 数据结构:链表
  • Vue中如何优雅地处理 `<el-dialog>` 的关闭事件
  • 【MQ篇】RabbitMQ之简单模式!
  • 第T9周:猫狗识别2
  • 机器学习基础 - 分类模型之逻辑回归
  • Linux kernel signal原理(下)- aarch64架构sigreturn流程
  • XHTMLConverter把docx转换html报java.lang.NullPointerException异常
  • 世界读书日|阅读在上海
  • 广西一季度GDP为6833.92亿元,同比增长5.8%
  • 耐克领跑女性运动市场:持续加码、创新,更多新增长点有望涌现
  • 经济日报刊文谈外卖平台仍试图凭补贴制造超低价:苦练内功摆脱“内卷式”竞争
  • 话剧《门第》将开启全国巡演:聚焦牺牲、爱与付出
  • 王东杰:重审康有为的“大同世界”