Windows安裝canal、canal-adapter同步docker的數(shù)據(jù)庫信息到docker的es

docker的mysql配置(鏈接)和elasticsearch的配置(鏈接)詳見之前的文章仿野,這里不再贅述。本文主要講解Windows下面安裝canal和canal-adapter盏档,并實(shí)現(xiàn)同步docker的數(shù)據(jù)庫信息到docker的es窃判。

一、安裝java

已安裝的可以跳過此步驟惠窄。下載地址:java下載

java

  • 配置java環(huán)境變量
    • 新建JAVA_HOME 變量


      JAVA_HOME

      輸入:

      變量名:JAVA_HOME
      變量值:電腦上JDK安裝的絕對路徑
      

      JDK 路徑下必須能夠看到如下的文件蒸眠。


      jdk路徑
    • 新建/修改 CLASSPATH 變量
      輸入
      變量名:CLASSPATH
      變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
      
    • 修改Path 變量
      新建兩條路徑:
      %JAVA_HOME%\bin
      %JAVA_HOME%\jre\bin
      
Path
  • 檢查 打開 cmd,輸入 java睬捶,出現(xiàn)一連串的指令提示黔宛,說明配置成功了:


    java

二、安裝配置canal

注意:安裝目錄不能出現(xiàn)中文

  • 下載地址這里以1.1.5版本為例擒贸。建議使用迅雷下載。

    canal

    用壓縮軟件解壓剛剛下載的兩個(gè)壓縮包觉渴,然后把解壓后的文件放到自己喜歡的目錄下介劫。

  • 配置

    • 修改canal/conf/example/instance.properties文件
      instance.properties

      需要改動(dòng)的項(xiàng)已在圖中框出。
canal.instance.master.address=172.16.10.26:3306  #指定要讀取binlog的MySQL的IP地址和端口
canal.instance.master.journal.name= #從指定的binlog文件開始讀取數(shù)據(jù)
canal.instance.master.position= #指定偏移量案淋,做過主從復(fù)制的應(yīng)該都理解這兩個(gè)參數(shù)座韵。
                                 #tips:binlog和偏移量也可以不指定,則canal-server會(huì)從當(dāng)前的位置開始讀取踢京。我建議不設(shè)置
canal.instance.master.timestamp=  #mysql主庫鏈接時(shí)起始的binlog的時(shí)間戳,默認(rèn):無

# username/password
canal.instance.dbUsername=canal #指定連接mysql的用戶密碼
canal.instance.dbPassword=Aa123456.
canal.instance.connectionCharset = UTF-8 #字符集

# table regex
# mysql 數(shù)據(jù)解析關(guān)注的表誉碴,Perl正則表達(dá)式.多個(gè)正則之間以逗號(,)分隔,轉(zhuǎn)義符需要雙斜杠(\\) 
# 常見例子:
# 1. 所有表:.* or .*\\..*
# 2. canal schema下所有表: canal\\..*
# 3. canal下的以canal打頭的表:canal\\.canal.*
# 4. canal schema下的一張表:canal.test1
# 5. 多個(gè)規(guī)則組合使用:canal\\..*,mysql.test1,mysql.test2 (逗號分隔)
canal.instance.filter.regex=risk.canal,risk.cwx #這個(gè)是比較重要的參數(shù)瓣距,匹配庫表白名單黔帕,比如我只要test庫的user表的增量數(shù)據(jù),則這樣寫 test.user
  • 啟動(dòng)
雙擊bin目錄下的startup.bat
  • 查看 server 日志 日志在canal.deployer-1.1.5目錄的logs文件夾下蹈丸。

  • 修改canal.adapter-1.1.5/conf/application.yml文件成黄。

application.yml
application.yml
  • 新建canal.adapter-1.1.5/conf/es7/canal.yml文件呐芥,將下面的內(nèi)容粘貼進(jìn)去
dataSourceKey: defaultDS   #指定數(shù)據(jù)源,這個(gè)值和adapter的application.yml文件中配置的srcDataSources值對應(yīng)奋岁。
destination: example       #指定canal-server中配置的某個(gè)實(shí)例的名字思瘟,注意:我們可能配置多個(gè)實(shí)例,你要清楚的知道每個(gè)實(shí)例收集的是那些數(shù)據(jù)闻伶,不要瞎搞滨攻。
groupId: g1                #組ID,對應(yīng)application.yml中的canalAdapters/groups/groupId中的值
outerAdapterKey: db1Key    #對應(yīng)application.yml中的canalAdapters/groups/outerAdapters/name/key中的值
esMapping:                 #ES的mapping(映射)
  _index: canal            #要同步到的ES的索引名稱(自定義)蓝翰,需要自己在ES上創(chuàng)建哦铡买!
  #_type: _doc              #ES索引的類型名稱(自定義)
  _id: _id                 #ES標(biāo)示文檔的唯一標(biāo)示,通常對應(yīng)數(shù)據(jù)表中的主鍵ID字段霎箍,注意我這里寫成的是"_id"奇钞,有個(gè)下劃線哦!
  #pk: id                  #如果不需要_id, 則需要指定一個(gè)屬性為主鍵屬性
  sql: "select t.id as _id, t.name, t.sex, t.age, t.amount, t.email, t.occur_time from canal t" #這里就是數(shù)據(jù)表中的每個(gè)字段到ES索引中叫什么名字的sql映射漂坏,注意映射到es中的每個(gè)字段都要是唯一的景埃,不能重復(fù)。
  #etlCondition: "where t.occur_time>='{0}'"
commitBatch: 3000

mysql-connector-java下載5.1.27版本的jar文件顶别,拷貝到canal-adapter文件夾下的lib文件夾谷徙,然后把之前的刪掉。

  • 創(chuàng)建表
CREATE TABLE `canal` (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(20) NULL COMMENT '名稱',
sex  varchar(2) NULL COMMENT '性別',
age  int NULL COMMENT '年齡',
amount decimal(12,2) NULL COMMENT '資產(chǎn)',
email  varchar(50) NULL COMMENT '郵箱',
occur_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
  • 創(chuàng)建es索引


    創(chuàng)建canal索引
  • 創(chuàng)建mapping


    創(chuàng)建mapping
{
    "properties": {
        "id": {
            "type": "long"
        },
        "name": {
            "type": "text"
        },
        "sex": {
            "type": "text"
        },
        "age": {
            "type": "long"
        },
        "amount": {
            "type": "text"
        },
        "email": {
            "type": "text"
        },
        "occur_time": {
            "type": "date"
        }
    }
}
  • 啟動(dòng)canal-adapter
雙擊bin目錄下的startup.bat
  • 查看 adapter 日志 日志在canal.adapter-1.1.5目錄的logs文件夾下驯绎。
  • 插入1條數(shù)據(jù):
insert into canal(id,name,sex,age,amount,email,occur_time) values(null,'cwx','男',18,100000000,'249299170@qq.com',now());
insert
  • 更新1條數(shù)據(jù):
update canal set name='cwx1',sex='女',age=28,amount=200000,email='asdf',occur_time=now() where id=1;
update
  • 刪除1條數(shù)據(jù):
delete from canal where id=1;
delete
  • 需要同步哪個(gè)配置就去運(yùn)行
curl -X POST 'localhost:8081/etl/es7/db1Key/canal.yml'
全量同步
kibana dev tools 測試

補(bǔ)充

一完慧、如果啟動(dòng)canal-adapter報(bào)以下錯(cuò)誤

java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource

這個(gè)是 druid 包沖突導(dǎo)致的,解決辦法如下

  • 下載源碼包 下載

    canal源碼

  • 解壓后剩失,使用IDEA打開屈尼,定位到 client-adapter.escore 模塊的 pom.xml 的 druid 更新為

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <scope>provided</scope>
</dependency>
pom.xml
  • 更新后,在項(xiàng)目根目錄下執(zhí)行
mvn clean package
  • 然后到 canal-canal-1.1.5/client-adapter/es7x/target下 將打包好的 client-adapter.es7x-1.1.5-jar-with-dependencies.jar 替換掉 canal-adapter/plugin 下原來的拴孤,重啟 Canal Adapter即可脾歧。

二、 如果mvn命令無法使用演熟,可以先安裝maven工具 下載

maven

  • 解壓maven 放在需要安裝的目錄
  • 配置環(huán)境變量


    maven配置環(huán)境變量
maven配置環(huán)境變量
  • 在終端輸入以下命令鞭执,查看是否安裝成功
mvn -v
查看maven是否安裝成功

本文結(jié)束。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芒粹,一起剝皮案震驚了整個(gè)濱河市兄纺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌化漆,老刑警劉巖估脆,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異获三,居然都是意外死亡旁蔼,警方通過查閱死者的電腦和手機(jī)锨苏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棺聊,“玉大人伞租,你說我怎么就攤上這事∠夼澹” “怎么了葵诈?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長祟同。 經(jīng)常有香客問我作喘,道長,這世上最難降的妖魔是什么晕城? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任泞坦,我火速辦了婚禮,結(jié)果婚禮上砖顷,老公的妹妹穿的比我還像新娘贰锁。我一直安慰自己,他們只是感情好滤蝠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布豌熄。 她就那樣靜靜地躺著,像睡著了一般物咳。 火紅的嫁衣襯著肌膚如雪锣险。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天览闰,我揣著相機(jī)與錄音芯肤,去河邊找鬼。 笑死焕济,一個(gè)胖子當(dāng)著我的面吹牛纷妆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晴弃,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逊拍!你這毒婦竟也來了上鞠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤芯丧,失蹤者是張志新(化名)和其女友劉穎芍阎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缨恒,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谴咸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年轮听,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岭佳。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡血巍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出珊随,到底是詐尸還是另有隱情述寡,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布叶洞,位于F島的核電站鲫凶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏衩辟。R本人自食惡果不足惜螟炫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艺晴。 院中可真熱鬧昼钻,春花似錦、人聲如沸财饥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钥星。三九已至沾瓦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谦炒,已是汗流浹背贯莺。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宁改,地道東北人缕探。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像还蹲,于是被迫代替她去往敵國和親爹耗。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容