溫馨提示×

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

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

rsync+sersync實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)同步

發(fā)布時(shí)間:2020-07-30 11:11:58 來(lái)源:網(wǎng)絡(luò) 閱讀:897 作者:學(xué)神MK講師 欄目:軟件技術(shù)
 

一臺(tái)裝sersync、一臺(tái)裝rsync服務(wù)

sersync服務(wù)器(數(shù)據(jù)源,源機(jī)器):192.168.0.63

rsync客戶(hù)端(備份端,目標(biāo)機(jī)器):192.168.0.64

1. 為什么要用rsync+sersync架構(gòu)?

(1) sersync是基于inotify開(kāi)發(fā)的,類(lèi)似于inotify-tools的工具。

(2) sersync可以記錄下被監(jiān)聽(tīng)目錄中發(fā)生變化的(包括增加、刪除、修改)具體某一個(gè)文件或者某一個(gè)目錄的名字,然后使用rsync同步的時(shí)候,只同步發(fā)生變化的文件或者目錄。

2. rsync+inotify-tools與rsync+sersync架構(gòu)的區(qū)別?

(1) rsync+inotify-tools

1) inotify只能記錄下被監(jiān)聽(tīng)的目錄發(fā)生了變化(增,刪,改)并沒(méi)有把具體是哪個(gè)文件或者哪個(gè)目錄發(fā)生了變化記錄下來(lái)。

2) rsync在同步的時(shí)候,并不知道具體是哪個(gè)文件或目錄發(fā)生了變化,每次都是對(duì)整個(gè)目錄進(jìn)行同步,當(dāng)數(shù)據(jù)量很大時(shí),整個(gè)目錄同步非常耗時(shí)(rsync要對(duì)整個(gè)目錄遍歷查找對(duì)比文件),因此效率很低。

(2) rsync+sersync

1) sersync可以記錄被監(jiān)聽(tīng)目錄中發(fā)生變化的(增,刪,改)具體某個(gè)文件或目錄的名字。

2) rsync在同步時(shí),只同步發(fā)生變化的文件或目錄(每次發(fā)生變化的數(shù)據(jù)相對(duì)整個(gè)同步目錄數(shù)據(jù)來(lái)說(shuō)很小,rsync在遍歷查找對(duì)比文件時(shí),速度很快),因此效率很高。

3. 同步過(guò)程:

(1) 在同步服務(wù)器上開(kāi)啟sersync服務(wù),sersync負(fù)責(zé)監(jiān)控配置路徑中的文件系統(tǒng)事件變化。

(2) 調(diào)用rsync命令把更新的文件同步到目標(biāo)服務(wù)器。

(3) 需要在主服務(wù)器配置sersync,在同步目標(biāo)服務(wù)器配置rsync server(注意:是rsync服務(wù))。

4. 同步過(guò)程和原理:

(1) 用戶(hù)實(shí)時(shí)的往sersync服務(wù)器上寫(xiě)入更新文件數(shù)據(jù)。

(2) 此時(shí)需要在同步主服務(wù)器上配置sersync服務(wù)。

(3) 在另一臺(tái)服務(wù)器開(kāi)啟rsync守護(hù)進(jìn)程服務(wù),以同步拉取來(lái)自sersync服務(wù)器上的數(shù)據(jù)。

(4) 在另一臺(tái)服務(wù)器開(kāi)啟rsync守護(hù)進(jìn)程服務(wù),使sersync push文件過(guò)來(lái)。

通過(guò)rsync的守護(hù)進(jìn)程服務(wù)后可以發(fā)現(xiàn),實(shí)際上sersync就是監(jiān)控本地的數(shù)據(jù)寫(xiě)入或更新事件,然后,在調(diào)用rsync客戶(hù)端的命令,將寫(xiě)入或更新事件對(duì)應(yīng)的文件通過(guò)rsync推送到目標(biāo)服務(wù)器,如圖 2-3 所示。

rsync+sersync實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)同步

圖2-3 同步過(guò)程示意圖

2.3.1 下載sersync

1.在google code下載sersync的可執(zhí)行文件版本,里面有配置文件與可執(zhí)行文件

wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz(有時(shí)下載失敗,所有要本地留存一份)

2.上傳到服務(wù)器 /opt目錄下。

[root@xuegod63 ~]# cd /opt #切換工作目錄到/opt目錄下。

[root@xuegod63 opt]# tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz #解壓。

[root@xuegod63 opt]# mv GNU-Linux-x86 sersync #解壓后的文件重命名為sersync。

2.3.2 配置sersync

[root@xuegod63 opt]# cd sersync #切換工作目錄至sersync目錄下。

[root@xuegod63 sersync]# cp confxml.xml confxml.xml.bak #備份配置文件,便于二次修改

1. 更改優(yōu)化sersync配置文件:

[root@xuegod63 sersync]# vim confxml.xml  #修改配置文件中的24--28行,如下所示。

<sersync>

<localpath watch="/var/www/html"> #本地同步數(shù)據(jù)目錄。

<remote ip="192.168.0.64" name="wwwroot"/> #rsync模塊名稱(chēng)

2. 修改31--34行,認(rèn)證部分(rsync密碼認(rèn)證)。

<rsync>

<commonParams params="-artuz"/>

<auth start="true" users="rsyncuser" passwordfile="/etc/rsync.passwd"/>

<userDefinedPort start="false" port="874"/><!-- port=874 -->

<timeout start="false" time="100"/><!-- timeout=100 -->

<ssh start="false"/>

3. 開(kāi)啟sersync守護(hù)進(jìn)程同步數(shù)據(jù)。

[root@xuegod63 sersync]# /opt/sersync/sersync2  -d -r -o  /opt/sersync/confxml.xml

rsync+sersync實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)同步

圖 2-4 開(kāi)啟sersync守護(hù)進(jìn)程

4. 測(cè)試

(1) 在63 /var/www/html/ 目錄 增加、刪除、或改目錄文件。

(2) 看64 /web-back 目錄的變化

[root@xuegod64 web-back]# watch ls -l

5. 設(shè)置sersync監(jiān)控開(kāi)機(jī)自動(dòng)執(zhí)行

[root@xuegod63 sersync]# vi /etc/rc.d/rc.local  #編輯rc.local文件,在最后添加一行。

/opt/sersync/sersync2 -d -r -o  /opt/sersync/confxml.xml   #設(shè)置開(kāi)機(jī)自動(dòng)運(yùn)行腳本。

6. 添加腳本監(jiān)控sersync是否正常運(yùn)行

[root@xuegod63 ~]# vi /opt/check_sersync.sh   #編輯腳本,添加以下代碼。

#!/bin/sh

sersync="/opt /sersync/sersync2"

confxml="/opt /sersync/confxml.xml"

status=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l)

if [ $status -eq 0 ];

then

$sersync -d -r -o $confxml &

else

exit 0;

fi

[root@xuegod63 ~]# chmod +x /opt /check_sersync.sh  #添加腳本執(zhí)行權(quán)限。

把這個(gè)腳本加到任務(wù)計(jì)劃,定期執(zhí)行檢測(cè)。

 

有興趣學(xué)習(xí)Linux云計(jì)算架構(gòu)師的可以關(guān)注我!

我給大家推薦一些入門(mén)學(xué)習(xí)資料,都是些經(jīng)典的學(xué)習(xí)資料!

CCNA 網(wǎng)絡(luò)基礎(chǔ)課程
http://edu.51cto.com/sd/3ee4c


Linux centos7 最新版的基礎(chǔ)學(xué)習(xí)視頻  請(qǐng)比對(duì)蘑菇丁的課程如果大綱一致就不要購(gòu)買(mǎi)了!
http://edu.51cto.com/sd/d572a


python3  函數(shù)編程入門(mén)
http://edu.51cto.com/sd/dd128


WEB開(kāi)發(fā)工程師   JavaScript全民你飛機(jī)大戰(zhàn)游戲開(kāi)發(fā)視頻課程
http://edu.51cto.com/sd/c6223


如果你基礎(chǔ)學(xué)習(xí)的比較好可以嘗試了解一下Linux Docker虛擬化及Kubernetes容器集群管理
http://edu.51cto.com/sd/480b1

向AI問(wèn)一下細(xì)節(jié)

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

AI