linux運維、架構之路-實時同步方案

1、inotify+rsync實時同步mysql

一、介紹linux

        inotify-tools是一種強大的、細粒度的、異步的文件系統事件監控機制,能夠用來監控文件系統的事件。inotify-tools是用c編寫的,除了要求內核支持inotify外,不依賴於其餘。inotify-tools提供兩種工具,一是inotifywait,它是用來監控文件或目錄的變化,二是inotifywatch,它是用來統計文件系統訪問的次數。git

二、實現原理github

三、根據原理進行部署sql

①查看系統是否支持inotifymongodb

[root@nfs-nfs01 ~]# ll /proc/sys/fs/inotify/
-rw-r--r-- 1 root root 0 Aug 22 18:13 max_queued_events
-rw-r--r-- 1 root root 0 Aug 28 14:30 max_user_instances
-rw-r--r-- 1 root root 0 Aug 22 18:13 max_user_watches

②軟件安裝服務器

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo    #安裝epel源才能夠yum安裝inotify
yum install -y inotify-tools

測試監控事件create、delete、close_write、moved_to、moved_from,定義inotify監控命令參數網絡

inotifywait -mrq -e create,delete,moved_to,close_write --format '%w%f' /data
#/data爲監控的目錄

編寫腳本讓rsync與inotify服務結合實現實時同步多線程

cat >>inotify.sh <<EOF
#!/bin/sh
/usr/bin/inotifywait -mrq --format 「%w%f」 -e moved_to,delete,create,close_write /data|while read line
do
   rsync -az --delete /data/  rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password
done
EOF

⑤inotify優化併發

[root@nfs-nfs01 ~]# ll /proc/sys/fs/inotify/
-rw-r--r-- 1 root root 0 Aug 22 18:13 max_queued_events   #設置監控服務實例能夠監控的事件的個數 -rw-r--r-- 1 root root 0 Aug 28 14:30 max_user_instances  #設置用戶能夠開啓的服務進程數 -rw-r--r-- 1 root root 0 Aug 22 18:13 max_user_watches    #能夠監控的最大文件數
優化參數調整:
echo 「50000000」 >/proc/sys/fs/inotify/max_user_watches
echo 「50000000」 >/proc/sys/fs/inotify/max_queued_events

⑥inotifywait命令參數

參數名稱

參數說明

-m,--monitor *****

始終保持事件監聽狀態

-r,--recursive *****

遞歸監控目錄數據信息變化

-q,-quiet    *****

輸出信息少(只打印事件信息)

--exclude

排除文件或目錄時,不區分大小寫

--timefmt     *****

指定時間輸出格式

--format      *****

打印使用指定的輸出相似格式字符串,實際監控輸出的內容

-e           *****

指定監聽的事件,若是省略,表示全部事件都進行監聽

 ⑦inotifywait events監控事件

事件名稱

事件說明

access

文件或目錄內容被讀取

modify

文件或目錄內容被寫入

attrib

文件或目錄屬性改變

close_write   *****

文件或目錄關閉,在寫入模式打開以後關閉

chose_nowrite

文件或目錄關閉,在只讀模式打開以後關閉的

close

文件或目錄關閉,無論讀或寫模式

open

文件或目錄被打開

moved_to

文件或目錄被移動到監控的目錄中

moved_from

文件或目錄被移動從監控的目錄中

move   *****

文件或目錄無論移動或是移動出監控目錄都觸發事件

create   *****

文件或目錄建立在監控的目錄中

delete

文件或目錄被刪除在監控的目錄中

2、sersync實時同步

一、介紹

        數據同步就必然會想到rsync,通常簡單的服務器數據傳輸會使用ftp/sftp等方式,可是這樣的方式效率不高,不支持差別化增量同步也不支持實時傳輸。針對數據實時同步需求大多數人會選擇rsync+inotify-tools的解決方案,可是這樣的方案也存在一些缺陷,sersync是國人基於前二者開發的工具,不只保留了優勢同時還強化了實時監控,文件過濾,簡化配置等功能,幫助用戶提升運行效率,節省時間和網絡資源。https://github.com/wsgzao/sersync官方資料

二、sersync優勢

①sersync對linux系統文件系統產生的臨時文件和重複的文件操做進行過濾因此在結合rsync同步的時候,節省了運行時耗和網絡資源,所以更快。

②相比較inotify+rsync,sersync配置起來簡單,bin目錄下已經有基本上靜態編譯的2進制文件,配合bin目錄下的xml配置文件直接使用便可。

③另外sersync相比較其餘腳本開源軟件,使用多線程進行同步,尤爲在同步較大文件時,可以保證多個服務器實時保持同步狀態。

④sersync有出錯處理機制,經過失敗隊列對出錯的文件從新同步,若是仍舊失敗,則按設定時長對同步失敗的文件從新同步。

⑤自帶crontab功能,只需在xml配置文件中開啓,便可按要求,隔一段時間總體同步一次,無需再額外配置crontab功能。

⑥sersync有socket與http插件擴展,知足二次開發的須要

三、實現原理圖

 

四、sersync服務部署

①軟件下載安裝

https://github.com/wsgzao/sersync
cd /server/tools/
unzip sersync_installdir_64bit.zip 
mv sersync_installdir_64bit /usr/local/sersync
cd /usr/local/sersync/
mv sersync/* ./
rm sersync/ -rf
chmod +x /usr/local/sersync/bin/sersync
cp conf/confxml.xml  conf/confxml.xml.bak

②修改配置文件

③啓動sersync服務

/usr/local/sersync/bin/sersync -dro /usr/local/sersync/conf/confxml.xml

五、高併發場景無分佈式存儲實時同步解決方案

①inotify(sersync)+rsync 系統文件級別

②drbd文件系統級別

③第三方軟件的同步功能 mysql同步,oracle,mongodb

④業務上,經過程序雙寫

⑤棄用nfs方案

相關文章
相關標籤/搜索