作者:荀彧(花名)

Background:鉴于QAS数据库曾遭到毁灭性损害。极其桑心L。为了避免这样的玉石俱焚的状况再度发生。于是我们找出了一种应对方案。这里给大家分享一下怎样实现定时备份mysql数据库的脚本。

Target:每天对QAS数据库进行数据及表的备份而且删除掉10天之前的备份文件。

Working:三个步骤搞定。

Step 1: 准备两个文件

建备份目录qas_db_bak,建脚本文件autobackupmysql_qas.sh

[root@vm***** wewang]# ls

autobackupmysql_qas.sh qas_db_bak

打开脚本文件:

[root@vm***** wewang]# vi autobackupmysql_qas.sh

在脚本中加入内容:

#!/bin/bash

backupdir=/home/**/wewang/qas_db_bak

Now=$(date +"%Y-%m-%d--%H:%M:%S")

/usr/bin/mysqldump -u ghs -pacxiom qas|gzip > $backupdir/qas_bak_$Now.sql.gz

find $backupdir -name "qas_bak_*.sql.gz" -type f -mtime +10 -exec rm {} \; > /dev/null 2>&1

:wq 返回退出后,对文件进行运行权限的更改。保证脚本能够被运行:

[root@vm***** wewang]# chmod +xautobackupmysql_qas.sh

截图例如以下:

解析:

name:自己定义备份文件前缀标识。

-type f    表示查找普通类型的文件。f表示普通文件。

天曾经;假设是
-mmin +10 分钟曾经。

-exec rm {} \;   表示运行一段shell命令。exec选项后面尾随着所要运行的命令或脚本。然后是一对儿{
},一个空格和一个\。最后是一个分号。

/dev/null 2>&1  把标准出错重定向到标准输出,然后扔到/DEV/NULL以下去。通俗的说。就是把全部标准输出和标准出错都扔到垃圾桶里面;当中的&表示让该命令在后台运行。

Step 2: 更改定时运行脚本,这里有两种case:

Case 1: 普通情况。打开自己主动运行文件 /etc/crontab,在crontab文件里增加例如以下内容,让其自己主动运行任务

[root@vm10074 wewang]# vi /etc/crontab

加入例如以下代码:

这里的样例是每小时26分的时候运行:

26 * * * * root /home/**/wewang/autobackupmysql_qas.sh

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

若是每天三点运行,则:

00 3 * * * root /home/**/wewang/autobackupmysql_qas.sh

Case 2: Redhat情况。(也就是当前用的Linux系统)将刚才编辑的脚本拷贝到对应的文件夹就可以

[root@vm***** wewang]# cp autobackupmysql_qas.sh /etc/cron.daily/

截图例如以下:

解析: 这里是每天4点28分左右才运行,可是这个job运行的时间也是随机的。

Redhat的crontab採用按时间调用4个文件夹(

/etc/cron.hourly:每小时;

/etc/cron.daily:每天;

/etc/cron.weekly:每周。

/etc/cron.monthly:每月)中脚本出来执行的方式。

Step 3: 重新启动etc

[root@vm10074 wewang]# /etc/rc.d/init.d/crondrestart

Stopping crond:                                            [  OK  ]

Starting crond:                                           [  OK  ]

定时备份的效果例如以下:

Ps: 假设想要解压查看,则通过命令查看:gunzip -c qas-bak-2015-07-30--04:29:02.gz > 1.bak

最新文章

  1. 以前写的一段aop,远程接口调用的日志。
  2. asp.net mvc web api 可跨域方法
  3. [2015hdu多校联赛补题]hdu5297 Y sequence
  4. Java多线程中的进程,线程,并行,并发
  5. Android学习笔记④——页面的布局方式
  6. 理解Java对象序列化(二)
  7. 今天是程序员节(Programmer‘s Day)
  8. SDL实现限制帧速
  9. c语言: inline(gcc)
  10. Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)
  11. kickstart 实现批量安装centos7.x系统
  12. vue-cli 构建的项目中 如何使用less
  13. mybatis逆向工程失败
  14. Oracle的条件in中包含NULL时的处理
  15. web@css样式进阶--图形字体、动画、显隐....
  16. [Full-stack] 快速上手开发 - React
  17. OpenGL编程-第一个程序-画出一个正方形
  18. cdh 安装系列1-- manager 6.01 安装
  19. WPF中触发器(Trigger、DataTrigger)使用动画最简单的方式EnterActions和ExitsActions
  20. Hibernate(五)

热门文章

  1. LeetCode.884-两句话中不常见的单词(Uncommon Words from Two Sentences)
  2. Springboot 版本+ jdk 版本 + Maven 版本的对应关系
  3. WPF TextBox 仅允许输入数字
  4. 5.26 Quartz任务调度图解
  5. 在C#程序中,创建、写入、读取XML文件的方法
  6. HTML链接用法
  7. 利用MediaSession发送信息到蓝牙音箱
  8. (转) OpenLayers3基础教程——加载资源
  9. spring 回顾
  10. 微信小程序 请求超时处理