日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux

發(fā)布時(shí)間:2024/9/27 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

          • 一、清空控制臺(tái)
            • 1. 清空控制臺(tái)
            • 2. 修改數(shù)據(jù)
            • 3. 監(jiān)控?cái)?shù)據(jù)
            • 4. 數(shù)據(jù)變化
            • 5. 索引查詢
            • 6. 預(yù)期性能評(píng)估
            • 7. 增量同步分析
          • 二、驗(yàn)證方案
            • 2.1. 把shop索引刪除
            • 2.2. 重建shop索引
            • 2.3. 修改id=取得數(shù)據(jù)
            • 2.4. 查看shop索引數(shù)據(jù)
            • 2.4. 修改分類(lèi)表數(shù)據(jù)
            • 2.6. 監(jiān)控
            • 2.7. 查看shop索引數(shù)據(jù)
            • 2.8. 總結(jié)
            • 2.9. 解決方案

一、清空控制臺(tái)
1. 清空控制臺(tái)

清空canal.adapter控制臺(tái)

cd /app/canal/canal.adapter tail -f logs/adapter/adapter.log

2. 修改數(shù)據(jù)

修改mysql的id=1的name的數(shù)據(jù),將陜西22面館(北京亦莊
改為gblfy陜西面館(北京亦莊)

3. 監(jiān)控?cái)?shù)據(jù)

監(jiān)控canal.adapter控制臺(tái)

4. 數(shù)據(jù)變化
{"data": [{"id": 1,"created_at": 1637308432000,"updated_at": 1640159632000,"name": "gblfy陜西面館(北京亦莊)","remark_score": 4.9,"price_per_man": 156,"latitude": 31.195341,"longitude": 120.915855,"category_id": 1,"tags": "新開(kāi)業(yè) 人氣爆棚","start_time": "10:00","end_time": "22:00","address": "船廠路36號(hào)","seller_id": 1,"icon_url": "/static/image/shopcover/xchg.jpg"}],"database": "dianpingdb","destination": "example","es": 1637644424000,"groupId": "g1","isDdl": false,"old": [{"name": "陜西22面館(北京亦莊)"}],"pkNames": ["id"],"sql": "","table": "shop","ts": 1637644425043,"type": "UPDATE" } Affected indexes: shop

從上面可以看出,canal.adapter監(jiān)控到了我的數(shù)據(jù)變化,并進(jìn)行增量的數(shù)據(jù)的同步到ES7中。

5. 索引查詢
# 查詢shop索引 GET /shop/_search {"query": {"match": {"name": "gblfy"}} }

6. 預(yù)期性能評(píng)估

我們要求最大性能(理論上):當(dāng)用戶修改id=1 中name的數(shù)據(jù)的值,其他索引的內(nèi)容都不應(yīng)該發(fā)生變化,僅僅對(duì)我對(duì)修改的id=1 中name的數(shù)據(jù)的值發(fā)生變化。
我們?cè)谂渲胏anal.adapter的shop.xml中的sql時(shí),是一個(gè)全量的sql。

SELECTa.id,a.NAME,a.tags,CONCAT( a.latitude, ',', a.longitude ) AS location,a.remark_score,a.price_per_man,a.category_id,b.`name` AS category_name,a.seller_id,c.remark_score AS seller_remark_score,c.disabled_flag AS seller_disabled_flag FROMshop aINNER JOIN category b ON a.category_id = b.idINNER JOIN seller c ON c.id = a.seller_id

7. 增量同步分析

sql中沒(méi)有指定具體要求的數(shù)據(jù)的id,那canal.adapter怎么監(jiān)控到我數(shù)據(jù)發(fā)生變化后,只同步我修改ID=1的這條數(shù)據(jù)呢?

  • 二種解釋:

  • 第一種:
    canal.adapter內(nèi)部做了一個(gè)這樣的機(jī)制;
    當(dāng)我修改ID=1的數(shù)據(jù)時(shí),canal.adapter通過(guò)全量sql就可以把id=1的數(shù)據(jù)篩選出來(lái),然后進(jìn)行增量同步到es7的索引中。

  • 第二種:
    canal.adapter 內(nèi)部武這樣監(jiān)控的機(jī)制,只要數(shù)據(jù)發(fā)生變化,就執(zhí)行全量sql,做全量同步,只不過(guò)已經(jīng)存在而索引讓es7做更新操作而已。

二、驗(yàn)證方案
2.1. 把shop索引刪除
# 刪除shop索引 DELETE /shop

2.2. 重建shop索引
PUT /shop {"settings": {"number_of_shards": 1,"number_of_replicas": 1}, "mappings": {"properties": {"id":{"type": "integer"},"name":{"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart"},"tags":{"type": "text","analyzer": "whitespace","fielddata": true},"location":{"type": "geo_point"},"remark_score":{"type": "double"},"price_per_man":{"type": "integer"},"category_id":{"type": "integer"},"category_name":{"type": "keyword"},"seller_id":{"type": "integer"},"seller_remark_score":{"type": "double"},"seller_disabled_flag":{"type": "integer"}}} }

2.3. 修改id=取得數(shù)據(jù)

把id=1的name值由gblfy陜西面館(北京亦莊)改成com.gblfy陜西面館(北京亦莊)

2.4. 查看shop索引數(shù)據(jù)
# 查詢shop索引 GET /shop/_search


從上面查詢結(jié)果來(lái)看符合預(yù)期,對(duì)吧!

2.4. 修改分類(lèi)表數(shù)據(jù)

把category表中id=1中的name值美食5修改成美食8

說(shuō)明:

2.6. 監(jiān)控


從截圖中可以看出也監(jiān)控到了,對(duì)吧,別急!

2.7. 查看shop索引數(shù)據(jù)


從上面截圖中可以看到,數(shù)據(jù)canal.adapter 雖然監(jiān)控到了,但是,es7中的數(shù)據(jù)沒(méi)更新。

2.8. 總結(jié)

官網(wǎng)自帶的canal.adapter 組件
canal.adapter 對(duì)單表增量同步,是支持的
一對(duì)一形式:mysql的一張表對(duì)應(yīng)es的一個(gè)index
canal.adapter 對(duì)聚合sql(也就是多表查詢),不支持

2.9. 解決方案

我們可以通過(guò)代碼方式,可以自定義我們對(duì)于canal.adapter 的行為的能力。使用canal.deployer建立和mysql數(shù)據(jù)binlog之間的能力,摒棄掉canal.adapter,在點(diǎn)評(píng)搜索的應(yīng)用當(dāng)中,直接接入canal.deployer,以canal.deployer消費(fèi)端的身份去消費(fèi)我們對(duì)應(yīng)的消息。

總結(jié)

以上是生活随笔為你收集整理的使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。