文档章节

Linux定时备份MySQL数据库

月夜中徘徊
 月夜中徘徊
发布于 2018/08/16 00:25
字数 1405
阅读 89
收藏 11

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法

Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这个就可以设置定时任务去执行相应的操作。

所以,我们通过创建一个shell文件,把执行的命令放在里面,然后再用crontab去定时执行就可以达到我们想要的效果了。

接下来我们一步一步做。

 

一. 新建一个backup文件夹,用于存放我们的备份文件

     Linux系统里,home文件夹一般空间比较充足,可以用来存放我们的备份文件

cd /home
mkdir backup

 

二. 创建一个shell文件,命名为: bk_你的数据库名.sh(或者你自定义也行,最好语义化,一眼看得懂)

     假设为 bk_mydatabase.sh

vi bk_mydatabase.sh

 

三. 在这个shell文件里添加要执行的命令,即备份mysql数据库的命令,并保存

     注意:-u和-p后面接上你的mysql用户名和密码,不要带空格,数据库名就填你要备份的数据库名称

               这里备份的名称就是你的 数据库名称_备份的时间.sql ,方便查看是什么时候备份的

              crontab执行命令必须加上命令的全路径写全,比如我就加上了 “/usr/local/mysql/bin/” ,这里是我踩过的坑,没加全路径导出来的文件都是0KB,踩过就记住了

#!/bin/bash

/usr/local/mysql/bin/mysqldump -u用户名 -p密码 数据库名 > /home/backup/数据库名_$(date +%Y%m%d_%H%M%S).sql

    如果你要备份成压缩文件的话,可以写成下面这个命令

#!/bin/bash

/usr/local/mysql/bin/mysqldump -u用户名 -p密码 数据库名 | gzip > /home/backup/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz

    添加好后记得保存

 

四. 修改刚才的shell文件的权限

chmod u+x bk_数据库名.sh

 

五. 可以测试一下这个shell是否能执行,输入文件名即可直接执行

./bk_数据库名.sh

    执行后去backup文件夹里看看,是否有导出来的文件

 

六. 查看crontab是否安装(如果已安装则请略过

     先看看crontab是否安装了,一般都是安装好的,如果没安装,就先安装一下呗,安装命令如下(已安装的就不用管了

安装:

yum -y install vixie-cron
yum -y install crontabs


CentOS中添加开机自动启动:

chkconfig --level 345 crond on

 

七. 在crontab中设置定时任务

    输入以下命令进入crontab任务设置

crontab -e

    在里面添加以下命令

59 23 * * * /home/bk_数据库名.sh

   保存后,你的shell文件就会被定时执行了

   解释一下刚才添加的命令

   “ 59 23 * * * ”是crontab的时间规则,即执行周期,我写的这句解析后就是每天的 23:59 执行一次 home目录下的那个bk_数据库名.sh文件

   执行周期可以按照自己的需求来设定

 

   到此,我们就完成了每天23:59备份一次数据库到我们的home下的backup文件夹中的操作

 

 

八. crontab的格式(有兴趣的可以看看)

     它的格式共分为六个字段,前五个字段是时间设定段,第六段是要执行的命令段,格式如下:

      minute   hour   day   month   week   command     按顺序分别为:分   时   日   月   周

      minute: 表示分钟,可以是从0到59之间的任意整数。
      hour:表示小时,可以是从0到23之间的任意整数。
      day:表示日期,可以是从1到31之间的任意整数。
      month:表示月份,可以是从1到12之间的任意整数。
      week:表示星期几,可以是从0到7之间的任意整数,这里的0或7代表星期日。
      command:表示要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

     在以上的各个字段中,还可以使用以下几个特殊字符:

     星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的条件后每个月都执行该命令操作。
     逗号(,):用逗号隔开的值指定一个列表范围,例如,“1,3,5,7”。
     中杠(-):用整数之间的中杠表示一个整数范围,例如“3-7”表示“3,4,5,6,7”。
     正斜线(/):用正斜线指定时间的间隔频率,例如“0-23/5”表示每五小时执行一次。

     同时正斜线可以和星号一起使用,例如*/1,如果用在minute字段,表示每分钟执行一次。

     举几个栗子:

     1. 每分钟执行一次home下的set.sh命令

* * * * * /home/set.sh

     2. 每个星期日的上午6点到10点的第10和第30分钟执行一次home下的set.sh命令

10,30 6-10 * * 0 /home/set.sh

     3. 每周一,周三,周五,周日的上午6点到10点的第10和第30分钟执行一次home下的set.sh命令

10,30 6-10 * 1,3,5,7 0 /home/set.sh

 

© 著作权归作者所有

共有 人打赏支持
月夜中徘徊
粉丝 7
博文 36
码字总数 13351
作品 0
贵阳
私信 提问
加载中

评论(1)

天南地北单飞客
明天我就去试试
linux mysql 本地/远程备份

MySQL :: Linux 下自动备份数据库的 shell 脚本 Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库。其实非常简单,主要就是使用...

JavaGG
2010/03/24
714
0
MySQL数据库备份的10个教程

MySQL 是用于交互式网站开发的最为知名的开源数据库系统。如果你使用的 MySQL 数据库,你应当经常有规律地备份数据,以防数据丢失(译注:不管用什么类型的数据都得定期备份)。这里有10个自...

Neo_
2012/03/27
0
0
java web项目如何备份mysql数据库。

java web项目如何备份mysql数据库。 先说说,我想干什么:我想在java web项目运行时,定时备份数据库生成hello.sql,并将此文件放入到项目的主目录下。 我的项目使用了spring,spring mvc,hib...

change_solider
2014/07/12
2.3K
2
mysql内外网数据库数据同步问题

mysql内外网数据库数据同步问题 项目在内网虚拟机,linux系统,需要在连网时定时同步备份mysql数据库到外网. 有什么好的方案和工具吗?

lusi
2016/03/25
403
6
linux定时备份mysql数据库

利用crontab,系统每天定时备份mysql数据库 【内容提要】利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 利用系统crontab来定时执行备份文件,按日期对备份...

xiahuawuyu
2012/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cnetos7+docker+rancher构建基于DevOps的全自动CI【01】

来自DevOps实践分享,分享从开发代码到生产环境部署的一条龙操作的实践及经验, 包含工具技术的选型及考量、私有代码库与私有镜像库的应用等。 1、环境选择 安装Rancher环境,一定要在干净的...

Elson
刚刚
0
0
21分钟教会你分析MaxCompute账单

背景 阿里云大计算服务MaxCompute是一款商业化的大数据分析平台,其计算资源有预付费和后付费两种计费方式。并且产品每天按照project为维度进行计量计费(账单基本情况下会第二天6点前产出)...

zhaowei121
4分钟前
0
0
CTO职场解惑指南系列(一)

基于科技能够改变世界的事实,几乎每个公司的程序员都自带闪光灯。程序员的手和普通人的手自然是有区别的,“我们可是用双手改变了世界” 。(码农真的是靠双手吃饭,呵呵) 这个世界上但凡靠...

阿里云云栖社区
8分钟前
0
0
css实现图片自适应容器宽高

css实现图片自适应容器宽高的做法一般如下所示 <style>div{width: 200px; height: 200px}div img{width: 100%; height: 100%}</style><div><img src="xxxx.png" /></div> 当外层容......

小草先森
8分钟前
0
0
PlatON在CentOS上编译部署

本文作者为万向区块链CTO罗荣阁。 目录 PlatON在CentOS上编译部署 1. CentOS 环境准备 1.1. 使用rpm 安装devtoolset-7 1.2. 使用rpm 安装dos2unix 1.3. 准备PlatON代码 1.4. 确保build脚本正...

万向区块链
16分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部