MySQL數據庫同redis以及hbase高速全量,增量同步工具:mybus

jopen 9年前發布 | 47K 次閱讀 mybus MySQL 數據庫服務器

mybus

實現MySQL數據庫到Redis,以及HBASE的全量,以及增量同步

  1. 支持通過正則表達式指定需要導出的db以及表
  2. bus程序無狀態,每一行有自己的位置點,位置點信息存儲在下游db中
  3. 增量同步通過解析MySQL的行復制日志,完成增量數據的同步
  4. 通過編寫so,實現轉換的業務邏輯
  5. 上下游ip,端口,需要導出的schema信息都存儲在configservice中,configservice是一個用redis作為存儲的基于django的pythonweb程序 </p>

    程序作為基礎組件,在新浪以及微博的數據運維中,其可靠性得到了充分驗證

    使用方式如下:
    一. 編譯程序

  6. 代碼中包含了鏈接mysql以及hbase的庫,目前支持centos5/centos6,centos7暫不支持
  7. 進入mybus目錄,執行make命令,如果make失敗,請將結果貼出來 </p>

    二. 啟動configservice

  8. redis官網下載redis隨便一個版本, 安裝,并運行,得到redis_ip, redis_port,暫不支持rediscluster
  9. 進入bus_manager/business目錄,修改views.py文件,填入具體的redis_ip, redis_port
  10. 然后返回bus_manger目錄,執行nohup python manage.py runserver 0.0.0.0:8888 & </p>

    三. 配置msg_test模擬業務

  11. 打開瀏覽器,執行http://host:8888, 打開configservice頁面
  12. 添加業務msg_test
  13. 配置msg_test,配置較為復雜,后面會詳細介紹,字符集轉換慎用,最好下游和上游數據集一致
  14. 配置schema的時候,db和table的名字請用正則表達式,對于列,請采用c1#c2#c3的形式,統計開關,用來確定這個表的數據是否要統計 </p>

    四. 編譯轉換插件并copy到具體位置 1. 進入myso/msg 目錄下,執行make命令,生成libprocess.so

  15. 進入src目錄,執行mkdir msg && cp -ap ../myso/msg/libprocess.so msg
  16. 進入src目錄,執行/usr/local/databus/bus -x msg_test -p 18889 -m 127.0.0.1:9999 </p>

    五. 建立上游數據庫,我們選用的mysql版本為5.5

  17. 啟動mysql數據庫,建立要導出的heart_beat表 </p>

    六. 建立下游數據庫,redis數據庫版本沒有具體要求

  18. 啟動redis數據庫 </p>

    七. 根據設定配置,執行命令

  19. 在configservice頁面選擇info source,檢查下上下游配置是否正確
  20. 在configservice頁面選擇info matchschema,檢查導出對應的schema信息是否正確
  21. 然后執行啟動全量復制就開始全量復制,全量后要增量復制,修改選項,再執行啟動增量復制就可以了
  22. 選擇info, 檢查是否有error信息 </p>

    這里說的這些對于真正要run起來還是不太夠的,我們的思路其實很清晰

  23. 所有的配置都要存在configservice中,所以所有的配置都在頁面上完成,配置有些復雜
  24. bus啟動不需要配置文件,但是需要制定configservice的dns和port
  25. 我們的底層運維系統采用了salt, 我們的web服務器運行在master上,所以bus的啟動,日志查看都在web頁面上完成,同時bus,支持采用redis協議對其監控,啟動關閉傳輸,關閉程序等操作 </p> https://github.com/liudong1983/mybus
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!