在网上找了很多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 上传成功!