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

基于Canal實(shí)現(xiàn)Mysql數(shù)據(jù)實(shí)時(shí)同步到Elasticsearch(Docker版)

這篇具有很好參考價(jià)值的文章主要介紹了基于Canal實(shí)現(xiàn)Mysql數(shù)據(jù)實(shí)時(shí)同步到Elasticsearch(Docker版)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、Canal簡(jiǎn)介

??Canal主要用途是對(duì)MySQL數(shù)據(jù)庫(kù)增量日志進(jìn)行解析,提供增量數(shù)據(jù)的訂閱和消費(fèi),簡(jiǎn)單說(shuō)就是可以對(duì)MySQL的增量數(shù)據(jù)進(jìn)行實(shí)時(shí)同步,支持同步到MySQL、Elasticsearch、HBase等數(shù)據(jù)存儲(chǔ)中去。

??Canal會(huì)模擬MySQL主庫(kù)和從庫(kù)的交互協(xié)議,從而偽裝成MySQL的從庫(kù),然后向MySQL主庫(kù)發(fā)送dump協(xié)議,MySQL主庫(kù)收到dump請(qǐng)求會(huì)向canal推送binlog,canal通過(guò)解析binlog將數(shù)據(jù)同步到其他存儲(chǔ)中去。
canal部署安裝,同步mysql,數(shù)據(jù)庫(kù),筆記,docker,elasticsearch,mysql,canal

官方文檔:《傳送門》。

2、基于Docker實(shí)現(xiàn)Mysql5.7的安裝并開(kāi)啟binlog日志

2.1、Mysql安裝
[root@localhost /]# docker pull mysql:5.7

[root@localhost /]# docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2.2、開(kāi)啟Mysql5.7的binlog配置
#進(jìn)入docker中的 Mysql5.7
[root@localhost /]# docker exec -it mysql5.7 /bin/bash

#在docker環(huán)境內(nèi)安裝vim工具,方便修改文件
bash-4.2# yum install vim

#修改my.cnf配置,修改內(nèi)容如下:
bash-4.2# vim /etc/my.cnf

#退出docker
bash-4.2# exit

#重啟docker mysql
[root@localhost /]# docker restart mysql5.7

??在/etc/my.cnf配置文件中添加如下配置:

[mysqld]
# 打開(kāi)binlog
log-bin=mysql-bin
# 選擇ROW(行)模式
binlog-format=ROW
# 配置MySQL replaction需要定義,不要和canal的slaveId重復(fù)
server_id=1

??在Mysql重新啟動(dòng)后,然后可以在客戶端中執(zhí)行show VARIABLES like 'log_bin’如果發(fā)現(xiàn)其中的value中為“ON”則說(shuō)明配置生效了。

canal部署安裝,同步mysql,數(shù)據(jù)庫(kù),筆記,docker,elasticsearch,mysql,canal

2.3、創(chuàng)建授權(quán)用戶

??創(chuàng)建Mysql用戶,方便后續(xù)使用。

CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

3、基于docker實(shí)現(xiàn)Elasticsearch的安裝和運(yùn)行

#拉去鏡像
docker pull elasticsearch:7.12.0

#創(chuàng)建docker容器掛在的目錄
mkdir -p /usr/local/soft/es/config
mkdir -p /usr/local/soft/es/data
mkdir -p /usr/local/soft/es/plugins

#配置文件,注意:echo “http.host: 0.0.0.0”;“:”后面有個(gè)空格!
echo "http.host: 0.0.0.0" >> /usr/local/soft/es/config/elasticsearch.yml

#創(chuàng)建容器并運(yùn)行
docker run --name elasticsearch -p 9200:9200  -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms84m -Xmx512m" \
-v /usr/local/soft/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/soft/es/data:/usr/share/elasticsearch/data \
-v /usr/local/soft/es/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.12.0
  • -p 端口映射
  • -e discovery.type=single-node 單點(diǎn)模式啟動(dòng)
  • -e ES_JAVA_OPTS=“-Xms84m -Xmx512m”:設(shè)置啟動(dòng)占用的內(nèi)存范圍
  • -v 目錄掛載
  • -d 后臺(tái)運(yùn)行

??啟動(dòng)后,測(cè)試正常啟動(dòng)頁(yè)面訪問(wèn)http://127.0.0.1:9200,出現(xiàn)如下頁(yè)面說(shuō)明啟動(dòng)成功。

canal部署安裝,同步mysql,數(shù)據(jù)庫(kù),筆記,docker,elasticsearch,mysql,canal

4、安裝并配置canal服務(wù)

#拉取鏡像
docker pull canal/canal-server:v1.1.6
#運(yùn)行鏡像
docker run --name canal -d canal/canal-server:v1.1.6
#找到文件位置后 exit退出容器 將容器內(nèi)部文件copy到外部
docker cp canal:/home/admin/canal-server/conf/canal.properties /usr/local/soft/canal-conf/
docker cp canal:/home/admin/canal-server/conf/example/instance.properties /usr/local/soft/canal-conf/
#修改配置文件instance.properties 和 canal.properties,實(shí)際上只修改了instance.properties的部分配置,canal.properties使用默認(rèn)配置

#重新運(yùn)行鏡像,運(yùn)行前,需要把前面運(yùn)行的容器停止并刪除
docker run --name canal -p 11111:11111 -d -v /usr/local/soft/canal-conf/instance.properties:/home/admin/canal-server/conf/example/instance.properties -v /usr/local/soft/canal-conf/canal.properties:/home/admin/canal-server/conf/canal.properties canal/canal-server:v1.1.6

#查看canal服務(wù)日志
#僅能看到canal服務(wù)的啟動(dòng)日志,比較簡(jiǎn)單
docker logs canal
#查看數(shù)據(jù)同步相關(guān)日志
#進(jìn)入canal服務(wù)
[root@localhost ~]# docker exec -it canal /bin/bash
#查看日志,數(shù)據(jù)同步日志
[root@908acdb7f259 canal-server]# cat canal-server/logs/example/example.log

??instance.properties需要修改的配置如下:

#Mysql數(shù)據(jù)庫(kù)地址
canal.instance.master.address=192.168.1.236:3306
#初始化時(shí)的日志文件名稱,可以不設(shè)置
canal.instance.master.journal.name=mysql-bin.000002
#初始化時(shí)的日志文件的當(dāng)前位置,可以不設(shè)置
canal.instance.master.position=2071
canal.instance.master.timestamp=
canal.instance.master.gtid=

#Mysql數(shù)據(jù)庫(kù)用戶名和密碼,前面創(chuàng)建的Mysql用戶
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false

版本問(wèn)題:在搭建canal服務(wù)的時(shí)候,我最初使用的是v1.1.6版本,同步數(shù)據(jù)的時(shí)候出現(xiàn)錯(cuò)誤,后改成v1.1.5后,正常。

5、安裝并配置canal-adapter

#拉取鏡像
docker pull slpcat/canal-adapter:v1.1.5
#創(chuàng)建配置文件
mkdir -p /usr/local/soft/canal-adapter/conf/
#創(chuàng)建配置文件,在/usr/local/soft/canal-adapter/conf/目錄下創(chuàng)建
touch application.yml
#創(chuàng)建連接數(shù)據(jù)庫(kù)文件es7.yml
mkdir -p /usr/local/soft/canal-adapter/conf/es7
touch es7.yml

#啟動(dòng)
docker run --name canal-adapter -p 8081:8081 -v /usr/local/soft/canal-adapter/conf:/opt/canal-adapter/conf  -d slpcat/canal-adapter:v1.1.5

#查看是否報(bào)錯(cuò)
docker logs canal-adapter

??application.yml配置文件內(nèi)容如下:

server:
  port: 8081
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null
canal.conf:
  mode: tcp
  flatMessage: true
  zookeeperHosts:
  syncBatchSize: 1000
  retries: 0
  timeout:
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    canal.tcp.server.host: 192.168.1.236:11111  #canal服務(wù)地址
    canal.tcp.batch.size: 500
    canal.tcp.username:
    canal.tcp.password:
  srcDataSources:
    defaultDS:
      url: jdbc:mysql://192.168.1.236:3306/my_test?useUnicode=true #數(shù)據(jù)庫(kù)地址及用戶名密碼
      username: canal
      password: canal
  canalAdapters:
  - instance: example # canal instance Name or mq topic name
    groups:
    - groupId: g1
      outerAdapters:
      - name: logger
      - name: es7 # 該版本發(fā)現(xiàn)只能是es7/es6
        hosts: 192.168.1.236:9200 # 127.0.0.1:9200 for rest mode,ES鏈接,使用9200 是mode就需要修改成rest
        properties:
          mode: rest # transport # or rest
          cluster.name: elasticsearch

??es7.yml配置文件,主要實(shí)現(xiàn)Mysql表字段與ES索引的對(duì)應(yīng)關(guān)系,具體內(nèi)容如下:

dataSourceKey: defaultDS
destination: example
groupId: g1
esMapping:
  _index: ceshi
  _id: _id
  _type: _doc
  upsert: true
  #  pk: id 
  #SQL 字段映射
  sql: "SELECT 
    a.id AS _id,
    a.username AS username,
    a.age AS age,
    a.test AS test
  from 
    test a "
  #  objFields:
  #    _labels: array:;
  etlCondition: "where a.c_time>='{0}'"     # etl 的條件參數(shù)
  commitBatch: 1

??my_test.test表結(jié)構(gòu):

CREATE TABLE `my_test`.`Untitled`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `age` varbinary(50) NULL DEFAULT NULL,
  `test` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `c_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

6、其他

??完成上述配置,就完成了Mysql數(shù)據(jù)實(shí)時(shí)同步到Elasticsearch的配置,在實(shí)際環(huán)境中,還需要考慮服務(wù)防火墻、查看docker服務(wù)運(yùn)行狀態(tài)等問(wèn)題,需要的命令如下:

??Docker命令:

#docker命令
docker ps -a #查看是否啟動(dòng)
docker logs elasticsearch  #啟動(dòng)日志查詢,查詢什么服務(wù),elasticsearch修改成對(duì)應(yīng)服務(wù)名即可
docker restart elasticsearch   #重啟
docker exec -it elasticsearch bash #進(jìn)入docker服務(wù)

??Centos7防火墻相關(guān)命令:

一、防火墻的開(kāi)啟、關(guān)閉、禁用命令

  • 設(shè)置開(kāi)機(jī)啟用防火墻:systemctl enable firewalld.service
  • 設(shè)置開(kāi)機(jī)禁用防火墻:systemctl disable firewalld.service
  • 啟動(dòng)防火墻:systemctl start firewalld
  • 關(guān)閉防火墻:systemctl stop firewalld
  • 檢查防火墻狀態(tài):systemctl status firewalld

二、使用firewall-cmd配置端口

  • 查看防火墻狀態(tài):firewall-cmd --state
  • 重新加載配置:firewall-cmd --reload
  • 查看開(kāi)放的端口:firewall-cmd --list-ports
  • 開(kāi)啟防火墻端口:firewall-cmd --zone=public–add-port=9200/tcp --permanent
  • 關(guān)閉防火墻端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent

命令含義:
–zone #作用域
–add-port=9200/tcp #添加端口,格式為:端口/通訊協(xié)議
–permanent #永久生效,沒(méi)有此參數(shù)重啟后失效
注意:添加端口后,必須用命令firewall-cmd --reload重新加載一遍才會(huì)生效文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-691938.html

到了這里,關(guān)于基于Canal實(shí)現(xiàn)Mysql數(shù)據(jù)實(shí)時(shí)同步到Elasticsearch(Docker版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 基于Canal同步MySQL數(shù)據(jù)到Elasticsearch

    基于Canal同步MySQL數(shù)據(jù)到Elasticsearch

    基于 canal 同步 mysql 的數(shù)據(jù)到 elasticsearch 中。 相關(guān)軟件的安裝請(qǐng)參考:《Canal實(shí)現(xiàn)數(shù)據(jù)同步》 1.1 pom依賴 1.2 SimpleCanalClientExample編寫 注意當(dāng)后面 canal-adapter 也連接上 canal-server 后,程序就監(jiān)聽(tīng)不到數(shù)據(jù)變化了。 這個(gè)類只是測(cè)試,下面不使用。 由于目前 canal-adapter 沒(méi)有官方dock

    2024年02月07日
    瀏覽(87)
  • 基于Canal與Flink實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)增量同步(一)

    基于Canal與Flink實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)增量同步(一)

    vi conf/application.yml server: port: 8089 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 spring.datasource: address: kms-1:3306 database: canal_manager username: canal password: canal driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql:// s p r i n g . d a t a s o u r c e . a d d r e s s / {spring.datasource.address}/ s p r in g . d

    2024年04月13日
    瀏覽(98)
  • 本地部署Canal筆記-實(shí)現(xiàn)MySQL與ElasticSearch7數(shù)據(jù)同步

    本地部署Canal筆記-實(shí)現(xiàn)MySQL與ElasticSearch7數(shù)據(jù)同步

    本地搭建canal實(shí)現(xiàn)mysql數(shù)據(jù)到es的簡(jiǎn)單的數(shù)據(jù)同步,僅供學(xué)習(xí)參考 建議首先熟悉一下canal同步方式:https://github.com/alibaba/canal/wiki 本地搭建MySQL數(shù)據(jù)庫(kù) 本地搭建ElasticSearch 本地搭建canal-server 本地搭建canal-adapter 本地環(huán)境為window11,大部分組件采用docker進(jìn)行部署,MySQL采用8.0.27, 推薦

    2024年02月02日
    瀏覽(96)
  • 基于Canal與Flink實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)增量同步(一),計(jì)算機(jī)畢設(shè)源碼要提交嗎

    基于Canal與Flink實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)增量同步(一),計(jì)算機(jī)畢設(shè)源碼要提交嗎

    配置修改 修改conf/example/instance.properties,修改內(nèi)容如下: canal.instance.mysql.slaveId = 1234 #position info,需要改成自己的數(shù)據(jù)庫(kù)信息 canal.instance.master.address = kms-1.apache.com:3306 #username/password,需要改成自己的數(shù)據(jù)庫(kù)信息 canal.instance.dbUsername = canal canal.instance.dbPassword = canal canal.mq.topic

    2024年04月12日
    瀏覽(38)
  • 基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫(kù)數(shù)據(jù)同步

    基于Canal實(shí)現(xiàn)MySQL 8.0 數(shù)據(jù)庫(kù)數(shù)據(jù)同步

    主機(jī)名稱 操作系統(tǒng) 說(shuō)明 192.168.11.82 Ubuntu 22.04 主庫(kù)所在服務(wù)器 192.168.11.28 Oracle Linux Server 8.7 從庫(kù)所在服務(wù)器 1、Ubuntu系統(tǒng)下MySQL配置文件位置 2、CentOS系統(tǒng)下MySQL配置文件位置 3、添加如下配置,開(kāi)啟MySQL binlog功能 關(guān)于canal簡(jiǎn)介,這里就不再闡述,具體可以參看官方文檔介紹,地

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

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

    canal主要用途是對(duì)MySQL數(shù)據(jù)庫(kù)增量日志進(jìn)行解析,提供增量數(shù)據(jù)的訂閱和消費(fèi),簡(jiǎn)單說(shuō)就是可以對(duì)MySQL的增量數(shù)據(jù)進(jìn)行實(shí)時(shí)同步,支持同步到MySQL、Elasticsearch、HBase等數(shù)據(jù)存儲(chǔ)中去。 早期阿里巴巴因?yàn)楹贾莺兔绹?guó)雙機(jī)房部署,存在跨機(jī)房同步的業(yè)務(wù)需求,實(shí)現(xiàn)方式主要是基于業(yè)

    2024年02月04日
    瀏覽(23)
  • 使用 Docker 部署 canal 服務(wù)實(shí)現(xiàn)MySQL和ES實(shí)時(shí)同步

    使用 Docker 部署 canal 服務(wù)實(shí)現(xiàn)MySQL和ES實(shí)時(shí)同步

    參考 ClientAdapter: Canal的Adapter配置項(xiàng)目 Sync ES:Canal的Adapter中ES同步的配置項(xiàng) 使用 Docker 部署 canal 服務(wù) docker canal-server canal-adapter mysql Canal(基于Docker同步mysql數(shù)據(jù)到elasticsearch) Canal部署過(guò)程中的錯(cuò)誤 Canal 1.1.4 Canal Adapter 1.1.4 Kibana: 6.8.8 ElasticSearch: 6.4.3 由于Canal 1.1.4只能適配 Ela

    2024年02月13日
    瀏覽(27)
  • MySQL如何實(shí)時(shí)同步數(shù)據(jù)到ES?試試阿里開(kāi)源的Canal

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

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

    2024年02月20日
    瀏覽(25)
  • Canal同步Mysql實(shí)時(shí)操作日志至RabbitMQ,并實(shí)現(xiàn)監(jiān)聽(tīng)及解析處理

    Canal同步Mysql實(shí)時(shí)操作日志至RabbitMQ,并實(shí)現(xiàn)監(jiān)聽(tīng)及解析處理

    關(guān)于Canal的介紹及原理不在此贅述,可自行查閱。筆者在使用Canal同步Mysql實(shí)時(shí)操作記錄至RabbitMQ的過(guò)程中,也翻閱了一些大牛們的文章,可能是我使用的Canal版本與文中版本不一致,出現(xiàn)了一些問(wèn)題,在此總結(jié)記錄一下可行的方案。 注:本文使用的Canal為 v1.1.7 先查看目標(biāo)數(shù)據(jù)

    2024年04月10日
    瀏覽(48)
  • docker安裝canal入門實(shí)戰(zhàn),同步mysql數(shù)據(jù)到elasticsearch

    docker安裝canal入門實(shí)戰(zhàn),同步mysql數(shù)據(jù)到elasticsearch

    官方docker安裝說(shuō)明文檔:https://github.com/alibaba/canal/wiki/Docker-QuickStart canal.adapter canal 1.1.1版本之后, 增加客戶端數(shù)據(jù)落地的適配及啟動(dòng)功能, 目前支持功能: 客戶端啟動(dòng)器 同步管理REST接口 日志適配器, 作為DEMO 關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步(表對(duì)表同步), ETL功能 HBase的數(shù)據(jù)同步(表對(duì)表

    2024年02月04日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包