Linux上MySQL数据库的定期备份

597 阅读3分钟

本文正在参与 “走过Linux 三十年”话题征文活动

前言

不知不觉间,Linux陪伴无数的开发者走过了三十年。在这三十年里,基于Linux内核的不同操作系统譬如Redhat、CentOS、Fedora深入我们的工作与生活当中,我们也或多或少的受益于linux给我们带来的不同程度的便利。在Linux系统之上,我们从事着大量的日常开发工作,下面我们来学习下如何在Linux上进行Mysql数据的日常备份任务。

编写备份脚本

首先第一步,新建我们的备份脚本
vi /home/backup/bkDatabase.sh
里面的内容很简单,就是利用mysqldump命令将我们需要备份的数据库进行备份,生成sql脚本到我们指定的目录下,具体命令参考如下:

#!/bin/bash
mysqldump -uroot -p数据库密码 --databases 要备份的数据库名称 要备份的表名  > /home/backup/asset_manage_$(date +%Y%m%d_%H%M%S).sql

编写好脚本以后保存退出即可。 

利用centos7的crontab功能

接下来,我们需要借助Linux的定时任务功能,也就是crontab。关于crontab命令网上有很多讲解,下面主要介绍下它的主要功能和一些具体语法。crontab其实是cron table的简写,他是cron的配置文件,同时也是作业列表。这和windows下的计划任务类似,可以用来周期性的执行某些任务。一般系统都会带有该命令,如果没有,我们可以通过yum install crontabs命令进行安装,我们也可以通过如下命令启动或者管理crontab服务。

  • systemctl status crond ##查看服务状态
  • systemctl start crond ##启动服务
  • systemctl stop crond ##停止服务
  • systemctl restart crond ##重启服务
  • systemctl reload crond ##重新载入配置 关于crontab的命令格式如下
Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]

Options:
 -u <user>  用来设定某个用户的crontab服务;`file`:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
 -e         编辑某个用户的crontab文件内容。
 -l         显示某个用户的crontab文件内容。
 -r         从/var/spool/cron目录中删除某个用户的crontab文件。
 -i         删除文件之前请确认
 -n <host>  将集群中的主机设置为运行用户的crontab
 -c         让群集中的主机运行用户的crontab

接下来我们执行命令 crontab -e来编辑我们的任务,内容添加,示例为每天23:00定时执行脚本文件进行备份: 00 23 * * * /home/backup/bkDatabase.sh 然后保存退出即可。

image.png
我们看下刚才编写的内容是否生效: crontab -l

image.png
可以看到我们编写的内容已经成功写入,我们重启下服务,然后看下对应目录是否有生成我们的文件。因为我们设置的时间是每天23:00,为了方便查看效果,我们可以换成更短的时间。

image.png
如图,可以看到我们的定时任务已经成功了。

总结

通过上面的数据库备份的功能,我们大概了解crontab的使用,其实我们的日常工作还有很多地方都可以利用crontab来便利我们的操作。