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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步

發布時間:2023/12/2 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題記

關系型數據庫Mysql/Oracle增量同步Elasticsearch是持續關注的問題,也是社區、QQ群等討論最多的問題之一。 問題包含但不限于: 1、Mysql如何同步到Elasticsearch? 2、Logstash、kafka_connector、canal選型有什么不同,如何取舍? ?3、能實現同步增刪改查嗎? ..... 本文給出答案。

1、Canal同步

1.1 canal官方已支持Mysql同步ES6.X

同步原理,參見之前: 干貨 | Debezium實現Mysql到Elasticsearch高效實時同步。

canal 1.1.1版本之后, 增加客戶端數據落地的適配及啟動功能。canal adapter 的 Elastic Search 版本支持6.x.x以上。 需要借助adapter實現。

1.2 同步效果

1)已驗證:僅支持增量同步,不支持全量已有數據同步。這點,canal的初衷訂位就是“阿里巴巴mysql數據庫binlog的增量訂閱&消費組件”。

2)已驗證:由于采用了binlog機制,Mysql中的新增、更新、刪除操作,對應的Elasticsearch都能實時新增、更新、刪除。

3)推薦使用場景 canal適用于對于Mysql和Elasticsearch數據實時增、刪、改要求高的業務場景。 實時場景要求不高的業務場景,logstashinputjdbc也能滿足。

建議,做好選型甄別。

2、同步版本:

  • ES:6.6.1

  • Mysql: 5.7.25

  • canal:v1.1.3-alpha-2

  • canal-adapter:v1.1.3-alpha-2

canal下載地址:https://github.com/alibaba/canal/releases

3、同步步驟解讀

3.1 啟動canal,可作為常駐進程后臺運行。

官網已有詳細描述https://github.com/alibaba/canal/wiki/QuickStart, 以下僅列舉關鍵注意事項。

對應下載文件:canal.deployer-1.1.3-SNAPSHOT.tar.gz, 可以實時關注最新版本。

3.1.1 啟用binlog

canal的原理是基于mysql binlog技術,所以這里一定需要開啟mysql的binlog寫入功能,建議配置binlog模式為row.

[mysqld]

log-bin=mysql-bin #添加這一行就ok

binlog-format=ROW #選擇row模式

server_id=1 #配置mysql replaction需要定義,不能和canal的slaveId重復

3.1.2 修改配置文件

vi conf/example/instance.properties

配置數據庫基本信息。

3.1.3 啟動canal

bin/startup.sh可通過日志排查錯誤。

3.2 配置ElasticSearch適配器,并實現同步。

官網已有詳細描述:https://github.com/alibaba/canal/wiki/Sync-ES。 以下僅針對部署遇到的坑做描述。

3.2.1 部署版本

anal.adapter-1.1.3-SNAPSHOT.tar.gz,如有更新,建議使用最新版本。

3.2.2 核心配置

[root@localhost es]# cat mytest_user.yml

dataSourceKey: defaultDS

destination: example

esMapping:

_index: baidu_index

_type: _doc

_id: _id

pk: id

sql: "select a.id as _id, a.title, a.url, a.publish_time, a.content,

from baidu_info as a"

# objFields:

# _labels: array:;

etlCondition: "where a.id >= 1"

commitBatch: 3000

實現目的:庫表id字段作為Elasticsearch的_id,以期實現自增。

4、多表關聯實現

建議參考官網:https://github.com/alibaba/canal/wiki/Sync-ES 支持:

  • 一對一

  • 一對多

  • 多對多

5、坑

坑1:canal.adapter-1.1.2 啟動失敗

啟動失敗:https://github.com/alibaba/canal/issues/1513 該問題在1.1.3版本已經修復。

坑2:不支持全量同步

全量同步建議使用logstash或者其他工具:

坑3:必須先在ES創建好對應索引的Mapping

否則,會沒有識別索引,會報寫入錯誤。

坑4:多張表的同步如何實現?

在canal.adapter-1.1.3/conf/es的新增*.yml配置即可。 也就是說,可以一張Mysql表一個配置文件。

坑5:空指針異常錯誤

解決方案:sql語句部分,指定對應庫表id為ES中的_id,否則會報錯。 舉例:

select sx_sid as _id, name from baidu_info

坑6:基于 row 模式的 binlog 會不會記錄變更前、變更后的值呢?

  • INSERT:只有變更后的值。

  • UPDATE:包含了變更前、變更后的值。

  • DELETE:變更前的值

關于全量同步:https://github.com/alibaba/canal/issues/376

6 同步選型小結

以上不同選型各有利弊,建議 結合實際業務斟酌選擇。 歡迎留下你的同步實踐方案和思考。

公眾號(zhisheng)里回復?面經、ES、Flink、?Spring、Java、JVM、Kafka、監控?等關鍵字可以查看更多關鍵字對應的文章!

關注我

相關文章

1、渣渣菜雞為什么要看 ElasticSearch 源碼?

2、渣渣菜雞的 ElasticSearch 源碼解析 —— 環境搭建

3、Elasticsearch 默認分詞器

4、Elasticsearch 可用中分分詞器

5、Elasticsearch?自定義分詞器

6、全文搜索引擎 Elasticsearch 集群搭建入門教程

7、Elasticsearch 系列文章(三):ElasticSearch 集群監控

8、Elasticsearch 系列文章(四):ElasticSearch 單個節點監控

9、Elasticsearch 系列文章(五):ELK 實時日志分析平臺環境搭建

10、教你如何在 IDEA 遠程 Debug ElasticSearch

11、渣渣菜雞的 ElasticSearch 源碼解析 —— 啟動流程(上)

12、渣渣菜雞的 ElasticSearch 源碼解析 —— 啟動流程(下)

13、ElasticSearch?最佳性能優化

14、干貨 | Elasticsearch方案選型必須了解的10件事!

總結

以上是生活随笔為你收集整理的mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。