1. 程式人生 > >SODBASE實時大資料基礎(一):實時同步Mysql資料庫到Kafka

SODBASE實時大資料基礎(一):實時同步Mysql資料庫到Kafka

在實際大資料工作中,常常有實時監測資料庫變化或實時同步資料到大資料儲存,解決大資料實時分析的需求。同時,增量同步資料庫資料相比全量查詢也減少了網路頻寬消耗。本文以Mysql的bin-log到Kafka為例,使用Canal Server,通過SODBASE引擎不用寫程式就可以設定資料同步規則。

一、搭建Canal Server

1.1. 開啟bin-log

(1)編輯mysql配置檔案

 vi /etc/my.cnf

新增

log-bin=mysql-bin #新增這一行就ok
binlog-format=ROW #選擇row模式
server_id=1#配置mysql replaction需要定義,不能和canal的slaveId重複
執行mysql客戶端
mysql -uroot -p
mysql>show binlog events;
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
| Log_name         | Pos |Event_type  | Server_id | End_log_pos |Info                                  |
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
| mysql-bin.000001 |   4 |Format_desc |         1 |         106 | Server ver: 5.1.51-log,Binlog ver: 4 |
+------------------+-----+-------------+-----------+-------------+---------------------------------------+
1 row in set (0.00 sec)

(2)重啟mysql
[[email protected] user]# service mysqld stop
Stoppingmysqld:                                          [  OK  ]
[[email protected] user]# service mysqld start
Startingmysqld:                                          [  OK  ]


1.2. 下載 canal.deployer-1.0.21.tar.gz

wget https://github.com/alibaba/canal/releases/download/canal-1.0.17/canal.deployer-1.0.17.tar.gz

解壓
tar zxvfcanal.deployer-$version.tar.gz

1.3. 配置修改

應用引數:

vi conf/example/instance.properties
#################################################
## mysql serverId
canal.instance.mysql.slaveId = 1234
 
# position info,需要改成自己的資料庫資訊
canal.instance.master.address =127.0.0.1:3306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
 
#canal.instance.standby.address =
#canal.instance.standby.journal.name=
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
 
# username/password,需要改成自己的資料庫資訊
canal.instance.dbUsername =canal 
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName =
canal.instance.connectionCharset =UTF-8
 
# table regex
canal.instance.filter.regex =.*\\..*
 
#################################################



說明:

 canal.instance.connectionCharset 代表資料庫的編碼方式對應到java中的編碼型別,比如UTF-8,GBK , ISO-8859-1

4. 準備啟動

 sh bin/startup.sh

5. 檢視日誌

 vi logs/canal/canal.log

2013-02-05 22:45:27.967 [main]INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## start the canalserver.

2013-02-05 22:45:28.113 [main]INFO  com.alibaba.otter.canal.deployer.CanalController- ## start the canal server[10.1.29.120:11111]

2013-02-0522:45:28.210 [main] INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## the canal server isrunning now ......

具體instance的日誌:

$ vi logs/example/example.log

2013-02-05 22:50:45.636 [main]INFO c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loadingproperties file from class path resource [canal.properties]

2013-02-05 22:50:45.641 [main]INFO c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loadingproperties file from class path resource [example/instance.properties]

2013-02-05 22:50:45.803 [main]INFO c.a.otter.canal.instance.spring.CanalInstanceWithSpring - startCannalInstance for 1-example

2013-02-0522:50:45.810 [main] INFO c.a.otter.canal.instance.spring.CanalInstanceWithSpring- start successful....

二、建立同步規則模型

2.1. 編輯同步規則

在SODBASE Studio中新建一個模型canaltokafka(此模型也可以下載canaltokafka.sod,在Studio中匯入)

配置Input

加一個Filter,作為示例,過濾test資料庫的t2表


配置Output輸出


T1.* 表示表字段*的新值,例如T1.a 表示表字段a的新值

T1.b_* 表示表字段*修改前的值,例如T1.b_a 表示表字段a的原值

T1.eventtype表示資料操作型別,U為更新,I為插入,D為刪除

2.2 執行模型

方法一:

在SODBASE Studio中執行此模型(本示例是在Linux XWindow中執行的)

方法二:

規則模型匯出為soddata檔案,部署到SODBASE Server

另外,soddata檔案可以和XML檔案相互轉化,即讀者可以通過編輯XML來修改同步規則。

三、測試

3.1 安裝Kafka,建立1個topic (testbinlog)

找一臺linux機器,從官方網站下載Kafka,解壓,啟動

 bin/zookeeper-server-start.sh config/zookeeper.properties &
 bin/kafka-server-start.sh config/server.properties &
 bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testbinlog &
 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic testbinlog


3.2 mysql修改資料

mysql> use test

 
mysql> create table t2(a int,b int);
Query OK, 0 rows affected (0.06 sec)
 
mysql> insert into t2 values(1,2);
Query OK, 1 row affected (0.00 sec)

mysql> insert into t2 values(1,3);
Query OK, 1 row affected (0.00 sec)

mysql> update t2 set a = 0 where b = 2;
Query OK, 1 row affected (0.08 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> delete from t2 where a = 0;
Query OK, 1 row affected (0.07 sec)


3.3 Kafka輸出

使用kafka-console-consumer.sh消費

可以看到資料庫變化都傳到Kafka了。此後可以進行資料實時分析或接入大資料儲存如HBase等,實現業務資料的實時同步和使用。

SODBASE 實時大樹據軟體用於輕鬆、高效實施資料監測、監控類、實時交易類專案微笑快取擴充套件參見


相關推薦

SODBASE實時資料基礎實時同步Mysql資料庫Kafka

在實際大資料工作中,常常有實時監測資料庫變化或實時同步資料到大資料儲存,解決大資料實時分析的需求。同時,增量同步資料庫資料相比全量查詢也減少了網路頻寬消耗。本文以Mysql的bin-log到Kafka為例,使用Canal Server,通過SODBASE引擎不用寫程式就可以

Storm實時資料處理

自從Google發表了3篇舉世矚目的論文(Google File System、BigTable和MapReduce)以後,大資料被引爆了。如果說計算機的威力相當於一枚大炮的威力的話,那麼網際網路的威力相當於一顆原子彈,而大資料的威力則相當於氫彈,大資料成為了IT發展史上的

資料生態系統基礎Apache Kafka基礎介紹和安裝

http://blog.csdn.net/zhy_yz/article/details/5905637 一、 Apache kafka基礎介紹           1、kafka 是什麼?              首先一句話: Apache Kaf

資料基礎1zookeeper原始碼解析

五 原始碼解析   public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING;}zookeeper伺服器狀態:剛啟動LOOKING,follower是FOLLOWING,leader是LEADING,observer是

資料作業基於docker的hadoop叢集環境搭建

主要是根據廈門大學資料庫實驗室的教程(http://dblab.xmu.edu.cn/blog/1233/)在Ubuntu16.04環境下進行搭建。 一、安裝docker(Docker CE) 根據docker官網教程(https://docs.docker.

Spark快速資料分析

楔子 Spark快速大資料分析 前3章內容,僅作為學習,有斷章取義的嫌疑。如有問題參考原書 Spark快速大資料分析 以下為了打字方便,可能不是在注意大小寫 1 Spark資料分析導論 1.1 Spark是什麼 Spark是一個用來實現快速而通用的叢

Pandas基礎資料的存取和檢視

使用pandas做資料分析,首先匯入pandas庫: import pandas as pd pandas的資料結構有兩種:Series和DataFrame。前者可以理解為陣列,後者可以理解為表格。我們主要講解DataFrame。 1.建立DataFrame: 由等長列表構成。

資料基礎從零開始安裝配置Hadoop 2.7.2+Spark 2.0.0到Ubuntu 16.04

raw to spark 0 install ubuntu 14.04.01 desktop x64 1 system基礎配置 《以下都是root模式》 1.3 root password sudo passwd root 1.5 root登入選項 a.在terminal下

資料學習 | 初識 Hadoop

作者: seriouszyx 首發地址:https://seriouszyx.top/ 程式碼均可在 Github 上找到(求Star) 最近想要了解一些前沿技術,不能一門心思眼中只有 web,因為我目前對 Java 語言及其生態相對熟悉,所以在網上搜集了 Hadoop 相關文章,並做了整合。

Storm實時資料處理

在上一篇部落格(Storm實時大資料處理(一))中,我介紹了Storm的基本概念和原理,本文我們開始基於Storm提供的API開發自己的應用程式。入門Storm應用程式開發很簡單,這得益於設計者為我們精心設計的簡單API。 一、搭建開發環境 在生產環境中,Storm叢集執行

Storm實時資料處理

本文主題:構建和執行Storm拓撲(Build and Run the Storm Topology) 一、構建Storm拓撲 實現了Spout和Bolt後,就可以構建Storm拓撲了,使用TopologyBuilder構建Topology。 TopologyBuilde

SQL夯實基礎inner join、outer join和cross join的區別

創建 color varchar mage bubuko where 是你 cross http 一、數據構建 先建表,再說話 create database Test use Test create table A ( AID int identity(1

JavaScript 資料結構 連結串列

前言 從實用性角度來說,連結串列對Javascript 來說沒有任何價值,為什麼呢? 我們先了解連結串列的特性,這個特性我們放在c++前提下來說,因為 這個特性是 根據 記憶體特性 來闡述的,Javascript 不存在記憶體操作,所有資料型別,本質性繼承Object 物件,而Ob

資料導論4——OLTP與OLAP、資料庫資料倉庫

公司內部的資料自下而上流動,同時完成資料到資訊、知識、洞察的轉化過程。 而企業內部資料,從日常OLTP流程中產生,實時儲存進不同的資料庫中。同時定期被提取、經格式轉化、清洗和載入(ETL),以統一的格式儲存進資料倉庫,以供決策者進行OLAP處理,並將處理結果視覺化。 OLTP & OLAP 企業

everything用於行動硬碟資料管理離線搜尋

使用【everything檔案搜尋軟體】建立行動硬碟列表,實現離線檔案(夾)搜尋 第一步:開啟檔案列表。 第二步:另存離線檔案列表 2.1 複製行動硬碟某個分割槽的名稱。 2.2 檔案列表另存為 第三步:第一次搜尋,儲存搜尋結

資料結構什麼是資料結構

一、什麼是資料結構 1、資料結構的定義 資料:從計算機的角度來看,資料是所有能被輸入到計算機中且能被計算機處理的符號的集合。它是計算機操作的物件的總稱,也是計算機處理資訊的某種特定的符號表示形式(二進位制碼的抽象表示?)。 資料元素:資料元素是資料中的一個個體

再談資料結構棧和佇列

1 - 前言 棧和佇列是兩種非常常用的兩種資料結構,它們的邏輯結構是線性的,儲存結構有順序儲存和鏈式儲存。在平時的學習中,感覺雖然棧和佇列的概念十分容易理解,但是對於這兩種資料結構的靈活運用及程式碼實現還是比較生疏。需要結合實際問題來熟練佇列和棧的操作。 2 - 例題分析 2.1

Windows核心基礎許可權級別

許可權級別是CPU中的一個概念,CPU中包含4個許可權級別,分別是0環,1環,2環,3環,CPU設計製造商最初希望0環用於執行核心,1環和2環執行裝置驅動,3環執行應用程式,但是系統設計者為了簡單將驅動和核心都放在0環,應用程式放在3環,沒有使用1環和2環。後來CPU設計製造商乾脆

資料倉庫認識資料倉庫

剛接觸資料倉庫是在我的第一份實習工作——資料中心資料管理系統開發,它是一個B/S架構的應用,與一般的專案不同的是,系統是以資料倉庫來進行資料存取的,這是我第一次聽說數倉這個詞,感覺它龐大而且神祕,不知道從何入手,對資料倉庫有一種敬畏之心,後來經過慢慢的學習和使用,發現其實它在應用開發中的使用方法跟傳統關係資

bigdata資料分析Java環境配置

Java環境 1.下載jdk(用FileZilla工具連線伺服器後上傳到需要安裝的目錄) 在 /opt/deploy 下新建 java 資料夾:  # mkdir / opt/deploy /java   解壓命令:tar zxvf 壓縮包名稱 (例如:tar zxvf jdk-8u191-