天天看點

大資料實踐-資料同步篇tungsten-relicator(mysql->mongo)

[導讀] 

           随着公司業務的快速發展資料量也迅速的增大,基于使用者各個次元深度分析,關系型資料壓力越來越大;是以急于尋找一些解決方案;調研了很久最後采用了 golang+mongod叢集的這個方案,使用mongo做資料分析的存儲端,資料同步就成為一個問題,目前網上主流的工具和解決方案都比較少,唯一一個稍微多點的文章就是tungsten-relicator,最後技術選型也才用了它,目前也使用了快一年了,遇到過很多問題,但基本還算比較穩定。

tungsten-relicator介紹

Tungsten Replicator 是一個高性能、開源的資料複制引擎,用于 MySQL、Postgres 和 Oracle 資料庫。這是 Continuent 最先進的叢集解決方案的核心元件之一。

第三方資料複制引擎--Tungsten-Replicator 主要特點:

1 支援高版本MySQL向低版本複制,5.1-->5.0

2 支援跨資料庫系統的複制,MySQL-->PgSQL

3 支援多主庫向單台Slave的複制,Multi-Master-->Slave

4 G-Replicator提取資料的更新記錄寫到MySQL 隊清單Queue;基于這個隊列,可以為其他應用服務提供便利

方案設計:

           公司以前使用着mysql的主從,為了不影響正常業務,又添加了一個從庫;從第二個從庫同步到mongo叢集中;本文不在描述mysql叢集和monggo叢集搭建,重點讨論tungsten-relicator同步和部署

       1、停止從庫的主從同步,導出從庫中的所有資料,清空從庫;

       2、配置從庫和第二從庫的同步

       3、搭建tungsten-relicator同步(mysql-mongo)

       4、将從庫導出的資料從新導入從庫

      5、重新開機啟動主從同步。

部署完成後的圖解

大資料實踐-資料同步篇tungsten-relicator(mysql->mongo)

搭建tungsten-relicator同步

tungsten-relicator需要部署到兩條伺服器,主服務負責讀mysql binlog日志解析後傳送給從伺服器,從伺服器接收資料并同步到mongo

首先配置主伺服器(192.168.0.1)

1、安裝基礎環境 JAVA  RUBY

2、修改系統的最大連結數

1)檢視 ulimit -n

2)更改

vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535

3)重新開機linux

      reboot

3、修改mysql配置

4、tungsten主程式配置

master  --  主伺服器Ip位址

replication-user  --  myslq使用者名

replication-password  --  mysql密碼

property=replicator.filter.replicate.do  --  同步的資料庫庫名

5、檢視tungsten 同步狀态

配置從伺服器(192.168.0.2)

3、配置免密碼登入(從tungsten從伺服器免密碼登入主伺服器)

4、tungsten從服務程式配置

mongodb安裝在本地

master-host  --  主服務位址

6、啟動mysql同步資料了

營運篇

1、檢視同步工具的日志

2、檢視同步的狀态

3、當同步出錯後,解決問題後,執行指令重新同步

4、當一些表裡面存在特殊符号可能會導緻同步出錯,可以在從伺服器啟動的時候加上一下參數跳過同步的表

如果在運作一段時間後,因為某些原因需要将資料抹掉重新同步的話,可以安裝一下的步驟

       2、删除mysql從庫的tungsten_mysql2mongodb庫

       3、删除mongo的 tungsten_mysql2mongodb庫

       4、重新開機啟動tungsten的主從同步(安裝啟動指令)

       5、将從庫導出的資料從新導入從庫

        6、啟動mysql主從同步。