一个简单的MySQL备份脚本

shell脚本 struggling 1477次浏览 0个评论
<code>
#!/bin/bash
#this is a script of mysql backup 
if [ ! -d /mydata/data1/backup ] ;then 
	 mkdir /mydata/data1/backup
fi
cd /mydata/data1/backup
file=$(find . -type f -mtime -7 | grep .*all.sql)    #查找7天内是否有备份的文件
echo  $file
if [  -z $file ] ;then 
	echo  "backup all databases..."
	backupfile=$(date +%F-%H-%M-%S)
	mysqldump -uroot  --lock-all-tables --flush-logs --master-data=2 --all-databases > /mydata/data1/backup/"$backupfile-all.sql"
	if [ $? -eq 0 ] ;then
		echo "Accomplish,file is $backupfile-all.sql !"
	else 
		echo " Failure !!! "
	fi

else                                      #查找倒数第二大的二进制文件,作增量备份

	cd ..
	echo "All database backups ,now start doing incremental backups!"
        a=1 
        b=1 
        for file in $(ls |grep mysql-bin |grep -v index);do
                num=$(echo $file |cut -d. -f2 )
                if [ $num -gt $a ];then
                        a=$num
                fi  
        done
        unset num  file
        num=1   
        for file in $(ls |grep mysql-bin |grep -v index);do
                num=$(echo $file |cut -d. -f2 )
                if [ $num -gt $b -a  $num  -ne $a ] ; then
                        b=$num
                        tmp=$file
                fi  
        done
        file1=$(echo $tmp|cut -d. -f1)
        file2=$(echo $tmp|cut -d. -f2)
        mysqlbinlog $tmp > /mydata/data1/backup/"$file1-$file2.sql"
	if [ $? -eq 0 ] ;then 
		echo  "Backup completed,file is "$file1-$file2.sql""
	fi
fi

</code>

说明:此脚本每七天做一次完全备份,以后每天做一次增量备份,完全备份使用mysqldump客户端工具,增量备份使用mysqlbinlog备份其二进制日志文件。


DevOps-田飞雨 》》转载请注明源地址
喜欢 (0)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址