2019-04-19-day36 网站数据实时备份应用与实践

第1章 数据实时备份应用与实践

1.1 企业数据备份方案

  在网站集群架构中,数据永远是网站最重要的,一旦数据造成丢失,将会给企业造成巨大损失,因此,企业网站和应用需要有完善的数据备份方案确保数据安全。在企业中,数据备份方案有以下几种:

  1. 利用定时方式,实现周期备份重要数据信息。
      需要周期性备份的数据可分为两类:一是程序员发布的程序代码以及运维人员对服务器等的配置变更文件,一般会使用定时任务执行脚本对该文件进行备份,然后配合rsync工具推送到远端服务器备份;二是对于数据库等的数据会用定时执行脚本的备份,然后再配合rsync工具推送到远端服务器备份。
  2. 利用实时复制方式,实现实时备份重要数据信息。
      实时复制是企业数据备份最重要的方式,主要用于用户提交的数据的备份,对于用户提交到服务器上的普通文件(压缩包、视频、图片等),可采用inotify/sersync+rsync实时备份方式:对于数据文件还有较复杂的分布式存储工具自身可以实现将数据同时备份成多份,如FastDFS、GlusterFS等:对于提交到数据库中的数据,可使用数据库的主从复制(例如MySQL、Oracle)方式备份。

1.2 实时复制软件介绍

软件服务 依赖程序 部署难点 说明
inotify-tools rsync守护进程服务 复制脚本编写 监控目录数据变化,实时数据复制
sersync rsync守护进程服务 配置文件编写 监控目录数据变化,实时数据复制

1.3 inotify+rsync实时复制实践

前提条件:backup服务端rsync守护进程部署好。

1.3.1 部署NFS客户端

1、设置密码认证文件:

[root@nfs01 ~]$ echo 'export RSYNC_PASSWORD=oldboy' >>/etc/bashrc   <===采用密码环境变量的方式,配置永久生效
[root@nfs01 ~]$ source /etc/bashrc             <===加载配置使其生效
[root@nfs01 ~]$ echo $RSYNC_PASSWORD           <===检查密码环境变量,确保生效
oldboy

2、测试推送

[root@nfs01 ~]$ rsync -avz /data rsync_backup@172.16.1.41::backup/
sending incremental file list

sent 164 bytes  received 25 bytes  126.00 bytes/sec
total size is 0  speedup is 0.00

1.3.2 查看inotify支持情况

[root@nfs01 ~]$ uname -r                          <===内核版本需在2.6.13以上
3.10.0-957.5.1.el7.x86_64
[root@nfs01 ~]$  ls -l /proc/sys/fs/inotify/      <===inotify所需的三个配置文件
总用量 0
-rw-r--r-- 1 root root 0 4月  19 09:45 max_queued_events
-rw-r--r-- 1 root root 0 4月  19 09:45 max_user_instances
-rw-r--r-- 1 root root 0 4月  19 09:45 max_user_watches

1.3.3 安装inotify-tools

[root@nfs01 ~]$ yum install epel-release -y       <===安装epel源
[root@nfs01 ~]$ yum install inotify-tools -y      <===安装inotify-tools包
[root@nfs01 ~]$ rpm -ql inotify-tools|head -2     <===查看包内容
/usr/bin/inotifywait
/usr/bin/inotifywatch
[root@nfs01 ~]$ rpm -qa inotify-tools             <===查看版本号
inotify-tools-3.14-8.el7.x86_64

1.3.4 命令参数及事件说明

参数说明:

参数 说明
-m|--monitor 始终保持事件监听状态
-d|--daemon 类似于-m参数,只是将命令运行在后台
-r 递归监控目录数据信息变化
-q|--quite 只打印事件信息
--excludei<pattern> 排除文件或目录时,不区分大小写
--timefmt<fmt> 指定时间输出的格式
--format<fmt 打印使用指定的输出类似格式字符串;即实际监控输出的内容
-e 指定监听指定的事件,如果省略,表示所有事件都进行监听。

事件说明:

事件名称 说明
modify 文件或目录内容被写入
attrib 文件或目录属性改变
close_write 文件或目录关闭,在写入模式打开之后关闭的。
moved_to 文件或目录被移动到监控目录中
moved_from 文件或目录从监控目录中被移动
create 文件或目录创建在监控的目录中
delete 文件或目录在监控的目录中被删除
delete_self 文件或目录被删除
unmount 文件系统包含的文件或目录不能卸载

1.3.5 测试实践

在NFS服务器上开启inotify相应监控功能
[root@nfs01 ~]$ inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data   <===监控/data目录创建事件显示信息
19/04/19 19:26 /data/a.txt  <===目录随着下面的操作,文件实时出现
19/04/19 19:26 /data/b.txt
再开启一个NFS服务器连接窗口进行测试验证相应事件
[root@nfs01 ~]$ touch /data/a.txt
[root@nfs01 ~]$ touch /data/b.txt

说明:只监控create创建事件,其他事件并没有进行监控,其他事件产生,监控服务并没有信息输出。

1.3.6 编写脚本

1、创建放置脚本目录和共享目录,并测试推送

[root@nfs01 ~]$ mkdir –p /server/scripts /data
[root@nfs01 ~]$ rsync -az --delete /data/ rsync_backup@172.16.1.41::backup

2、编辑脚本文件,内容如下:

[root@nfs01 /server/scripts]$ cat monitor.sh 
#!/bin/sh
cmd="/usr/bin/inotifywait"
$cmd -mrq  --format '%w%f' -e close_write,delete /data|\
while read line
do
  cd /data&&\
  rsync -az --delete ./ rsync_backup@172.16.1.41::backup
done

或者

[root@nfs01 /server/scripts]$ cat monitor.sh 
#!/bin/sh
cmd="/usr/bin/inotifywait"
$cmd -mrq  --format '%w%f' -e close_write,delete /data|\
while read line
do
  #删除事件发生
  [ ! -e  "$line" ] && cd /data &&\
  rsync -az --delete ./ rsync_backup@172.16.1.41::backup && continue
  #处理增改事件
  rsync -az --delete $line rsync_backup@172.16.1.41::backup
done

3、后台运行脚本

[root@nfs01 /server/scripts]$ /bin/sh /server/scripts/monitor1.sh &
[2] 9199

1.3.7 sersync实践

1.3.7.1 客户端推送成功

[root@nfs01 ~]$ rsync -az /data rsync_backup@172.16.1.41::backup

1.3.7.2 部署sersync服务(NFS)

[root@nfs01 /server/tools]$ tar xf sersync_oldboy_64bit_20160928.tar.gz  <===解压压缩包
[root@nfs01 /server/tools]$ mkdir /application -p                        <===创建/application目录
[root@nfs01 /server/tools]$ mv application/sersync /application/         <===将sersync里的文件移动到/application/里
[root@nfs01 /server/tools]$ tree /application/                           <===查看/application/里的内容
/application/
└── sersync
    ├── bin
    │   └── sersync
    ├── conf
    │   ├── confxml.xml
    │   └── confxml.xml.ori
    ├── logs
    │   └── rsync_fail_log.sh
    └── readme.txt

4 directories, 5 files
[root@nfs01 /server/tools]$ cd /application/sersync/conf/
 [root@nfs01 /application/sersync/conf]$ ls
confxml.xml  confxml.xml.ori

1.3.7.3 启动服务

[root@nfs01 /application/sersync/conf]$ ../bin/sersync -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
_______________________________________________________
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
________________________________________________________________
[root@nfs01 /application/sersync/conf]$ /application/sersync/bin/sersync -d   <===启动sersync服务

关闭sersync进程的方法:

[root@nfs01 ~]$ pkill sersync
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容