MySQL自动备份并上传到远程FTP服务器脚本


在网上找了很多MySQL备份脚本,但是没有几个令我钟意的,要么出错要么我自己也看不懂。庆幸自己是个码农,shell脚本学习了半个下午,终于写出了一个备份mysql数据库并上传到远程FTP的脚本了,刚学习,不知道写的怎么样,但是功能已经实现了。嘿嘿,来分享给大家。

#!/bin/sh 
#backup for mysql to remote ftp
#author jxcent@gmail.com 2012-12-17 17:30:23

#数据库配置信息
dbname=test
dbuser=root
dbpwd=123456

#ftp配置
ftphost=192.168.1.188
ftpport=21
ftpuser=demo
ftppwd=demo123
#这个就是FTP根目录下的data文件夹,表示就保存在这里
ftpdir=/data
#自定义生成文件名 test_2012-12-17.tar.gz
filename=${dbname}_`date "+%Y-%m-%d"`;
#备份路径,你需要改变它哦~
BackupPath=/usr/home/dbfile
DBbinPath=/usr/local/bin/mysqldump
#执行mysqldump 生成sql文件
${DBbinPath} --opt --extended-insert=false -u${dbuser} -p${dbpwd} ${dbname} > ${BackupPath}"/"${filename}".sql" ;

cd ${BackupPath}
rm -rf *.gz
tar czf ${filename}.tar.gz  ${filename}.sql
rm -rf ${filename}.sql 

#开始连接远程ftp
echo 'open ftp'
ftp -i -in <<!
open ${ftphost} ${ftpport}
user ${ftpuser} ${ftppwd}
cd ${ftpdir}
mput ${filename}.tar.gz
echo 'backup is complete!'
exit
fi

望拍砖~

写好了有些东东童鞋要自己修改下哦,比如我保存在/usr/home/dbfile/backup.sh,当然你要注意给这个脚本可执行权限,不然它可跑不起来哦

chmod 755 /usr/home/dbfile/backup.sh

设置计划任务让其每天凌晨0点自动备份数据

vi /etc/crontab

在最后添加如下一行

0 0 * * *  root  /usr/home/dbfile/backup.sh

就搞定了,你就每天安心睡觉吧~嘿嘿
ps:centos在6.0以后的版本默认ftp命令使用不了,你需要执行下面这条命令更新

rpm -Uvh http://mirror.centos.org/centos/6.3/os/x86_64/Packages/ftp-0.17-51.1.el6.x86_64.rpm

#如果出现404你也可以运行这条命令安装ftp

yum install ftp

在centos下面会出现警告,但是没有问题,请放心使用就行!嘻嘻~


后面有那么几天也研究了windows下面的mysql数据库备份啦,直接贴上代码了,是一个批处理,你自己把它加入到操作系统的计划任务中就OK了。

 

#数据库配置
@set dbname=demo
@set dbuser=root
@set dbpass=123456
@set tmp_db_file="F:\back\%dbname%\%date:~0,4%%date:~5,2%%date:~8,2%.sql"
@set db_back_file="F:\back\%dbname%\%date:~0,4%%date:~5,2%%date:~8,2%.7z"

#ftp配置
@set ftp_server=192.168.1.110
@set ftp_user=demo
@set ftp_password=pojo
@set ftp_dir=temp #目录相对于/来划分 /temp/demo 就填写 temp/demo

#当你在使用mysqldump的时候请主要设置成你的环境变量,否则你就写全它吧
mysqldump -u %dbuser% -p %dbpass%  %dbname% >%tmp_db_file%
#我用7z压缩的你也可以使用winrar进行打包压缩,看个人喜好了
c:\progra~1\7-Zip\7z a %db_back_file% %tmp_db_file%
del %tmp_db_file% /S /Q

@echo off
echo open %ftp_server%>ftp.txt
echo %ftp_user%>>ftp.txt
echo %ftp_password%>>ftp.txt
#更改你的FTP
echo cd %ftp_dir%>>ftp.txt

#如果你上传的ftp文件出现MD5不对请使用二进制上传
echo binary>>ftp.txt

echo put %db_back_file%>>ftp.txt
echo bye>>ftp.txt
ftp -s:ftp.txt
echo 上传成功!

 


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

评论审核已启用。您的评论可能需要一段时间后才能被显示。