原理:主服务器将需要备份好的数据打包好 , 然后通过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://smister.com/post-26.html