日期:2014-05-16  浏览次数:20513 次

XtraBackup结合crontab定时备份innodB

mysql-full-backup.sh

?

#!/bin/bash
export MYSQL_HOME=/usr/local/Percona-Server-5.5.21-rel25.0-227.Linux.x86_64/
export PATH=$MYSQL_HOME/bin:$PATH

mysql_backup_dir=/data/backup/mysql/
mysql_username="YOURS"
mysql_password="YOURS"

cd $mysql_backup_dir
lastincrementfolder=`ls -l|grep ^d|tail -n 1 | awk '{print $9}'`
timeStart=$(date '+%Y%m%d%H%M%S')
logfile=full-$timeStart.log
innobackupex --user=$mysql_username --password=$mysql_password $mysql_backup_dir 2> "$logfile" 

?

mysql-incremental-backup.sh

?

#!/bin/bash
export MYSQL_HOME=/usr/local/Percona-Server-5.5.21-rel25.0-227.Linux.x86_64/
export PATH=$MYSQL_HOME/bin:$PATH

mysql_backup_dir=/data/backup/mysql/
mysql_username="YOURS"
mysql_password="YOURS"

cd $mysql_backup_dir
lastincrementfolder=`ls -l|grep ^d| tail -n 1 | awk '{print $9}'`
timeStart=$(date '+%Y%m%d%H%M%S')
logfile=increment-$timeStart.log
innobackupex --incremental $mysql_backup_dir --incremental-basedir=$lastincrementfolder --user=$mysql_username --password=$mysql_password 2> "$logfile"

?

注意里面的

?

export PATH=$MYSQL_HOME/bin:$PATH

?

不加的话报mysql,innobackupex等 command not found!

?

以上两个脚本放在/usr/local/scripts/ 目录下,接下来配置crontab

?

crontab -e

添加以下内容:

0  2 * * 1-6 sh /usr/local/scripts/mysql-incremental-backup.sh
0  2 * * 0   sh /usr/local/scripts/mysql-full-backup.sh

然后使用vi的保存命令(ZZ,或者:wq)保存 !

?

意思是每周一到周六的02:00执行一次增量备份,每周日02:00执行一次全量备份。

下面是crontab的时间格式,备忘用。

?

含义

取值范围

第一段

代表分钟

0—59

第二段

代表小时

0—23

第三段

代表日期

1—31

第四段

代表月份

1—12

第五段

代表星期几,0代表星期日

0—6

?

附几个网上找的例子:


● 0 */2 * * * /sbin/service httpd restart? 意思是每两个小时重启一次apache

● 50 7 * * * /sbin/service sshd start? 意思是每天7:50开启ssh服务

● 50 22 * * * /sbin/service sshd stop? 意思是每天22:50关闭ssh服务

● 0 0 1,15 * * fsck /home? 每月1号和15号检查/home 磁盘

● 1 * * * * /home/bruce/backup? 每小时的第一分执行 /home/bruce/backup这个文件

● 00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} /;? 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。


● 30 6 */10 * * ls? 意思是每月的1、11、21、31日是的6:30执行一次ls命令