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

來源:互聯網
上載者:User

標籤:

[導讀] 

           隨著公司業務的快速發展資料量也迅速的增大,基於使用者各個維度深度分析,關係型資料壓力越來越大;因此急於尋找一些解決方案;調研了很久最後採用了 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同步

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

首先配置主伺服器(192.168.0.1)

1、安裝基礎環境 JAVA  RUBY

yum -y install java-1.7.0-openjdk*yum -y install ruby

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

1)查看 ulimit -n

2)更改

vim /etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

3)重啟linux

      reboot

3、修改mysql配置

vi /etc/my.cnf最下面添加binlog_format=rowmax_allowed_packet = 52Mlog_slave_updates = 1
同時停止同步
slave stop;

4、tungsten主程式配置

解壓 
tar -zxvf tungsten-replicator-2.2.1-403.tar.gzcd tungsten-replicator-2.2.1-403啟動   ./tools/tpm install mysql2mongodb     --master=192.168.0.1     --install-directory=/opt/continuent     --replication-user=root    --replication-password=root    --enable-heterogenous-master=true     --repl-svc-extractor-filters=replicate     --property=replicator.filter.replicate.do=zhongxin     --property=replicator.filter.pkey.addColumnsToDeletes=true     --property=replicator.filter.pkey.addPkeyToInserts=true      --start

master  --  主伺服器Ip地址

replication-user  --  myslq使用者名稱

replication-password  --  mysql密碼

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

 

5、查看tungsten 同步狀態

/opt/continuent/tungsten/tungsten-replicator/bin/trepctl status
state    : ONLINE 表示服務啟動正常

 

 

配置從伺服器(192.168.0.2)

1、安裝基礎環境 JAVA  RUBY

yum -y install java-1.7.0-openjdk*yum -y install ruby

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

1)查看 ulimit -n

2)更改

vim /etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

3)重啟linux

      reboot

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

  ssh-keygen -t rsa    一路斷行符號  cd .ssh/  cp id_rsa.pub authorized_keys  chmod 600 authorized_keys  scp authorized_keys [email protected]192.168.0.2:/root/.ssh  chmod 700 -R .ssh
 
  驗證無密碼登入:ssh 192.168.0.1 

4、tungsten從服務程式配置

解壓 
tar -zxvf tungsten-replicator-2.2.1-403.tar.gzcd tungsten-replicator-2.2.1-403啟動   ./tools/tungsten-installer --master-slave -a  \
     --datasource-type=mongodb \
     --datasource-port=27001 \
     --master-host=192.168.0.1     \
     --service-name=mysql2mongodb  \
     --home-directory=/opt/continuent \
     --java-file-encoding=UTF8 \
     --svc-parallelization-type=none \
     --start-and-report

mongodb安裝在本地

master-host  --  主服務地址

5、查看tungsten 同步狀態

/opt/continuent/tungsten/tungsten-replicator/bin/trepctl status
state    : ONLINE 表示服務啟動正常

6、啟動mysql同步資料了

start slave;

 

 

 

運營篇

1、查看同步工具的日誌

tail -300f  /opt/continuent/tungsten/tungsten-replicator/log/trepsvc.logtail -30f /opt/continuent/service_logs/trepsvc.log

2、查看同步的狀態

/opt/continuent/tungsten/tungsten-replicator/bin/trepctl status/opt/continuent/tungsten/tungsten-replicator/bin/trepctl services

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

/opt/continuent/tungsten/tungsten-replicator/bin/trepctl -service mysql2mongodb online/opt/continuent/tungsten/tungsten-replicator/bin/trepctl status

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

--property=replicator.filter.replicate.ignore=zhongxin.zx_notice_req_log \

 

 

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

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

       2、刪除mysql從庫的tungsten_mysql2mongodb庫

       3、刪除mongo的 tungsten_mysql2mongodb庫

       4、重啟啟動tungsten的主從同步(安裝啟動命令)

       5、將從庫匯出的資料從新匯入從庫

        6、啟動mysql主從同步。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.