mysql mysqldum备份脚本

本篇文章主要讲如何使用壳实现mysql全量,增量备份。增量备份在周一——周六凌晨3点,会复制mysql-bin.00000 *到指定目录;而全量备份则使用,mysqldump将所有的数据库导出,每周日凌晨3点执,并会删除上周留下的mysq-bin.00000 *。然后对mysql的备份操作会保留在贝克。日志文件中。如下图:

开始:2013年05月02日15:10:57结束:2013年05月02日15:12:16 20130502. sql。tgz succ是由DBFullyBak.sh产生的,每周备份一次;mysql-bin。000001复制;mysql-bin。000002跳过!;2013年05月02日16:53:15 Bakup succ !则是由DBDailyBak.sh产生的,每天一次。

实现:

1。编写全量备份脚本


# vim/root/DBFullyBak。sh//添加以下内容

# !/bin/bash

# #项目,,每周使用mysqldump完全备份mysql数据!

# #历史,郭,2013-04-27,,第一个

# #路径,,....

BakDir=/home/mysql/备份日志文件

=/home/mysql/备份/bak。日志

日期=叭掌? % Y % m % d”

开始='日期+“% Y年% m月% d日% H: % m: % S”的

DumpFile=$ Date.sql

GZDumpFile=$ Date.sql。tgz

如果[!- d“BakDir美元”);然后

,,,,mkdir - p $ BakDir

fi

cd $ BakDir

/usr/地方/mysql/bin/, mysqldump -uroot -p123456——快——所有数据库——flush-logs,——delete-master-logs单一事务比;美元DumpFile

/bin/焦油czvf GZDumpFile DumpFile美元

/bin/rm DumpFile美元去年=

“日期+“% Y年% m月% d日% H: % m: % S”的

回声开始:美元开始结束:去年GZDumpFile美元成功! ! !在比;美元的日志文件

cd $ BakDir/每日rm - f *


2。编写增量备份脚本

#猫/root/DBDailyBak。sh//内容为下

# !/bin/bash

# #项目,,每天使用cp备份mysql数据!

# #历史,郭,2013-05-02,,第一个

# #路径,,....

BakDir=/home/mysql/备份/每日

BinDir=/数据/mysql

日志文件=/home/mysql/备份/bak.log

BinFile=/数据/mysql/mysql-bin。指数

如果[!- d“BakDir美元”);然后

,,,,mkdir - p $ BakDir

fi

/usr/地方/mysql/bin/mysqladmin -uroot -p123456 flush-logs

#这个是用于产生新的mysql-bin。00000 *文件

Counter=皐c - l $ BinFile | awk的{打印1美元}'

NextNum=0

#这个为循环用于比柜台,美元对美元NextNum这两个值来确定文件是不是存在或最新的。

文件,“猫BinFile美元”

,做,,,基?' basename美元文件'

,,,,#:用于截取mysql-bin.00000 *文件名,去掉。/mysql-bin.000005前面的。/

,,,,NextNum=expr NextNum + 1美元的

,,,,如果[$ NextNum eq $计数器]

,,,,然后

,,,,,,,,echo $基地跳过!,在在美元的日志文件

,,,,其他

,,,,,,,,dest=$ BakDir/$基地

,,,,,,,,如果(测试- e dest美元)

,,,,,,,,#测试- e用于检测目标文件是否存在,存在就写存在!到日志文件美元去。

,,,,,,,,然后

,,,,,,,,,,,,回声,美元基础存在!在比;美元的日志文件

,,,,,,,,其他

,,,,,,,,,,,,cp BinDir美元/基地BakDir美元

,,,,,,,,,,,,,回波基地复制比美元的在美元的日志文件

,,,,,,,,fi

,,,,fi

完成回声“日期+“% Y年% m月% d日% H: % m: % S”的美元未来Bakup成功!在比;美元的日志文件



3。设置crontab任务,每天执行备份脚本


复制代码代码如下:



# crontab - l//内容为下

#每个星期日凌晨三点执行完全备份脚本

0 3 0/root/DBFullyBak * *。sh在/dev/null 2祝辞,1

#周一到周六凌晨三点做增量备份

0 3 * * 1 - 6/root/DBDailyBak。sh在/dev/null 2祝辞,1


mysql mysqldum备份脚本