作者:荀彧(花名)


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

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

Working:三个步骤搞定。

Step 1: 准备两个文件

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

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

autobackupmysql_qas.shqas_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表示普通文件。

-mtime +10 按照文件的更改时间来查找文件,+10表示文件更改时间距现在10天以前;如果是 -mmin +10 表示文件更改时间距现在5分钟以前。

-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



若是每天三点执行,则:

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. 如何创建a '。sql的文件
  2. MySQL(Navicat)运行.sql文件时报错:[Err] 2006
  3. 有没有一种方法可以在不破坏外键依赖关系的情况下将MySQL数据库
  4. 如何将xml文件转换为mysql?
  5. 如何将CSV文件中的值实际分割为MySQL数据库
  6. linux下mysql配置文件my.cnf详解
  7. shell脚本中mysqldump的基本使用
  8. 使用Powershell对MySQL运行SQL脚本
  9. SQLSTATE [HY000] [2002]没有这样的文件或目录

随机推荐

  1. Ubuntu下搭建Android开发环境
  2. 提高数倍工作效率的Android(安卓)Studio
  3. Android启动画面的实现方法
  4. 破解Xamarin
  5. Android培训班(9)
  6. Android原生(Native)C开发之一(备份测试
  7. android 程序发布
  8. Android美工坊--底部菜单栏实现
  9. Android使用SharedPreferences保存List列
  10. Android(安卓)CTS 结果 testResult.xml