• 系统集群架构(5)


    写在前面

      今天介绍项目后期的全网数据备份规划与配置过程,整个过程包括备份规划、脚本编写、数据同步等

     

    01全网数据备份规划

    数据备份规划如下

    数据库

    从库开启binlog,通过全备与增量备份来进行,每天00:00全备一次,每天12:00增量备份一次,初期数据量不大的情况,后期根据数据量进行调整

    本地备份目录

    /server/backup/mysql/data

    /server/backup/mysql/binlog

     

    FTP数据

    实时同步上传数据,防止服务故障,可以快速切换

    /www/ftp 同步至 /www/ftp

     

    其它服务器数据实行实时同步

    比如说配置文件备份、代码包备份

    本地备份目录

    /server/backup/app

    /server/backup/sjapp

    /server/backup/admin

    /server/backup/shangjia

    /server/backup/web

     

    所有数据本地保留一周,远端备份服务器保留30天

     

    02数据库服务备份配置

    mkdir /server/backup/mysql/data

    mkdir /server/backup/mysql/binlog

    mkdir /server/scripts/

                           

     

     

    脚本写好了,就需要写个定时任务定时执行,然后手工检查

    Cat>>/var/spool/cron/root<<EOF

    00 00 * * * /bin/sh /server/scripts/fullbak.sh >/dev/null 2>&1

    00 12 * * * /bin/sh /server/scripts/binlog_bak.sh >/dev/null 2>&1

    EOF

     

    03静态资源服务器数据同步

    同步服务器创建对等目录

    mkdir /www/ftp 

    安装rsync服务

    Yum install rsync –y

    配置rsync配置文件

    vim /etc/rsyncd.conf

    ##rsync.conf config start

    uid = rsync

    gid = rsync

    use chroot = no

    max connetctions = 200

    timeout = 100

    pid file = /var/run/rsyncd.pid

    lock file = /var/run/rsync.lock

    log file = /var/log/rsyncd.log

    [backup]

    path = /www/ftp

    ignore errors

    read only = false

    list = false

    hosts allow = 10.0.0.8

    auth users = rsync_backup

    secrets file = /etc/rsync.password

    ##rsync config  end

    创建用户 

    useradd rsync -s /sbin/nologin -M

    配置权限设置密码

    chown -R rsync:rsync /www/ftp

    echo "rsync_backup:rsync.conf">/etc/rsync.password

    chmod 600 /etc/rsync.password

    启动服务

    rsync –daemon

    [root@resources ~]# netstat -lntup|grep rsync

    tcp  0 0 0.0.0.0:873  0.0.0.0:*  LISTEN  26280/rsync

    客户端配置密码

    echo "rsync.conf">/etc/rsync.password

    chmod 600 /etc/rsync.password

    测试手工同步数据是否成功

    [root@resources ~]# rsync -avzP /etc/hosts rsync_backup@10.0.0.11::backup --password-file=/etc/rsync.password

    sending incremental file list

    hosts

    473 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)

    sent 314 bytes  received 27 bytes  682.00 bytes/sec

    total size is 473  speedup is 1.39

    [root@ftp-bakserver ~]# ll /www/ftp

    total 4

    -rw-r--r-- 1 rsync rsync 473 May 26 13:24 hosts

    客户端安装sersync服务

    tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/

    [root@resources ~]# cd /usr/local/

    [root@resources local]# mv GNU-Linux-x86 sersync

    规范文件目录

    [root@resources sersync]# mkdir -p conf bin logs

    拷贝配置文件并修改

    [root@resources sersync]# mv confxml.xml conf/

    [root@resources sersync]# mv sersync2 bin/sersync

    修改配置文件内容(confxml.xml)

    1、修改24-28行

    <localpath watch="/opt/tongbu">

     <remote ip="10.0.0.11" name="tongbu1"/>

     <!--<remote ip="192.168.8.39" name="tongbu"/>-->注释内容

     <!--<remote ip="192.168.8.40" name="tongbu"/>-->注释内容

            </localpath>

    修改后的内容为

     <localpath watch="/www/ftp"> 本地数据的路径

      <remote ip="10.0.0.11" name="backup"/>远端IP与模块名称

             </localpath>

     <!#################################### -->注释内容

    2、修改31-34行内容——认证

    <commonParams params="-artuz"/>

    <auth start="false" users="root" passwordfile="/etc/rsync.pass"/>

    <userDefinedPort start="false" port="874"/><!-- port=874 -->

    <timeout start="false" time="100"/><!-- timeout=100 -->

    <ssh start="false"/>

    修改后的内容为

    <commonParams params="-aruz"/>

    <auth start="true" users="rsync_backup"  passwordfile="/etc/rsync.password"/>

    <userDefinedPort start="false" port="874"/><!-- port=874 -->

    <timeout start="true" time="100"/><!-- timeout=100 -->

    <ssh start="false"/>

    3、修改36-37行

    <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default

     every 60mins execute once-->

    修改成我们刚刚创建好的logs目录

    <failLog path="/usr/local/sersync/logs/rsync_fail_log.sh" timeToExecut

    e="60"/><!--default every 60mins execute once-->

    配置环境变量

    echo 'export PATH=$PATH:/usr/local/sersync/bin'>>/etc/profile

    [root@resources sersync]# source /etc/profile

    [root@resources sersync]# which sersync

    /usr/local/sersync/bin/sersync

    启动服务

    [root@resources sersync]# sersync -r -d -o /usr/local/sersync/conf/confxml.xml

    测试实时同步

    [root@resources opt]# cd backup/

    [root@resources backup]# ll

    total 0

    [root@ftp-bakserver ~]# cd /www/ftp

    [root@ftp-bakserver backup]# ll

    total 0

    [root@resources ftp]# for i in `seq 10`;do mkdir -p /opt/backup/$i;done

    [root@resources ftp]# ll

    1 5 10 6 2 7 3 8 4 9 

    [root@ftp-bakserver ftp]# ls

    1 5 10 6 2 7 3 8 4 9

    可以同步

     

    04全网服务器数据同步配置

    备份服务器配置

    [user-app]

    path = /mnt/backup/user-app

    ignore errors

    read only = false

    list = false

    hosts allow = 10.0.0.4

    auth users = rsync_backup

    secrets file = /etc/rsync.password

     

    [sj-app]

    path = /mnt/backup/sj-app

    ignore errors

    read only = false

    list = false

    hosts allow = 10.0.0.5

    auth users = rsync_backup

    secrets file = /etc/rsync.password

     

    [admin]

    path = /mnt/backup/admin

    ignore errors

    read only = false

    list = false

    hosts allow = 10.0.0.6

    auth users = rsync_backup

    secrets file = /etc/rsync.password

     

    [shangjia]

    path = /mnt/backup/shangjia

    ignore errors

    read only = false

    list = false

    hosts allow = 10.0.0.7

    auth users = rsync_backup

    secrets file = /etc/rsync.password

     

    [web]

    path = /mnt/backup/web

    ignore errors

    read only = false

    list = false

    hosts allow = 10.0.0.8

    auth users = rsync_backup

    secrets file = /etc/rsync.password 

    其它同步客户端安装与配置sersync按上述操作进行

    备份脚本基本都是打包备份或直接拷贝文件到本地备份目录



    其它项目文章可查看往期回顾

    -----至此,整个项目过程都已经介绍完成-----

  • 相关阅读:
    妙用sql的统计进行集合的比较
    kissy学习笔记(1)上手kissy
    Ext与现有项目的结合(一)完全封装已有的HTML元素使之成为Ext的组件
    Fix IE6 剪贴板撤销机制CtrlZ,CtrlY功能会在由于Js动态改变页面元素的value后失效的Problem
    Ajax个人开发心得(一)先从一个最简单的ajax功能模块说起,Ajax技术其实很简单
    【转】仅用 []()+! 就足以实现几乎任意Javascript代码
    为什么不用13px字体
    Ajax个人开发心得(二)页面逻辑与页面表现的分离,让你的Ajax编程更加模块化
    纯JS转换Select为Combox,完美实现原select所有功能
    关于window.parent的奇怪问题
  • 原文地址:https://www.cnblogs.com/guarderming/p/9466682.html
Copyright © 2020-2023  润新知