大數據實踐-數據同步篇tungsten-relicator(mysql->mongo)

[導讀]  java

           隨着公司業務的快速發展數據量也迅速的增大,基於用戶各個維度深度分析,關係型數據壓力愈來愈大;所以急於尋找一些解決方案;調研了好久最後採用了 golang+mongod集羣的這個方案,使用mongo作數據分析的存儲端,數據同步就成爲一個問題,目前網上主流的工具和解決方案都比較少,惟一一個稍微多點的文章就是tungsten-relicator,最後技術選型也才用了它,目前也使用了快一年了,遇到過不少問題,但基本還算比較穩定。mysql

 

tungsten-relicator介紹linux

Tungsten Replicator 是一個高性能、開源的數據複製引擎,用於 MySQL、Postgres 和 Oracle 數據庫。這是 Continuent 最早進的集羣解決方案的核心組件之一。golang

第三方數據複製引擎--Tungsten-Replicator 主要特色:sql

1 支持高版本MySQL向低版本複製,5.1-->5.0
2 支持跨數據庫系統的複製,MySQL-->PgSQL
3 支持多主庫向單臺Slave的複製,Multi-Master-->Slave
4 G-Replicator提取數據的更新記錄寫到MySQL 隊列表Queue;基於這個隊列,能夠爲其餘應用服務提供便利mongodb

 

方案設計數據庫

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

       一、中止從庫的主從同步,導出從庫中的全部數據,清空從庫;ruby

       二、配置從庫和第二從庫的同步服務器

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

       四、將從庫導出的數據重新導入從庫

      五、重啓啓動主從同步。

部署完成後的圖解

                                 同步圖

 

 

搭建tungsten-relicator同步

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

首先配置主服務器(192.168.0.1)

一、安裝基礎環境 JAVA  RUBY

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

二、修改系統的最大連接數

1)查看 ulimit -n

2)更改

vim /etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

3)重啓linux

      reboot

三、修改mysql配置

vi /etc/my.cnf
最下面添加
binlog_format=row
max_allowed_packet = 52M
log_slave_updates = 1
同時中止同步
slave stop;

四、tungsten主程序配置

解壓 
tar -zxvf tungsten-replicator-2.2.1-403.tar.gz
cd 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  --  同步的數據庫庫名

 

五、查看tungsten 同步狀態

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

 

 

配置從服務器(192.168.0.2)

一、安裝基礎環境 JAVA  RUBY

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

二、修改系統的最大連接數

1)查看 ulimit -n

2)更改

vim /etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

3)重啓linux

      reboot

三、配置免密碼登陸(從tungsten從服務器免密碼登陸主服務器)

  ssh-keygen -t rsa    一路回車
  cd .ssh/
  cp id_rsa.pub authorized_keys
  chmod 600 authorized_keys
  scp authorized_keys root@192.168.0.2:/root/.ssh
  chmod 700 -R .ssh
 
  驗證無密碼登陸:ssh 192.168.0.1 

四、tungsten從服務程序配置

解壓 
tar -zxvf tungsten-replicator-2.2.1-403.tar.gz
cd 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  --  主服務地址

五、查看tungsten 同步狀態

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

六、啓動mysql同步數據了

start slave;

 

 

 

運營篇

一、查看同步工具的日誌

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

二、查看同步的狀態

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

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

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

四、當一些表裏面存在特殊符號可能會致使同步出錯,能夠在從服務器啓動的時候加上一下參數跳過同步的表

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

 

 

若是在運行一段時間後,由於某些緣由須要將數據抹掉從新同步的話,能夠安裝一下的步驟

       一、中止從庫的主從同步,導出從庫中的全部數據,清空從庫;

       二、刪除mysql從庫的tungsten_mysql2mongodb庫

       三、刪除mongo的 tungsten_mysql2mongodb庫

       四、重啓啓動tungsten的主從同步(安裝啓動命令)

       五、將從庫導出的數據重新導入從庫

        六、啓動mysql主從同步。

相關文章
相關標籤/搜索