标签:线程 syslogd ima 刷新 before 使用 nfx 后台 wait
实时备份就是利用实时工具对重要数据和文件变化进行一个实时的监控与备份,一发生变化,我就备份。
有inotify和sersync(推荐使用) 两种。
1)防止数据的丢失。
2)保证数据的一致性。
3) 实时备份数据适合用户上传的普通文件(文档,视频,压缩包等)。
[root@nfs01 ~]# uname -r
3.10.0-1062.18.1.el7.x86_64
# 注意inotify需要2.6.13以上的内核
[root@nfs01 ~]# ls -l /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 May 1 16:53 max_queued_events
-rw-r--r-- 1 root root 0 May 1 16:53 max_user_instances
-rw-r--r-- 1 root root 0 May 1 16:53 max_user_watches
#这三个参数是优化的关键
[root@nfs01 ~]# yum install inotify-tools -y
[root@nfs01 ~]# rpm -ql inotify-tools|head -2
/usr/bin/inotifywait
/usr/bin/inotifywatch
[root@nfs01 ~]# rpm -qa inotify-tools
inotify-tools-3.14-9.el7.x86_64
参数 | 说明 |
---|---|
-m(monitor) | 始终保持监听状态 |
-d (daemon) | 类似于-m参数,之时间命令放到后台运行 |
-r | 递归监控目录数据信息变化 |
q | 减少输出 |
-e | 监听指定的事件,如果省略,默认监听所有。 |
参数 | 说明 |
---|---|
close_write | 文件或目录关闭,在写入模式打开之后关闭 |
create | 文件或目录创建在监控的目录中 |
delete | 文件或目录被删除在监控目录中 |
[root@nfs01 ~]# inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e create /data
[root@nfs01 ~]# cd /data/
[root@nfs01 /data]# touch a.txt
[root@nfs01 /data]# touch b.txt
[root@nfs01 ~]# inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e create /data
01/05/20 17:23 /data/a.txt
01/05/20 17:23 /data/b.txt
[root@nfs01 ~]# cat /server/scripts/monitor.sh
#!/bin/bash
#auto by chenhj date 2019-1-13
#monitor rsync data bash file
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::data --password-file=/etc/rsync.password && continue
rsync -az --delete $line rsync_backup@172.16.1.41::data --password-file=/etc/rsync.password
done
[root@nfs01 ~]# cd /data/
[root@nfs01 /data]# touch {1..100}.txt
[root@nfs01 /data]# ls -lht
total 0
-rw-r--r-- 1 root root 0 May 1 18:45 100.txt
-rw-r--r-- 1 root root 0 May 1 18:45 91.txt
-rw-r--r-- 1 root root 0 May 1 18:45 92.txt
-rw-r--r-- 1 root root 0 May 1 18:45 93.txt
-rw-r--r-- 1 root root 0 May 1 18:45 94.txt
-rw-r--r-- 1 root root 0 May 1 18:45 95.txt
7.在backup上查看
[root@backup ~]# ls -lrt /data/
total 0
-rw-r--r-- 1 rsync rsync 0 May 1 18:45 1.txt
-rw-r--r-- 1 rsync rsync 0 May 1 18:45 9.txt
-rw-r--r-- 1 rsync rsync 0 May 1 18:45 8.txt
-rw-r--r-- 1 rsync rsync 0 May 1 18:45 7.txt
-rw-r--r-- 1 rsync rsync 0 May 1 18:45 6.txt
-rw-r--r-- 1 rsync rsync 0 May 1 18:45 5.txt
-rw-r--r-- 1 rsync rsync 0 May 1 18:45 4.txt
[root@nfs01 ~]# /bin/sh /server/scripts/monitor.sh &
[1] 1506
[root@nfs01 ~]# vim /etc/rc.local #monitor shell
/bin/sh /server/scripts/monitor.sh &
[root@nfs01 ~]# chmod +x /etc/rc.local
[root@nfs01 ~]# chmod +x /etc/rc.d/rc.local
[root@nfs01 ~]# echo ‘50000000‘> /proc/sys/fs/inotify/max_queued_events
#设置可监听文件的数量
[root@nfs01 ~]# echo ‘50000000‘> /proc/sys/fs/inotify/max_user_watches
#设置inotify实例事件(event)队列可容纳的事件数量
[root@nfs01 ~]# cat < /proc/sys/fs/inotify/max_user_instances
128
#设置每个用户可以运行的命令进程数,默认就行。
上述优化开机可能失效,可以把命令放到/etc/rc.local里面开机自启。
- sersync 是在inotify的基础上开发的,其功能比inotify更丰富,更实用,支持多线程。
[root@nfs01 /server/tools]# tar zxvf sersync_64bit_binary_stable_final.tar.gz
GNU-Linux-x86/
GNU-Linux-x86/sersync2
GNU-Linux-x86/confxml.xml
#解压即用
3.移动到软件安装目录下
[root@nfs01 /server/tools]# mv GNU-Linux-x86/ /application/
[root@nfs01 /application]# mv GNU-Linux-x86 sersync
[root@nfs01 /application]# ll
total 0
drwxr-xr-x 2 root root 41 Oct 26 2011 sersync
root@nfs01 /application/sersync]# cp confxml.xml{,.bak}
[root@nfs01 /application/sersync]# ll
total 1776
-rwxr-xr-x 1 root root 2214 Oct 26 2011 confxml.xml
-rwxr-xr-x 1 root root 2214 May 1 22:47 confxml.xml.bak
-rwxr-xr-x 1 root root 1810128 Oct 26 2011 sersync2
#修改如下:
23 <sersync>
24 <localpath watch="/data">
25 <remote ip="172.16.1.41" name="backup"/>
26 <remote ip="172.16.1.41" name="data"/>
27 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
28 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
29 </localpath>
30 <rsync>
31 <commonParams params="-artuz"/>
32 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
33 <userDefinedPort start="false" port="874"/><!-- port=874 -->
34 <timeout start="true" time="100"/><!-- timeout=100 -->
35 <ssh start="false"/>
[root@nfs01 /application/sersync]# ./sersync2 -d -o /application/sersync/confxml.xml
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
option: -d run as a daemon
option: -r rsync all the local files to the remote servers before the sersync work
option: -o config xml name: /application/sersync/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost host port: 8008
daemon start,sersync run behind the console
use rsync password-file :
user is rsync_backup
passwordfile is /etc/rsync.password
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
Max threads numbers is: 32 = 12(Thread pool nums) + 20(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /data && rsync -artuz -R --delete ./ --timeout=100 rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password >/dev/null 2>&1
run the sersync:
watch path is: /data
#参数 -d -r -o的顺序一定不要错。否则会报错,坑坑啊!!
#在工作中尽量不要加-r ,-r(参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍),我们启动sersync服务的时候手工推送一遍测试一下就行了,因为工作环境数据时好几十个G如果你加上-r的话,很长一段时间你都无法实时推送数据,因为要等那十几个G的数据推送玩。
[root@nfs01 /application/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命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
________________________________________________________________
[root@nfs01 /application/sersync]# ps -ef | grep sersync
root 2187 1 0 23:45 ? 00:00:00 ./sersync2 -d -r -o /application/sersync/confxml.xml
root 2231 2142 0 23:57 pts/1 00:00:00 grep --color=auto sersync
扩展命令 :pstree 查看服务有多少个线程
[root@nfs01 /application/sersync]# pstree
systemd─┬─agetty
├─crond
├─dbus-daemon
├─gssproxy───5*[{gssproxy}]
├─lvmetad
├─rpc.idmapd
├─rpc.mountd
├─rpc.statd
├─rpcbind
├─rsyslogd───2*[{rsyslogd}]
├─2*[sersync2───11*[{sersync2}]]
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
└─systemd-udevd
[root@nfs01 /data]# ls
a.txt c.txt e.txt g.txt i.txt k.txt m.txt o.txt q.txt s.txt u.txt w.txt y.txt
b.txt d.txt f.txt h.txt j.txt l.txt n.txt p.txt r.txt t.txt v.txt x.txt z.txt
[root@backup /data]# ls /backup/
a.txt c.txt e.txt g.txt i.txt k.txt m.txt o.txt q.txt s.txt u.txt w.txt y.txt
b.txt d.txt f.txt h.txt j.txt l.txt n.txt p.txt r.txt t.txt v.txt x.txt z.txt
[root@nfs01 ~]# vim /etc/rc.local [root@nfs01 ~]# tail -2 /etc/rc.local
# sersync monitor server
/application/sersync/sersync2 -d -o /application/sersync/confxml.xml
完美
标签:线程 syslogd ima 刷新 before 使用 nfx 后台 wait
原文地址:https://www.cnblogs.com/woaiyunwei/p/12892785.html