原理:主服务器将需要备份好的数据打包好 , 然后通过ftp上传到备份服务器中 ,从而达到数据备份。
1、 首先配置好备份服务器的vsfptd , 备份服务器的ip是192.168.232.166
[root@localhost ~]#yum install vsftpd –y //配置vsftpd的配置文件 [root@localhost ~]## vim /etc/vsftpd/vsftpd.conf
local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YE
//关闭防火墙 [root@localhost ~]# iptables –F //启动vsftpd [root@localhost ~]# service vsftpd start [root@localhost ~]# chkconfig --add vsftpd [root@localhost ~]# chkconfig vsftpd on //添加用户登录的用户smister , 密码为123456 [root@localhost ~]# useradd smister [root@localhost ~]# passwd smister
2、 配置主服务器
//安装ftp登录客户端 [root@localhost ~]# yum install ftp –y // 测试登录 [root@localhost ~]# ftp 192.168.232.166 smister 123456 >bye
//编写一些shell用于每天备份数据 [root@localhost ~]# vim ~/bakup.sh
#!/bin/bash #备份脚本 #服务器的ip及其登录账号密码 HOST='192.168.232.166' USER="smister" PASS="123456" #只保存7天内的数据 OLDDATE=`date -d "-7day" +"%Y%m%d"` DATE=`date +"%Y%m%d"` TARNAME="smister_${DATE}.tar.gz" RMTAR="smister_${OLDDATE}.tar.gz" #主服务器打包数据存放的路径 BACKUPPATH="/var/backup/" #主服务打包的数据路径 TARPATH="/usr/html/" #切换到打包存放路径 cd $BACKUPPATH #打包数据 tar -zcvf $TARNAME $TARPATH &> /dev/null #通过ftp传输备份数据 ftp -i -n -v <<! open ${HOST} user ${USER} ${PASS} bin delete ${RMTAR} put ${TARNAME} bye ! #删除主服务器的备份文件 rm –rf $TARNAME #注意:open是连接对方的ftp , user是输入账号密码 , delete七天前的数据 , put是上传刚备份的数据 , bye 是断开ftp
//将脚本加入到crontab中 , 每天执行一次 [root@localhost ~]# crontab –e 0 1 * * * /root/backup.sh &> /var/backup.log
3、就这样 , 一个简单的通过vsftpd的配置就好了 , 请根据的需要对脚本进行调节
4、Mysql导出并且利用ftp备份
由于是内部开发环境,密码设置得比较简单,如果要将其移植到自己的公网服务器上,还要在安全方面注意一下。另外附带说明一下,--opt只是一个快捷选项,等同于同时添加--add-drop-tables--add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset选项。本选项能让mysqldump很快地导出数据,并且导出的数据可以很快导回。该选项默认是开启的,但可以用--skip-opt禁用。注意,如果运行mysqldump没有指定--quick或--opt选项,则会将整个结果集放在内存中。如果导出的是大数据库则可能会出现问题。
#!/bin/bash #backup for mysql USER='smister' PASS='123456' DATE=`date +"%Y%m%d"` OLDDATE=`date -d "-7days" +"%Y%m%d"` BACKPATH="/var/backup" MYSQLDUMP="/usr/local/mysql/bin/mysqldump" SOCKET="/tmp/mysql.sock" [ -d "${BACKPATH}/${DATE}" ] || mkdir -p "${BACKPATH}/${DATE}" for DBNAME in mysql test ; do ${MYSQLDUMP} --opt -u${USER} -p${PASS} -S${SOCKET} ${DBNAME} | gzip > ${BACKPATH}/$DATE/${DBNAME }-${DATE}-backup.sql.gz /bin/sleep 5 done HOST=192.168.232.166 FTP_USER="smister" FTP_PASS="123456" cd "${BACKPATH}/${DATE}" ftp -i -n -v <<! open ${HOST} user ${FTP_USER} ${FTP_PASS} bin cd ${OLDDATE} mdelete * cd .. rmdir ${OLDDATE} mkdir ${DATE} cd ${DATE} mput * bye !
版权声明:未经博主允许不得转载。http://www.smister.com/post-26.html