需求:
1、源服务器上(nfs01服务器)要备份的是/data/目录包
2、备份服务器(backup服务器)上备份的路径/backup ,当然备份的服务器有可能不止一台
源服务器:nfs01- 172.16.1.31 (sersync server)
备份服务器:backup-172.16.1.41 (rsync server)
rsync+sersync实时备份
sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字
rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高
同步过程:
1.在源数据服务器上开启sersync服务,sersync负责监控配置路径中的文件系统事件变化;
2.调用rsync命令把更新的文件同步到目标服务器;
3.需要在源数据服务器配置sersync,在同步目标服务器配置rsync server
同步原理:
1.用户实时的往sersync服务器上写入更新文件数据;
2.此时需要在源数据服务器上配置sersync服务;
3.在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;
通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器
sersync实时备份部署
一、备份服务器部署rsync服务
1.启动rsync服务
[root@backup ~]# systemctl start rsyncd
2.rsync服务加入开机自启动
[root@backup ~]# systemctl enable rsyncd
3.创建rsync用户
[root@backup ~]# useradd -s /sbin/nologin -M rsync
4.创建认证文件
[root@backup ~]# echo rsync_backup:123456 >/etc/rsync.password
5.修改认证密码文件
[root@backup ~]# chmod 600 /etc/rsync.password
6.创建一个backup目录并授予权限
[root@backup ~]# mkdir /backup
7.修改目录所属组,所属组
[root@backup ~]# chown rsync.rsync /backup/
8.编写rsync服务配置文件
[root@backup ~]# vim /etc/rsyncd.conf
#rsync_config
#created by lpc at 2019
##rsyncd.conf start##
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only= false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
cmment = "backup dir by lpc"
path =/backup
测试rsync服务是否部署成功
本地测试
[root@backup ~]# rsync -avz /etc/hostname rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hostname
sent 102 bytes received 43 bytes 58.00 bytes/sec
total size is 7 speedup is 0.05
[root@backup ~]# ll /backup/
total 4
-rw-r--r-- 1 rsync rsync 7 May 24 20:49 hostname
nfs01服务器上测试
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
sent 212 bytes received 43 bytes 102.00 bytes/sec
total size is 311 speedup is 1.22
部署成功、可以在backup服务器上查看是否有传输成功
二、在源服务器(nfs01服务器)上部署
创建用户认证密码文件并且设置权限为600
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# echo 123456 >/etc/rsync.password
创建/data目录
[root@nfs01 ~]# mkdir /data
部署sersync服务
1.上传sersync包
将sersync包上传到服务器上
xshell可以支持直接将安装包拖拽到服务器上,也可以通过rz命令上传到服务器。
rz命令所属包:lrzsz
2.解压安装包
[root@nfs01 ~]# unzip sersync-master.zip
[root@nfs01~]# cd sersync-master/
[root@nfs01~/sersync-master]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@nfs01~/sersync-master]# mv GNU-Linux-x86/ /usr/local/sersync --->后面目录不要加/
[root@nfs01~/sersync-master]# tree /usr/local/sersync/
/usr/local/sersync/
├── confxml.xml
└── sersync2
0 directories, 2 files
将目录移动到固定目录并更改目录名、方便管理
3.将sersync2改名为sersync、并且创建软连接
[root@nfs01 ~]# mv /usr/local/sersync/sersync2 /usr/local/sersync/sersync
[root@nfs01 ~]# ln -s /usr/local/sersync/sersync /sbin/
[root@nfs01 ~]# ll -d /sbin/sersync
lrwxrwxrwx 1 root root 26 May 25 01:15 /sbin/sersync -> /usr/local/sersync/sersync
4.给文件执行权限
[root@nfs01 ~]# chmod +x /usr/local/sersync/sersync
5.修改配置文件confxml.xml
vim /usr/local/sersync/confxml.xml
23 <sersync>
24 <localpath watch="/data"> --->本地要监控的目录
25 <remote ip="172.16.1.41" name="backup"/> --->填写rsync服务器的IP地址和模块名
26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28 </localpath>
29 <rsync>
30 <commonParams params="-az"/> -->rsyn参数设置
31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
#### 将false改为true --->认证用户 --->认证用户密码文件
32 <userDefinedPort start="false" port="874"/><!-- port=874 -->
33 <timeout start="false" time="100"/><!-- timeout=100 -->
34 <ssh start="false"/>
35 </rsync>
修改24、25、30、31行内容
6.启动服务
[root@nfs01 /data]# sersync -dro /usr/local/sersync/confxml.xml
最后跟的是配置文件的绝对路径
7.设置为开机自启动
[root@nfs01 ~]# vim /etc/rc.local
sersync -dro /usr/local/sersync/confxml.xml
将文件写入/etc/rc.local文件最后一行
/etc/rc.local、第一次使用需要给它执行权限:chmod +x /etc/rc.local
三、测试sersync是否部署成功
nfs服务器创建文件
[root@nfs01 ~]# touch /data/lang{1..9}.txt
[root@nfs01 ~]# ll /data/
total 0
-rw-r--r-- 1 root root 0 May 25 02:13 lang1.txt
-rw-r--r-- 1 root root 0 May 25 02:13 lang2.txt
-rw-r--r-- 1 root root 0 May 25 02:13 lang3.txt
-rw-r--r-- 1 root root 0 May 25 02:13 lang4.txt
-rw-r--r-- 1 root root 0 May 25 02:13 lang5.txt
-rw-r--r-- 1 root root 0 May 25 02:13 lang6.txt
-rw-r--r-- 1 root root 0 May 25 02:13 lang7.txt
-rw-r--r-- 1 root root 0 May 25 02:13 lang8.txt
-rw-r--r-- 1 root root 0 May 25 02:13 lang9.txt
backup服务器查看结果
[root@backup ~]# ll /backup/
total 0
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang1.txt
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang2.txt
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang3.txt
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang4.txt
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang5.txt
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang6.txt
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang7.txt
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang8.txt
-rw-r--r-- 1 rsync rsync 0 May 25 02:13 lang9.txt
四、其他相关
sersync 参数说明
[root@nfs01 ~]# 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参数,则默认执行同步程序
________________________________________________________________