如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情
上篇文章我们说到rsync虽好,但是缺乏实时性,在实际应用中,咱们可以将rsync写进脚本,然后写进定时任务去备份,如果每天凌晨1:00进行备份,早晨6:00磁盘损坏,9:00上班时发现之后紧急处理,在这3个小时内,数据丢失,也是不小的损失,那么如何实现短时间内的增量备份呢?有人说可以使用定时任务,每五分钟执行一次定时任务不就可以减少损失了吗,但是企业中的数据可不是五分钟能备份完的,所以有一个新的方案——sersync和lsync
目录
一、NFS
1、NFS服务配置
2、NFS参数
二、sersync服务
1、服务安装
2、启动进程:
三、lsync服务端部署
1、安装lsync服务
2、修改lsync配置文件
3、创建密码文件
4、启动lsync服务
5、验证是否可以同步
💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!
👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!
🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!
一、NFS
1、NFS服务配置
服务端: 10.0.0.31 172.16.1.31 NFS
客户端: 10.0.0.7 172.16.1.7 WEB01
客户端: 10.0.0.41 172.16.1.41 BACKUP
1.服务安装
[root@nfs ~]#yum -y install nfs-utils
2.配置文件 默认为空
[root@nfs ~]#vim /etc/exports
/data/ 172.16.1.0/24(rw,sync,all_squash)
注释:
/data 共享的目录
172.16.1.0/24 允许哪些IP地址可以挂载我
rw 挂载上之后的权限
r read write 写
ro 只读
sync 将数据同时写入到磁盘中
all_squash 将所有的来源用户全压缩为虚拟用户身份往本地的磁盘中写入
web01
root用户:
mount -t nfs 172.16.1.31:/data /mnt
touch /mnt/1.txt
3.按配置创建数据
[root@nfs ~]#mkdir /data[root@nfs ~]#ll -d /datadrwxr-xr-x 2 root root 6 Apr 10 10:19 /data[root@nfs ~]#chown nfsnobody.nfsnobody /data[root@nfs ~]#ll -d /datadrwxr-xr-x 2 nfsnobody nfsnobody 6 Apr 10 10:19 /data4.启动服务 开机自启
[root@nfs ~]#systemctl start nfs[root@nfs ~]#systemctl enable nfs5.检查服务
[root@nfs ~]#cat /var/lib/nfs/etab
/data
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
检查下是否有65534的用户存在
[root@nfs ~]#grep 65534 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
客户端挂载:
web01: 需要安装nfs-utils 但是不需要启动服务,只安装即可
[root@web01 ~]#yum -y install nfs-utils
查看服务端共享的目录:
[root@web01 ~]#showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
挂载
[root@web01 ~]#mount -t nfs 172.16.1.31:/data /mnt
写入开机自动挂载:
[root@web01 ~]#tail -1 /etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
41客户端挂载:
1.安装nfs-utils 不启动
[root@backup ~]#yum -y install nfs-utils
2.查看服务端共享目录
[root@backup ~]#showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
3.挂载
[root@backup ~]#mount -t nfs 172.16.1.31:/data /mnt
[root@backup ~]#df -hFilesystem Size Used Avail Use% Mounted on
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 18G 2.0G 16G 12% /
/dev/sda1 197M 110M 88M 56% /boot
tmpfs 199M 0 199M 0% /run/user/0
172.16.1.31:/data 18G 2.0G 16G 12% /mnt
[root@backup ~]#umount /mnt
[root@backup ~]#df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 18G 2.0G 16G 12% /
/dev/sda1 197M 110M 88M 56% /boot
tmpfs 199M 0 199M 0% /run/user/0
2、NFS参数
修改参数ro
[root@nfs ~]#cat /etc/exports
/data/ 172.16.1.0/24(ro,sync,all_squash)
重启服务生效
[root@nfs ~]#systemctl restart nfs
客户端测试删除创建
指定匿名用户
1.创建匿名用户
[root@nfs ~]#groupadd -g666 www
[root@nfs ~]#useradd -u666 -g666 -s /sbin/nologin -M www
2.修改配置文件指定匿名用户
[root@nfs ~]#cat /etc/exports
/data/ 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3.重启生效
[root@nfs ~]#systemctl restart nfs
4.客户端测试
无法写入,必须将/data目录属主属组修改为www用户
注意事项:
centos7.x 启动服务并行运行 可能会导致fastab中的网络挂载不成功,需要写入/etc/rc.local
二、sersync服务
1、服务安装
nfs创建 /server/tools
安装服务 yum install rsync inotify-tools ‐y
进入/server/tools
wget拉取 wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
解压到当前目录:tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
将解压后的文件改名:mv GNU‐Linux‐x86/ sersync
进入更改confxml.xml更改内容如下:
<createFile start="true"/> (false改为true)保存退出
2、启动进程:
# 查看启动参数
[root@nfs01 sersync]# ./sersync2 ‐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命令推送一遍
参数‐n: 指定开启守护线程的数量,默认为10个
参数‐o:指定配置文件,默认使用confxml.xml文件
参数‐m:单独启用其他模块,使用 ‐m refreshCDN 开启刷新CDN模块
参数‐m:单独启用其他模块,使用 ‐m socket 开启socket模块
参数‐m:单独启用其他模块,使用 ‐m http 开启http模块
不加‐m参数,则默认执行同步程序
[root@nfs sersync]##./sersync2 -dro confxml.xml #相对路径启动
[root@nfs sersync]#/server/tools/sersync/sersync2 -dro /server/tools/sersync/confxml.xml #绝对路径启动
开启实时备份
echo 123456 > /etc/rsync.pas
如果nfs出现故障,希望将web客户端挂载至backup服务器上, 怎么实现?
#1.nfs和backup两台服务器应该保持一样(nfs配置。nfs共享的目录。nfs的权限)
[root@backup ~]# yum install nfs‐utils ‐y
[root@backup ~]# rsync ‐avz root@172.16.1.31:/etc/exports /etc/
[root@backup ~]# groupadd ‐g 666 www
[root@backup ~]# useradd ‐u666 ‐g666 www
#2.启动nfs服务
[root@backup ~]# systemctl start rpcbind
[root@backup ~]# systemctl start nfs‐server
#3.修改rsync的权限
[root@backup ~]# vim /etc/rsyncd.conf
uid = www
gid = www
#4.修改授权
[root@backup ~]# chown ‐R www.www /data/ /backup/
#5.重启rsync
[root@backup ~]# systemctl restart rsyncd
#6.进行一次数据推送, 然后模拟nfs故障(挂起虚拟机)
#7.web强制卸载172.16.1.31:/data
[root@web01 ~]# umount ‐lf /data
#8.web尝试挂载172.16.1.41:/data
[root@web01 ~]# mount ‐t nfs 172.16.1.41:/data /data/
三、lsync服务端部署
1、安装lsync服务
yum install -y lsyncd
2、修改lsync配置文件
vim /etc/lsyncd.conf
settings { #lsync配置
logfile = "/var/log/lsyncd/lsyncd.log", #lsync日志文件
pidfile = "/var/run/lsyncd.pid", #记录进程ID的文件,可以不用配置
statusFile = "/var/log/lsyncd/lsyncd.status", #运行状态文件,包括记录一些监控目录的变更信息
statusInterval = 5, #将lsyncd的状态写入上面的statusFile的间隔,默认10秒
nodaemon = true, #表示不启用守护模式,默认
inotifyMode = "CloseWrite", #指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify
maxProcesses = 5, #同步进程的最大个数。假如同时有10个文件需要同步,而maxProcesses=5,则最大能看到有5个rysnc进程
maxDelays = 1, #累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到
}
sync { #sersync配置default.rsync,source = "/data", #同步原目录target = "rsync_backup@10.0.0.41::data", #同步目的地址,用户名,模块名delete = "running", #目标目录和源目录不同时的删除方式,总共四种exclude = { ".tmp" }, #排除同步的文件,可以用rsync的正则delay = 3, #累计事件,等待delay秒后进行rsync同步,默认15秒(最大累计到1000个不可合并的事件)。也就是15s内监控目录下发生的改动,会累积到一次rsync同步,避免过于频繁的同步init = false, #只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是truersync = { #rsync配置binary = "/usr/bin/rsync", #rsync命令archive = true,compress = true,verbose = true, #同步详细模式输出password_file = "/etc/clint.password", #其他的一些配置,这里表示限速,单位kb/s}
}
3、创建密码文件
echo "1" >/etc/clint.password
chmod 600 /etc/clint.password
4、启动lsync服务
systemctl restart lsyncd
5、验证是否可以同步
1.在lsync服务端监控的目录创建文件
touch test{01..10}.txt
2.在rsync服务端的备份目录中查看是否同步
ls
数据备份服务的学习到此告一段落了,明天学点好玩的东西,ssh远程连接~~~~
想成为大佬,就要从小白开始,从0开始,一点一点的积累,慢慢成长,明天你就是大佬!!想学习更多麒麟操作系统的知识,关注小屁,让你成为运维老鸟~~~~~