<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
MongoShake是阿里雲以Golang語言編寫的通用平臺型服務工具,它通過讀取MongoDB的Oplog操作紀錄檔來複制MongoDB的資料以實現特定需求。
MongoShake還提供了紀錄檔資料的訂閱和消費功能,可通過SDK、Kafka、MetaQ等方式的靈活對接,適用於紀錄檔訂閱、資料中心同步、Cache非同步淘汰等場景。
官方地址:https://github.com/alibaba/MongoShake
基於mongoshake可以衍生出很多的場景,從而提供給開發者在架構設計中更多更靈活、更豐富的選擇
mongoshake本身的使用不難,這個參考官方的設定即可,主要是根據自身的業務場景做好組態檔中各個引數的設定即可達到目的,下面以mongoshake一個較為常用的場景,即使用mongoshanke完成2個mongodb複製叢集之間的資料同步
選擇其中一臺伺服器搭建一個mongodb的單機版複製叢集,這裡使用埠號區分,啟動的時候啟動多個範例即可(有條件的可以採用3個不同的伺服器操作),按照下面的步驟依次執行即可:
1、建立3個目錄
mkdir replications cd replications mkdir myrs_27017 mkdir myrs_27018 mkdir myrs_27019
2、在3個主目錄下,分別建立data和log目錄
mkdir data cd data mkdir db
在myrs_27017 ,myrs_27018 ,myrs_27019 3個目錄下分別做同樣的操作,
3、編輯mongod.conf組態檔
#資料儲存路徑 dbpath=/usr/local/soft/mongo/replications/myrs_27017/data/db #紀錄檔儲存路徑 logpath=/usr/local/soft/mongo/replications/myrs_27017/log/mongod.log #紀錄檔追加寫入 logappend=true #複製集名稱 replSet=myrs bind_ip=伺服器IP(雲伺服器建議使用內網IP) #mongo預設埠 port=27017 #操作紀錄檔容量 oplogSize=10000 noprealloc=true #開啟子程序 fork=true
在另外的myrs_27018 ,myrs_27019兩個目錄下做同樣的操作,只需要分別修改下組態檔中的埠號即可
4、使用下面的命令依次啟動3個不同的mongodb範例
進入mongodb的bin目錄下,依次執行下面的命令
./mongod -f /usr/local/soft/mongo/replications/myrs_27017/mongod.conf ./mongod -f /usr/local/soft/mongo/replications/myrs_27018/mongod.conf ./mongod -f /usr/local/soft/mongo/replications/myrs_27019/mongod.conf
看到下面的資訊表名啟動成功
5、建立叢集
使用mongo的shell登入到其中一個範例上,進入bin目錄下,執行下面命令
./mongo --host 伺服器IP(建議使用內網IP) --port 27017
6、執行數叢集資訊的初始化操作
使用下面的命令執行
cfg={ _id:"myrs", members:[ {_id:0,host:'伺服器IP:27017',priority:1}, {_id:1,host:'伺服器IP:27018',priority:2}, {_id:2,host:'伺服器IP:27019',arbiterOnly:true}]};
再使用:rs.initiate(cfg); 命令完成叢集初始化
執行完畢後,可以使用: rs.status() 檢視叢集各個節點資訊,列印出的資訊太長,就不放截圖了,注意,執行完畢之後,當前節點會出現短暫的 secondary ,但是過一會兒就變成 primary了
7、將另外兩個節點加入叢集
在上一步的視窗下依次執行下面的命令,將兩位2個mongo範例加入到叢集中
rs.add("伺服器IP:27018") #加入第一個從節點 rs.add("伺服器IP:27019") #加入第二個仲裁節點
8、主節點上建立資料
在上一步的視窗下,即主節點上,給某個庫的某個集合下插入一條資料
登入從節點,由於是複製叢集,主節點上的資料必然會同步到從節點上,我們可以登陸進去檢視是否同步成功
./mongo --host 伺服器IP --port 27018
可以發現沒有許可權,預設情況下,從節點是沒有讀寫許可權的,需要做設定才行,可以在上面從節點的視窗執行下面的命令即可
rs.slaveOk()
執行完畢後,再次查詢即可看到主節點上插入的資料了
以上就是基於單機模式下搭建一個偽複製叢集的全部過程,將同樣的操作在另外一個伺服器上執行即可
在另一個叢集上,我們在主節點上建立了下面一個test庫,並在庫下新建了一條資料
有了上面的兩個複製叢集,mongoshake的使用就變得非常簡單了,mongoshake實現資料同步的基本原理是通過監聽mongodb的oplog,解析其中的事件,從而完成資料的讀取與寫入
mongoshake常用的同步包括,增量同步、全量同步、增量+全量同步,下面從列舉了mongoshake內部實現資料同步的業務機制
1、解壓mongoshake包
2、進入解壓後的目錄編輯並設定 collector.conf檔案
下面列舉比較常用的幾個設定
#源資料庫地址,叢集多個地址中間用逗號分割 mongo_urls = mongodb://源mongoIP:27017,源mongoIP:27018,源mongoIP:27019 # 通道模式。直接資料庫到資料庫 tunnel = direct # 此處設定通道的地址,格式與mongo_urls對齊。【目標同步地址】 tunnel.address = mongodb://目標mongoIP:27017,目標mongoIP:27018,目標mongoIP:27019 # all 表示全量+增量,full表示僅全量,incr表示僅增量 sync_mode = all # raw是預設的型別,其採用聚合的模式進行寫入和 # 讀取,但是由於攜帶了一些控制資訊,所以需要專門用receiver進行解析。 # json以json的格式寫入kafka,便於使用者直接讀取。 # bson以bson二進位制的格式寫入kafka。 tunnel.message = raw
其他更多高階設定柯參考官方詳細說明進行了解,比如可以同步到kafka等
3、啟動mongoshake服務
在主目錄下,執行下述命令啟動同步任務,並列印紀錄檔資訊
./collector.linux -conf=collector.conf -verbose
模擬測試
mongoshake服務啟動完畢後,這時可以去被同步的第一臺伺服器上檢查資料是否同步成功
由於我們設定的是全量+增量的方式,因此服務一旦啟動,資料就全部同步過去了
這時候再次去第二臺伺服器的test資料庫下再次新增一條資料
再返回到第一臺機器上檢查資料是否成功同步
可以看到,資料成功同步到第一臺機器上了
到此這篇關於mongoshake實現mongodb資料同步的文章就介紹到這了,更多相關mongodb資料同步內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45