百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> CentOS自动备份mysql并上传到远程ftp脚本
分享文章到:

CentOS自动备份mysql并上传到远程ftp脚本

发布时间:01/15 来源: 浏览: 关键词:
CentOS自动备份mysql的方法很多很多我随便就找到几个利用shell写的非常不错的一些脚本了,下面我整理一下希望对各位朋友会帮助

一,定时备份mysql数据库

安全起见,直接用Root执行的:

 代码如下

/root/mysql_backup.sh
# everyday 3:00 AM execute database backup
3 0 * * * /root/mysql_backup.sh

以下是自动自动备份shell,只保留最新5天

 代码如下

#!/bin/sh 
# mysql_backup.sh: backup mysql databases and keep newest 5 days backup. 

# db_user is mysql username 
# db_passwd is mysql password 
# db_host is mysql host 
# —————————– 
db_user="root" 
db_passwd="zhoz.com" 
db_host="localhost" 

# the directory for story your backup file. 
backup_dir="/home/zhozdbbackup" 

# date format for backup file (dd-mm-yyyy) 
time="$(date +"%d-%m-%Y")" 

# mysql, mysqldump and some other bin's path 
MYSQL="/usr/bin/mysql" 
MYSQLDUMP="/usr/bin/mysqldump" 
MKDIR="/bin/mkdir" 
RM="/bin/rm" 
MV="/bin/mv" 
GZIP="/bin/gzip" 

# check the directory for store backup is writeable 
test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0 

# the directory for story the newest backup 
test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/" 

# get all databases 
all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')" 
for db in $all_db 
do 
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz" 
done 

# delete the oldest backup 
test -d "$backup_dir/backup.5/" && $RM -rf "$backup_dir/backup.5" 

# rotate backup directory 
for int in 4 3 2 1 0 
do 
if(test -d "$backup_dir"/backup."$int") 
then 
next_int=`expr $int + 1` 
$MV "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int" 
fi 
done 
exit 0;

上面备份不会自动上传到ftp服务器了,我们可以参考下面实例


二,自动备份mysql并上传到远程ftp脚本


生产需要,在centos 5.4下自动备份mysql数据库并上传到远程ftp,花了点时间,脚本如下:

 代码如下

#!/bin/bash
#auto ftp bakup
#by xhat 2010.06.08

#要备份的数据库
DBName=wwwdbname

#ftp账号信息
ftphost="test.com"
ftpuser=username
ftppass=passwd

#mysql账号信息
DBUser=root
DBPasswd=123456

BackupPath=./

NewFile="$BackupPath"db$(date +%y%m%d).tar.gz
DumpFile="$BackupPath"db$(date +%y%m%d).sql
OldFile="$BackupPath"db$(date +%y%m%d --date='1 days ago').tar.gz
#LogFile="$BackupPath"db$(date +%y%m%d --date='1 days ago').txt

echo "---------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "---------------------------"

#删除
if [ -f $OldFile ]; then
rm -f $OldFile
echo "[$OldFile]Delete Old File Success!"
fi

#新
if [ -f $NewFile ]; then
echo "[$NewFile] 已经存在,不再备份! "
else
/opt/mysql/mysqldump -u$DBUser -p$DBPasswd $DBName > $DumpFile
sleep 5
tar czvf $NewFile $DumpFile
rm $DumpFile -rf
echo "[$NewFile]备份成功"
fi

echo "打开ftp"
ftp -i -in < open $ftphost 21
user $ftpuser $ftppass
cd /
mput *.tar.gz
bye
!

echo "备份完成"

完成上面脚本后,在crontab里面加入每天凌晨定时执行即可。

 代码如下
10 3 * * * /opt/bak/mybak

小结

其实方法一我们可以使用rsync同步来进行同步己经备份好的数据,在ftp与rsync相比rsync性能与稳定性是ftp无法比较的。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有5人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板