mysqlhotcopy 通过ftp方式异地备份数据库

本文介绍了一种基于Shell脚本和Crontab的MySQL自动化备份方案,包括定期备份数据库、删除过期备份及通过FTP实现异地备份等核心功能。

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://liguxk.blog.51cto.com/129038/288461
实现功能:定期备份数据库,删除过期备份,通过ftp方式实现异地备份。
                      使用shell脚本配合crontab进行自动化备份。
 
备份环境:
mysql replication架构中的从机上进行备份
 
采用mysqlhotcopy原因:mysqlhotcopy方式,该方式在复制前先进行锁表,保证数据在同一刻一致性,复制完成后自动解锁。
 
在从机上备份的原因:在从机上执行,不影响WEB对主库的写操作。mysql replication 遇到锁表后暂停,当完成后根据relay-log日志继续与主库同步,同步正常
 
#!/bin/bash 
#this script for backup datebase 
#获取当前日期 
TODAY=$('date' +'%Y%m%d') 
#设定过期时间为7天 
EXPIRED=$('date' -d '-7 days' +'%Y%m%d') 
STOREDIR=/home/bak/ 
MYSQLHOTCOPY=/usr/local/mysql/bin/mysqlhotcopy 

#######################    Backup and compress databases ################################### 
#需要备份的数据库列表 
database=(db1 db2 db3 db4 …… dnn) 

echo "Copy Database start time :" > /info.txt 
echo $('date' '+%Y-%m-%d %H:%M:%S') >> /info.txt 
echo "" >> /info.txt 
echo "File size as follows" >> /info.txt 

rm -rf /home/bak/* 

for i in ${database[*]} 
do 
$MYSQLHOTCOPY -u=用户名 -p=密码 $i /home/bak/ 
du -sh /home/bak/$i >> /info.txt 
done 

echo "" >> /info.txt 
echo "" >> /info.txt 
echo "Total sizes:" >> /info.txt 

#######################     Tar databases         ############################################### 
du -sh /home/bak >> /info.txt 
cd /home 
#对备份文件进行压缩 
tar czf bak.tar.gz bak 
du -sh /home/bak.tar.gz >> /info.txt 
echo "" >> /info.txt 
echo "Upload file time :" >>/info.txt 
echo $('date' '+%Y-%m-%d %H:%M:%S') >> /info.txt 

########################    Upload file to ftp server    ###################################### 
ftp -v -n ftp服务器IP << END 
user ftp用户名 密码 
binary 
hash 
#创建新的日期文件夹 
mkdir $TODAY 
cd $TODAY 
lcd /home 
prompt 

#删除过期数据及文件夹 
mput bak.tar.gz 
cd /$EXPIRED 
mdelete bak.tar.gz 
cd ../ 
rmdir $EXPIRED 
close 
bye 
END 

######################    Send mail Report ################################################## 
echo "" >> /info.txt 
echo "Complete time is:" >> /info.txt 
echo $('date' '+%Y-%m-%d %H:%M:%S') >> /info.txt 
mail -s "DataBase backup Report" liguxk@126.com < /info.txt
本文出自 “ 寒.枫” 博客,请务必保留此出处 http://liguxk.blog.51cto.com/129038/288461

本文转自holy2009 51CTO博客,原文链接:http://blog.51cto.com/holy2010/310773

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值