MySQL數據庫同redis以及hbase高速全量,增量同步工具:mybus
mybus
實現MySQL數據庫到Redis,以及HBASE的全量,以及增量同步
- 支持通過正則表達式指定需要導出的db以及表
- bus程序無狀態,每一行有自己的位置點,位置點信息存儲在下游db中
- 增量同步通過解析MySQL的行復制日志,完成增量數據的同步
- 通過編寫so,實現轉換的業務邏輯
- 上下游ip,端口,需要導出的schema信息都存儲在configservice中,configservice是一個用redis作為存儲的基于django的pythonweb程序 </p>
程序作為基礎組件,在新浪以及微博的數據運維中,其可靠性得到了充分驗證
使用方式如下:
一. 編譯程序 - 代碼中包含了鏈接mysql以及hbase的庫,目前支持centos5/centos6,centos7暫不支持
- 進入mybus目錄,執行make命令,如果make失敗,請將結果貼出來 </p>
二. 啟動configservice
- redis官網下載redis隨便一個版本, 安裝,并運行,得到redis_ip, redis_port,暫不支持rediscluster
- 進入bus_manager/business目錄,修改views.py文件,填入具體的redis_ip, redis_port
- 然后返回bus_manger目錄,執行nohup python manage.py runserver 0.0.0.0:8888 & </p>
三. 配置msg_test模擬業務
- 打開瀏覽器,執行http://host:8888, 打開configservice頁面
- 添加業務msg_test
- 配置msg_test,配置較為復雜,后面會詳細介紹,字符集轉換慎用,最好下游和上游數據集一致
- 配置schema的時候,db和table的名字請用正則表達式,對于列,請采用c1#c2#c3的形式,統計開關,用來確定這個表的數據是否要統計 </p>
四. 編譯轉換插件并copy到具體位置 1. 進入myso/msg 目錄下,執行make命令,生成libprocess.so
- 進入src目錄,執行mkdir msg && cp -ap ../myso/msg/libprocess.so msg
- 進入src目錄,執行/usr/local/databus/bus -x msg_test -p 18889 -m 127.0.0.1:9999 </p>
五. 建立上游數據庫,我們選用的mysql版本為5.5
- 啟動mysql數據庫,建立要導出的heart_beat表 </p>
六. 建立下游數據庫,redis數據庫版本沒有具體要求
- 啟動redis數據庫 </p>
七. 根據設定配置,執行命令
- 在configservice頁面選擇info source,檢查下上下游配置是否正確
- 在configservice頁面選擇info matchschema,檢查導出對應的schema信息是否正確
- 然后執行啟動全量復制就開始全量復制,全量后要增量復制,修改選項,再執行啟動增量復制就可以了
- 選擇info, 檢查是否有error信息 </p>
這里說的這些對于真正要run起來還是不太夠的,我們的思路其實很清晰
- 所有的配置都要存在configservice中,所以所有的配置都在頁面上完成,配置有些復雜
- bus啟動不需要配置文件,但是需要制定configservice的dns和port
- 我們的底層運維系統采用了salt, 我們的web服務器運行在master上,所以bus的啟動,日志查看都在web頁面上完成,同時bus,支持采用redis協議對其監控,啟動關閉傳輸,關閉程序等操作 </p> https://github.com/liudong1983/mybus
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!