天天看点

mysqldump结合脚本的备份方案

1、备份脚本的简介

脚本分为两个部分,主控脚本与备份子脚本。

1.1、备份子脚本

-完成mysql基本的备份功能

-自动日期时间命名备份文件(不产生重复名称的备份)

-提供压缩(节省大量的空间)

1.2、主控脚本

-调用备份子脚本(代码复用)

-清理mysql旧的备份文档(可定义多少天内的保留)

2、生成备份脚本

2.1、创建脚本目录

1

<code>mkdir</code> <code>~</code><code>/script/</code>

2.2、备份子脚本代码

vim编辑~/script/dbBack.sh

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<code>#!/bin/bash</code>

<code>user=$1</code>

<code>passwd</code><code>=$2</code>

<code>dbName=$3</code>

<code>bkDir=$4</code>

<code>dt=$(</code><code>date</code> <code>+</code><code>"%Y-%m-%d_%H%M%S"</code><code>)</code>

<code>dbBkName=$dbName-$dt.sql</code>

<code>if</code> <code>[ $dbName == </code><code>'--all-databases'</code> <code>]; </code><code>then</code>

<code> </code><code>dbBkName=</code><code>"all-databases-"</code><code>$dt.sql</code>

<code>fi</code>

<code>#echo $user</code>

<code>#echo $passwd</code>

<code>#echo $dbBkName</code>

<code> </code><code>mysqldump -u$user -p$</code><code>passwd</code> <code>--all-databases &gt; $bkDir$dbBkName</code>

<code>else</code>

<code> </code><code>mysqldump -u$user -p$</code><code>passwd</code> <code>$dbName &gt; $bkDir$dbBkName</code>

<code>tar</code> <code>-zcvf $bkDir$dbBkName.</code><code>tar</code><code>.gz $bkDir$dbBkName</code>

<code>rm</code> <code>-rf $bkDir$dbBkName</code>

2.3、主控脚本代码

2.3.1 单库备份

vim编辑~/script/dbMan.sh

<code>bkDir=</code><code>/var/lib/backup/</code>

<code>wkDir=~</code><code>/script/</code>

<code>user=mysql_user </code><code>#数据库的用户名</code>

<code>passwd</code><code>=mysql_password </code><code>#数据库的密码</code>

<code>saveTime=7 </code><code>#多少天之内的保留,7天之外的删除</code>

<code>if</code> <code>[ ! -d $bkDir ]; </code><code>then</code>

<code> </code><code>mkdir</code> <code>-p $bkDir</code>

<code>cd</code> <code>$wkDir</code>

<code>sh dbBack.sh $user $</code><code>passwd</code> <code>db1 $bkDir</code>

<code>sh dbBack.sh $user $</code><code>passwd</code> <code>db2 $bkDir</code>

<code>cd</code> <code>$bkDir</code>

<code>#find -name "*.gz" -ctime +$saveTime -exec ls {} \;</code>

<code>find</code> <code>-name </code><code>"*.gz"</code> <code>-ctime +$saveTime -</code><code>exec</code> <code>rm</code> <code>-rf {} \;</code>

注:修改13-14行备份数据库db1、db2

2.3.2 备份所有的库

<code>sh dbBack.sh $user $</code><code>passwd</code> <code>--all-databases $bkDir</code>

注:13行备份所有的数据库

3、使用脚本

编辑计划任务:

<code> </code><code>crontab</code> <code>-e</code>

加入如下内容:

<code>0 *</code><code>/1</code> <code>* * * sh  ~</code><code>/script/dbMan</code><code>.sh</code>

以上1个小时产生一个备份

本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1713247,如需转载请自行联系原作者