国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

canal實現(xiàn)MySQL和ES同步實踐

這篇具有很好參考價值的文章主要介紹了canal實現(xiàn)MySQL和ES同步實踐。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

canal是阿里開源的數(shù)據(jù)同步工具,基于binlog可以將數(shù)據(jù)庫同步到其他各類數(shù)據(jù)庫中,目標(biāo)數(shù)據(jù)庫支持mysql,postgresql,oracle,redis,MQ,ES等。

一、 基本原理

1、主從復(fù)制原理

MySQL的主從復(fù)制是依賴于binlog,也就是記錄MySQL上所有操作的邏輯日志保存在磁盤上。主從復(fù)制就是將binlog中的數(shù)據(jù)從主庫傳輸?shù)綇膸焐希话氵@個過程是異步的。

原理示意圖:
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

詳細(xì)流程:

  • 主庫寫binlog:主庫的更新SQL(create、update、insert、delete等)被寫入到binlog;
  • 主庫發(fā)送binlog:主庫創(chuàng)建一個log dump線程來發(fā)送binlog給從庫;
  • 從庫寫relay log:(從庫在連接到主節(jié)點時會創(chuàng)建一個IO線程,以請求主庫更新的binlog),并且把binlog信息寫入一個叫做relay log的日志文件;
  • 從庫回放:從庫還會創(chuàng)建一個SQL線程讀取relay log中的內(nèi)容,并且在從庫中回訪,最終實現(xiàn)主從一致性。

2、Canal介紹

主要流程:

  • Canal 服務(wù)端向 MySQL 的 master 節(jié)點傳輸dump協(xié)議;
  • MySQL 的 master 節(jié)點接收到 dump 請求后推送 binlog 日志給 Canal 服務(wù)端,解析 binlog 對象(原始為byte流)轉(zhuǎn)成 Json 格式;
  • Canal 客戶端通過 TCP 協(xié)議或 MQ 形式監(jiān)聽 Canal 服務(wù)端,同步數(shù)據(jù)到ES。
    failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

二、實操

這篇文章我將以“將 MySQL 中 coding 數(shù)據(jù)庫的 article 表同步到 ES ”為需求舉例
看一下article表的結(jié)構(gòu)(這里展示主要是為了展示后文的 yml文件 和 ES索引 是怎么回事):
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

1、軟件下載

個人電腦:Windows 11
JDK版本:jdk 11.0.21

1.1 MySQL

(默認(rèn)MySQL都已經(jīng)安裝了,登錄 mysql 按如下執(zhí)行)

  • 在 mysql 命令行輸入show variables like 'log_bin;'查看是否開啟binlog,如下圖顯式 NO 為開啟
    failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
  • 創(chuàng)建一個 canal 用戶,專門用于 canal 同步數(shù)據(jù)庫使用
# 注意大小寫
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

1.2 ES

  • 安裝地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
  • 版本:7.17.2
    failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
    1、點擊下載
    2、將下載后的壓縮包解壓到一文件夾(路徑最好不要含有中文或空格)
    3、雙擊bin/elasticsearch.bat啟動
    failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
    4、檢查是否成功,輸入http://localhost:9200/?pretty
    failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

1.3 Kibana

1、安裝地址:https://www.elastic.co/cn/downloads/past-releases#kibana
2、版本:7.14.0
3、解壓安裝到指定文件夾
4、雙擊 D:\ProgramFiles\kibana-7.14.0-windows-x86_64\bin\kibana.bat 啟動
5、輸入 http://localhost:5601 檢驗是否啟動成功
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
6、在 Kibana 中創(chuàng)建ES索引(可以通過PostMan創(chuàng)建,看下圖示意)

PUT article
{
    "mappings" : {
        "properties" :{
            "id" :{
                "type" : "integer"
            },
            "user_id" : {
                "type" : "integer"
            },
            "article_type" : {
                "type" : "integer"
            },
            "title" : {
                "type" : "text",
                "analyzer" : "ik_max_word"
            },
            "short_title" : {
                "type" : "text",
                "analyzer" : "ik_max_word"
            },
            "picture" : {
                "type" : "text",
                "analyzer" : "ik_max_word"
            },
            "summary" : {
                "type" : "text",
                "analyzer" : "ik_max_word"
            },
            "category_id" : {
                "type" : "integer"
            },
            "source" : {
                "type" : "integer"
            },
            "source_url" : {
                "type" : "text",
                "analyzer" : "ik_max_word"
            },
            "offical_stat" : {
                "type" : "integer"
            },
            "topping_stat" : {
                "type" : "integer"
            },
            "cream_stat" : {
                "type" : "integer"
            },
            "status" : {
                "type" : "integer"
            },
            "deleted" : {
                "type" : "integer"
            },
            "create_time" : {
                "type" : "date"
            },
            "update_time" : {
                "type" : "date"
            }
        }
    }
}

failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
PostMan執(zhí)行成功后返回200。

1.4 ik

1、下載地址:https://gitcode.com/medcl/elasticsearch-analysis-ik/tags/v7.17.2?utm_source=csdn_github_accelerator&isLogin=1
2、版本:7.17.2 (ik的版本必須與ES版本一致
3、在 ES 目錄下的 plugins 中創(chuàng)建一個文件夾ik(ES的安裝目錄最好不要有空格就是因為我安裝的時候如果有空格 ik 啟動的時候會報錯
4、將 ik 壓縮包解壓到 plugins/ik 目錄下,解壓后的目錄結(jié)構(gòu)如下
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
5、重啟elasticsearch、kibana
6、訪問 http://localhost:5601/app/dev_tools#/console,輸入方框中的內(nèi)容,點擊運行,出現(xiàn)右側(cè)的結(jié)果,就是說明安裝成功了。
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

1.5 Canal

下載配置Canal的時候真的遇到了很多亂七八糟奇奇怪怪的問題,我的建議是面向百度編程搜索無解的時候不如靜下來分析一下日志。

1、下載地址:https://github.com/alibaba/canal/releases
2、版本:1.1.7

failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
先把框中這三個壓縮包下載下來解壓到文件夾:比如
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
canal.deployer:相當(dāng)于canal的服務(wù)端,啟動它才可以在客戶端接收數(shù)據(jù)庫變更信息
canal.adapter:增加客戶端數(shù)據(jù)落地的適配以及啟動功能(當(dāng) deployer 收到消息后,會根據(jù)不同的目錄源做適配,比如 es 目標(biāo)源適配等。看需求,目標(biāo)源是Redis就不用這個。)

2、canal 配置

2.1 canal.deployer 配置

修改 canal.deployer-1.1.7\conf\example\instance.properties 文件
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

2.2 canal.deployer 啟動

1、雙擊 “D:\ProgramFiles\canal.deployer-1.1.7\bin\startup.bat” 啟動
2、在 “D:\ProgramFiles\canal.deployer-1.1.7\logs\canal\canal.log” 中查看啟動日志,存在類似于下圖的字樣說明啟動成功,也可能會在日志中看到binlog轉(zhuǎn)成Json后的sql邏輯
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
3、如果之前同步過,想要重新做全量同步,那么需要刪除 “D:\ProgramFiles\canal.deployer-1.1.7\conf\example\meta.dat” 文件,這個文件記錄上次同步的時間和 binlog 位置。

2.3 source源碼配置

我上邊的 canal-canal-1.1.7 文件夾就是 source 解壓之后
1、用 IDEA 打開 canal-canal-1.1.7 項目,等待依賴加載完畢,編譯成功
2、在 “canal-canal-1.1.7\client-adapter\es7x\pom.xml” 中增加依賴

        <dependency>
            <groupId>com.alibaba.otter</groupId>
            <artifactId>client-adapter.common</artifactId>
            <version>${project.version}</version>
            <scope>provided</scope>
        </dependency>

3、在 “canal-canal-1.1.7\pom.xml” 中增加如下片段,主要是打包跳過測試,避免報錯

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire.version}</version>
                <configuration>
                    <useSystemClassLoader>true</useSystemClassLoader>
                    <forkMode>once</forkMode>
                    <argLine>${argline} ${jacocoArgLine}</argLine>
                    <systemProperties>
                        <!-- common shared -->
                    </systemProperties>
                    <skipTests>true</skipTests>    <!--默認(rèn)關(guān)掉單元測試 -->
                </configuration>
            </plugin>

4、在maven插件中重新打包
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
5、打包成功后將打包后的產(chǎn)物 "D:\ProgramFiles\canal-canal-1.1.7\client-adapter\es7x\target\client-adapter.es7x-1.1.7-jar-with-dependencies.jar" 替換 "D:\ProgramFiles\canal.adapter-1.1.7\plugin\client-adapter.es7x-1.1.7-jar-with-dependencies.jar" (注意是把 source 中的產(chǎn)物替換到 adapter 文件夾下)

2.4 canal.adapter配置

1、先將 “D:\ProgramFiles\canal.adapter-1.1.7\conf\bootstrap.yml” 文件中的全部內(nèi)容注釋(這個文件應(yīng)該是給 canal.admin 用的,不注釋掉的話啟動時會提供XX表不存在)
2、修改 “D:\ProgramFiles\canal.adapter-1.1.7\conf\application.yml” 文件,重點看一下方框里的內(nèi)容就是,其他默認(rèn)的不用改
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
3、在 “D:\ProgramFiles\canal.adapter-1.1.7\conf\es7” 文件夾創(chuàng)建 article.yml 文件

failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
文件內(nèi)容如下:

datasourceKey: defaultDS #源數(shù)據(jù)源的key,對應(yīng)上面配置的srcDatasources中的值
destination: example #canal的instance或者MO的topic
groupId: g1 #對應(yīng)MQ模式下的groupId,只會同步對應(yīng)groupId的數(shù)據(jù)
esMapping:
  _index: article #es 的索引名稱
  _id: _id #es 的 id,如果不配置該項必須配置下面的pk項 id則會由es自動分配
  sql: "SELECT t.id As _id, t.id, t.user_id, t.article_type, t.title,t.short_title, 
        t.picture, t.summary, t.category_id, t.source, t.source_url, t.offical_stat,t.topping_stat,
        t.cream_stat, t.status, t.deleted, t.create_time, 
        t.update_time FROM article t" # sq1映射
commitBatch: 1 # 提交批大小

“D:\ProgramFiles\canal.adapter-1.1.7\conf\es7” 解壓后這個文件夾下應(yīng)該會有3個默認(rèn)的 yml 文件,最好刪掉,不然啟動的時候會報錯

2.5 canal.adapter 啟動

1、雙擊 “D:\ProgramFiles\canal.adapter-1.1.7\bin\startup.bat” 啟動
2、到 “D:\ProgramFiles\canal.adapter-1.1.7\logs\adapter\adapter.log” 中查看 日志,有這樣的顯示說明啟動成功,并且執(zhí)行同步操作了
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
3、日志的最后能看到同步的條數(shù)和時間
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫
4、也可以通過 curl 進行全量同步操作

curl http://127.0.0.1:8081/etl/es7/article.yml -X POST

5、在 Kibana 中查看,成功。
failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

三、Q&A

1、好多教程里沒有 source 的部分,啟動adapter的就會出現(xiàn)問題,先把source 的部分配置好再試下;

2、source源碼在IDEA中編譯一直失敗

可能是這個地方?jīng)]有改成你自己的倉庫,也可能就是網(wǎng)絡(luò)不好。failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

3、啟動adapter時報錯:Failed to bind properties under ‘es-mapping’ to com.alibaba.otter.canal.client.adapter.es.core.config.ESSyncConfig$ESMapping

用記事本打開 startup.bat 文件,classPath 分號前后的內(nèi)容順序換一下,下面是改好后的樣子failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.clie,mysql,elasticsearch,數(shù)據(jù)庫

4、忘記截圖了,看日志大概意思是說“找不到XXX索引”

找不到的索引是 canal.adapter 文件夾解壓的時候 canal.adapter-1.1.7\conf\es7 里自帶的,把自帶的yml文件刪除就好了文章來源地址http://www.zghlxwxcb.cn/news/detail-851141.html

5、如果想起來其他問題會再補充,啟動 adapter 時一些問題其實不太容易直接搜出來的,這個時候自己多看一下 adapter 的日志,嘗試?yán)斫鈫栴}現(xiàn)象思考原因。

到了這里,關(guān)于canal實現(xiàn)MySQL和ES同步實踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Spring Boot報錯Failed to bind properties under ‘‘ to com.zaxxer.hikari.Hikari DataSource

    最近在使用springboot時報了個錯Failed to bind properties under \\\'\\\' to com.zaxxer.hikari.Hikari DataSource,經(jīng)過分析和排查,最終將處理辦法記錄下來,并分享給大家。 在使用 Spring Boot 連接 MySQL 或其他數(shù)據(jù)庫時,出現(xiàn)以下錯誤:

    2024年02月10日
    瀏覽(19)
  • canal同步mysql數(shù)據(jù)到es中

    canal同步mysql數(shù)據(jù)到es中

    項目中業(yè)務(wù)數(shù)據(jù)量比較大,每類業(yè)務(wù)表都達到千萬級別,雖然做了分庫分表和讀寫分離,每張表數(shù)據(jù)控制在500W一下,但是效率還是達不到要求,為了提高查詢效率,我們使用ES查詢。 而將mysql實時同步到es中保證數(shù)據(jù)一致性就成了我們的工作之下。 jdk1.8(依賴jdk環(huán)境,需要先

    2023年04月08日
    瀏覽(17)
  • Canal實時同步MySQL數(shù)據(jù)到ES

    Canal實時同步MySQL數(shù)據(jù)到ES

    canal主要用途是對MySQL數(shù)據(jù)庫增量日志進行解析,提供增量數(shù)據(jù)的訂閱和消費,簡單說就是可以對MySQL的增量數(shù)據(jù)進行實時同步,支持同步到MySQL、Elasticsearch、HBase等數(shù)據(jù)存儲中去。 早期阿里巴巴因為杭州和美國雙機房部署,存在跨機房同步的業(yè)務(wù)需求,實現(xiàn)方式主要是基于業(yè)

    2024年02月04日
    瀏覽(23)
  • docker 啟動 nacos Failed to bind properties under ‘server.tomcat.basedir‘ to java.io.File 解決

    配置文件中默認(rèn)為 server.tomcat.basedir= 啟動時出錯,解決方案給該值賦予一個存在的路徑 server.tomcat.basedir=/ 重新啟動即可解決問題 來源docker 按住nacos啟動Failed to bind properties under \\\'server.tomcat.basedir\\\' to java.io.File: · Issue #8960 · alibaba/nacos · GitHub

    2024年02月13日
    瀏覽(23)
  • 利用Canal把MySQL數(shù)據(jù)同步到ES

    Canal是阿里巴巴開源的一個數(shù)據(jù)庫變更數(shù)據(jù)同步工具,主要用于 MySQL 數(shù)據(jù)庫的增量數(shù)據(jù)到下游的同步,例如同步到 Elasticsearch、HBase、Hive 等。下面是一個基本的步驟來導(dǎo)入 MySQL 數(shù)據(jù)庫到 Elasticsearch。 安裝和配置 Canal 首先,需要在你的機器上安裝并配置Canal。具體步驟可在 C

    2024年02月16日
    瀏覽(29)
  • 實時同步ES技術(shù)選型:Mysql+Canal+Adapter+ES+Kibana

    實時同步ES技術(shù)選型:Mysql+Canal+Adapter+ES+Kibana

    基于之前的文章,精簡操作而來 讓ELK在同一個docker網(wǎng)絡(luò)下通過名字直接訪問 Ubuntu服務(wù)器ELK部署與實踐 使用 Docker 部署 canal 服務(wù)實現(xiàn)MySQL和ES實時同步 Docker部署ES服務(wù),canal全量同步的時候內(nèi)存爆炸,ES/Canal Adapter自動關(guān)閉,CPU100% 2.1 新建mysql docker 首先新建數(shù)據(jù)庫的docker鏡像

    2024年02月11日
    瀏覽(28)
  • Canal —— 一款 MySql 實時同步到 ES 的阿里開源神器

    Canal —— 一款 MySql 實時同步到 ES 的阿里開源神器

    目錄 一. 前言 二. Canal 簡介和使用場景 2.1. Canal 簡介 2.2. Canal 使用場景 三. Canal Server 設(shè)計 3.1. 整體設(shè)計 3.2. EventParser 設(shè)計 3.3.?CanalLogPositionManager 設(shè)計 3.4.?CanalHAController 類圖設(shè)計 3.5.?EventSink 類圖設(shè)計和擴展 3.6.?EventStore 類圖設(shè)計和擴展 3.7.?MetaManager 類圖設(shè)計和擴展 四. Can

    2024年01月25日
    瀏覽(26)
  • MySQL如何實時同步數(shù)據(jù)到ES?試試阿里開源的Canal

    MySQL如何實時同步數(shù)據(jù)到ES?試試阿里開源的Canal

    前幾天在網(wǎng)上沖浪的時候發(fā)現(xiàn)了一個比較成熟的開源中間件——? Canal? 。在了解了它的工作原理和使用場景后,頓時產(chǎn)生了濃厚的興趣。今天,就讓我們跟隨我的腳步,一起來揭開它神秘的面紗吧。 目錄 前言 簡介? 工作原理? MySQL主備復(fù)制原理 canal 工作原理 Canal架構(gòu)? C

    2024年02月20日
    瀏覽(25)
  • 使用canal同步MySQL5.7到ES中小白配置教程

    使用canal同步MySQL5.7到ES中小白配置教程

    在本篇博客中,我們將深入探討如何使用Canal進行MySQL到Elasticsearch (ES) 的數(shù)據(jù)同步。本文將涵蓋Canal的基本概念、安裝過程、配置步驟以及具體的同步操作,旨在幫助開發(fā)者和數(shù)據(jù)工程師理解并實現(xiàn)實時數(shù)據(jù)處理。包括:Canal介紹、MySQL同步、Elasticsearch配置、實時數(shù)據(jù)同

    2024年04月24日
    瀏覽(22)
  • DolphinScheduler 調(diào)度 DataX 實現(xiàn) MySQL To ElasticSearch 增量數(shù)據(jù)同步實踐

    DolphinScheduler 調(diào)度 DataX 實現(xiàn) MySQL To ElasticSearch 增量數(shù)據(jù)同步實踐

    基于SQL查詢的 CDC(Change Data Capture): 離線調(diào)度查詢作業(yè),批處理。把一張表同步到其他系統(tǒng),每次通過查詢?nèi)カ@取表中最新的數(shù)據(jù)。也就是我們說的基于SQL查詢抽取; 無法保障數(shù)據(jù)一致性,查的過程中有可能數(shù)據(jù)已經(jīng)發(fā)生了多次變更; 不保障實時性,基于離線調(diào)度存在天然的

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包