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

歡迎訪問 生活随笔!

生活随笔

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

数据库

MYSQL数据同步到ES7

發布時間:2024/4/15 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL数据同步到ES7 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**

概述

**

現在的項目數據量越來越大,全文檢索功能使用場景也越來越普遍。
而我們一般的生產數據是在mysql,或其它一些數據庫,
我們的產品數據就是mysql,而又要使用全文檢索,
所以要把mysql 數據同步到es,再進行全文檢索功能。
現在簡單把數據同步的配置及遇到的問題羅列如下:

數據流程圖

mysql -> adapter -> es

安裝步驟不再累述,需要安裝以下軟件。
1.安裝 es,
2.安裝 canal.adapter
3.安裝 canal.deployer
4.安裝 zookeeper


數據流同步過程中,需要配置的地方:
(dev 開發環境示例)
1.adapter:

application.yml

canal.conf:
mode: tcp # kafka rocketMQ
canalServerHost: 172.16.1.2:11111
zookeeperHosts: 172.16.1.2:2181
mqServers: 172.16.1.2:9876 #or rocketmq

srcDataSources:
defaultDS:
url: jdbc:mysql://172.16.1.203:33306/nuocheng?useUnicode=true
username: canal
password: canal.1qaz

canalAdapters:

  • instance: example # canal instance Name or mq topic name
    groups:
    • groupId: g1
      outerAdapters:
      • name: es7
        key: es204
        hosts: 172.16.1.2:9200
        properties:
        mode: rest # or rest
        cluster.name: my-application

3.安裝 canal.deployer

vi canal.properties
canal.ip = 172.16.1.2
canal.port = 11111
canal.metrics.pull.port = 11112
canal.zkServers = 172.16.1.2

vi example/instalce.properties

# username/password canal.instance.dbUsername=canal canal.instance.dbPassword=canal.123456 canal.instance.connectionCharset = UTF-8 canal.instance.defaultDatabaseName = nuocheng

(重建立索引全量生成數據)

重建立索引:

curl -XDELETE http://172.16.1.2:9200/nt_product
curl -XDELETE http://172.16.1.2:9200/nt_news
curl -XDELETE http://172.16.1.2:9200/nt_plan

curl -XPUT -H “Content-Type: application/json” http://172.16.1.2:9200/nt_product?include_type_name=true -d “@nt_product.json”

curl -XPUT -H “Content-Type: application/json” http://172.16.1.2:9200/nt_news?include_type_name=true -d “@nt_news.json”

curl -XPUT -H “Content-Type: application/json” http://172.16.1.2:9200/nt_plan?include_type_name=true -d “@nt_plan.json”

全量同步一次數據

curl http://172.16.1.204:38081/etl/es/nt_product.yml -XPOST
curl http://172.16.1.204:38081/etl/es/nt_news.yml -XPOST
curl http://172.16.1.204:38081/etl/es/nt_plan.yml -XPOST

#########################################################################
(使用導出導入方式重新生成數據)

ES 同級后,數據的導入導出:

1.安裝 elasticdump:

npm install elasticdump -g elasticdump --version 6.33.4 ---- 出錯解決方法 [root@nctest004 ~]# elasticdump --version/usr/lib/node_modules/elasticdump/lib/processor.js:40async _loop (limit, offset, totalWrites) {^^^^^SyntaxError: Unexpected identifierat createScript (vm.js:56:10)at Object.runInThisContext (vm.js:97:10)at Module._compile (module.js:549:28)at Object.Module._extensions..js (module.js:586:10)at Module.load (module.js:494:32)at tryModuleLoad (module.js:453:12)at Function.Module._load (module.js:445:3)at Module.require (module.js:504:17)at require (internal/module.js:20:19)at Object.<anonymous> (/usr/lib/node_modules/elasticdump/elasticdump.js:3:28) --------------------------- 安裝出錯 ----------------------- 原因是資源的問題,要配置淘寶鏡像 npm config set registry https://registry.npm.taobao.org 配置完成后檢驗是否成功 npm config get registry 重新安裝 npm install nrm -g 查看所用的鏡像 nrm ls 安裝成功解決辦法: #升級nodejs [root@localhost ~]# npm install -g n [root@localhost ~]# n latest

2.導出數據:

elasticdump --input=http://172.16.1.2:9200/nt_product --output=/opt/download/nt_product.json --type=data

3:刪除數據:

curl --location --request DELETE 'http://172.16.1.2:9200/rangetest'

4.導入數據

elasticdump --input=/opt/download/nt_product.json --output=http://172.16.1.2:9200/nt_product --type=data

總結

以上是生活随笔為你收集整理的MYSQL数据同步到ES7的全部內容,希望文章能夠幫你解決所遇到的問題。

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