2016122402333565538.jpg  

原理:主服务器将需要备份好的数据打包好 然后通过ftp上传到备份服务器中 ,从而达到数据备份。

 

1、  首先配置好备份服务器的vsfptd , 备份服务器的ip192.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