溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

rsync+inotify

發(fā)布時間:2020-07-21 05:14:20 來源:網(wǎng)絡(luò) 閱讀:289 作者:zhangfang2012 欄目:MongoDB數(shù)據(jù)庫
rsybc+inotify 企業(yè)案例
環(huán)境的描述:
將一臺mongod上面的數(shù)據(jù)實時同步到遠端的一臺主機
服務(wù)器地址分配:
備份端172.16.1.88(rsync server)
備份源172.16.1.89(rsync client inotify mongod)
同步的目錄是/var/lib/mongo/,自動同步的順序172.16.1.89---172.16.1.88,我們配置rsync的服務(wù)器即可。
一、配置rsync服務(wù)端172.16.1.88
1.先使用rpm -qa命令查看系統(tǒng)中是否已經(jīng)安裝了rsync軟件包。
[root@liuran ~]# rpm -qa | grep rsync
rsync-3.0.6-5.el6_0.1.x86_64
2.rsync安裝好之后沒有主機的配置文件,因此我們需要手動創(chuàng)建rsync的配置
[root@liuran ~]# vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 20
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web_log]
path = /data/web_log/
ignore errors
read only = false
list = false
hosts allow = 172.16.1.89
auth users = backuser
secrets file = /etc/rsync.password
3.建立rsync用戶名和密碼文件
[root@liuran ~]# echo "backuser:123" >/etc/rsync.password
4.為/etc/rsync.password授權(quán)為600(這個文件)
[root@liuran ~]# chomo -R 600 /etc/rsync.password
到此,服務(wù)器端配置完成。
二、客戶端配置
1,設(shè)置rsync客戶端密碼文件,客戶端只需要設(shè)置rsync同步密碼即可,不用重設(shè)用戶名
2.將密碼文件的權(quán)限設(shè)置成600(這個文件權(quán)限必須是600)
[root@asdasda ~]# chmod  -R 600 /etc/rsync.password
配置Inotify(在mongod配置)
http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@asdasda ~]# tar zxf inotify-tools-3.14.tar.gz
[root@asdasda ~]# cd inotify-tools-3.14
[root@asdasda inotify-tools-3.14]# ./configure && make && make install
2.為了保證/var/lib/mongod目錄自動同步,配置好mongod的inotify后,寫一個inotify腳本。
[root@asdasda ~]# cat a.sh
#!/bin/bash
src=/var/lib/mongo/
des=web_log
ip=172.16.1.88
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f' -e modify,delete,create,attrib ${src} \
| while read  file
do
rsync -vzrtopg --delete --progress $src backuser@172.16.1.88::$des --password-file=/etc/rsync.password > /dev/null 2>&1 && echo "$src was rsynced"
done

這個腳本的作用就是通過Inotify監(jiān)控文件目錄的變化,進而觸發(fā)rsync進行同步操作。由于這個過程是一種主動觸發(fā)操作,是通過系統(tǒng)內(nèi)核完成的,所以,比起那些遍歷整個目錄的掃描方式來,效率要高很多。

然后我們將此腳本放入后臺運行,輸入如下命令即可:

sh /root/rsync.sh&

接下來我們在mongod上面測試,插入數(shù)據(jù),看是否實時的同步數(shù)據(jù)文件到172.16.1.88上面

編寫插入數(shù)據(jù)腳本


[root@asdasda mongo]# cat /root/b.sh

#!/bin/bash

for i in {1..2000}

do

mongo<<EOF

use testmongodb2000;

db.mongodb$i.save({name:'liufsfsf',age:1})

db.mongodb$i.save({name:'liufsf',age:2})

db.mongodb$i.save({name:'liufsfsfsd',age:3})

db.mongodb$i.save({name:'liufsffs',age:4})

db.mongodb$i.save({name:'liusfsfs',age:5})

exit;

EOF

done

執(zhí)行腳本。

進入mongod存放數(shù)據(jù)的目錄下

[root@asdasda mongo]# ll

total 475628

drwxr-xr-x 2 mongod mongod      4096 Aug 26 13:51 journal

-rwxr-xr-x 1 mongod mongod         6 Aug 26 13:50 mongod.lock

-rw------- 1 mongod mongod  67108864 Aug 26 13:56 testmongodb2000.0

-rw------- 1 mongod mongod 134217728 Aug 26 13:56 testmongodb2000.1

-rw------- 1 mongod mongod 268435456 Aug 26 13:54 testmongodb2000.2

-rw------- 1 mongod mongod  16777216 Aug 26 13:56 testmongodb2000.ns

drwxr-xr-x 2 mongod mongod      4096 Aug 26 13:56 _tmp

172.16.1.88

進入指定備份目錄


[root@liuran web_log]# ll

total 213224

drwxr-xr-x 2 mongod mongod      4096 Aug 26 13:51 journal

-rwxr-xr-x 1 mongod mongod         6 Aug 26 13:50 mongod.lock

-rw------- 1 mongod mongod  67108864 Aug 26 13:56 testmongodb2000.0

-rw------- 1 mongod mongod 134217728 Aug 26 13:56 testmongodb2000.1

-rw------- 1 mongod mongod  16777216 Aug 26 13:54 testmongodb2000.ns

drwxr-xr-x 2 mongod mongod      4096 Aug 26 13:56 _tmp

表示已經(jīng)同步過來。


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI