真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Canal中怎么實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)實(shí)時(shí)數(shù)據(jù)同步

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Canal中怎么實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)實(shí)時(shí)數(shù)據(jù)同步,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、南川網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為南川等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

1.1 canal介紹

Canal是一個(gè)基于MySQL二進(jìn)制日志的高性能數(shù)據(jù)同步系統(tǒng)。Canal廣泛用于阿里巴巴集團(tuán)(包括https://www.taobao.com),以提供可靠的低延遲增量數(shù)據(jù)管道,github地址:https://github.com/alibaba/canal

Canal Server能夠解析MySQL binlog并訂閱數(shù)據(jù)更改,而Canal Client可以實(shí)現(xiàn)將更改廣播到任何地方,例如數(shù)據(jù)庫(kù)和Apache Kafka。

它具有以下功能:

  •  支持所有平臺(tái)。

  •  支持由Prometheus提供支持的細(xì)粒度系統(tǒng)監(jiān)控。

  •  支持通過不同方式解析和訂閱MySQL binlog,例如通過GTID。

  •  支持高性能,實(shí)時(shí)數(shù)據(jù)同步。(詳見Performance)

  •  Canal Server和Canal Client都支持HA / Scalability,由Apache ZooKeeper提供支持

  •  Docker支持。

缺點(diǎn):

不支持全量更新,只支持增量更新。

完整wiki地址:https://github.com/alibaba/canal/wiki

1.2 運(yùn)作原理

原理很簡(jiǎn)單:

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2.  Canal模擬MySQL的slave的交互協(xié)議,偽裝成mysql slave,并將轉(zhuǎn)發(fā)協(xié)議發(fā)送到MySQL Master服務(wù)器。

  3.  MySQL Master接收到轉(zhuǎn)儲(chǔ)請(qǐng)求并開始將二進(jìn)制日志推送到slave(即canal)。

  4.  Canal將二進(jìn)制日志對(duì)象解析為自己的數(shù)據(jù)類型(原始字節(jié)流)

如圖所示:

Canal中怎么實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)實(shí)時(shí)數(shù)據(jù)同步

準(zhǔn)備工作

2.1 下載解壓canal-server

通過 github 下載 canal-server release 版本(本次安裝文檔使用v1.1.4)

root@locahost:/# wget  https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz

解壓

tar -zxvf canal.deployer-1.1.4.tar.gz

2.2 下載解壓 canal-adapter

通過 github 下載 canal-adapter release 版本(本次安裝文檔使用v1.1.4)

root@locahost:/# wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.adapter-1.1.4.tar.gz

解壓

tar -zxvf canal.adapter-1.1.4.tar.gz

配置 canal-server

3.1 canal-server 配置

解壓之后進(jìn)入 conf文件夾中,修改 canal.properties 根據(jù)實(shí)際需要來修改(如果不使用kafka或MQ 默認(rèn)tcp即可)

canal.destinations = prod # 指定instance的名字多個(gè)使用逗號(hào)分隔

保存之后在conf目錄創(chuàng)建 prod 文件夾并將 example文件夾中的 nstance.properties copy 到and_prod中

mkdir ant_prod  #創(chuàng)建文件夾  cp example/nstance.properties  prod/ # copy 文件

修改 nstance.properties 配置如下:

canal.instance.master.address=127.0.0.1:3306      # 源Mysql地址  canalcanal.instance.dbUsername=canal                   # 源Mysql賬號(hào)  canalcanal.instance.dbPassword=canal                   # 源Mysql密碼  canal.instance.connectionCharset=UTF-8            # 與源數(shù)據(jù)庫(kù)編碼格式一致   canal.instance.defaultDatabaseName=test_database  # 默認(rèn)監(jiān)聽源數(shù)據(jù)庫(kù)

3.2 canal-server 啟動(dòng)

進(jìn)入 canal-server bin 目錄 啟動(dòng)

cd canal-server/bin # 進(jìn)入目錄  ./startup.sh & # 后臺(tái)啟動(dòng)

查看日志,是否啟動(dòng)成功

cd canal-server/logs/ant_prod #進(jìn)入日志目錄

啟動(dòng)成功:

2020-06-09 17:13:04.956 [main] WARN  o.s.beans.GenericTypeAwarePropertyDescriptor - Invalid JavaBean property 'connectionCharset' being accessed! Ambiguous write methods found next to actually used [public void com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.setConnectionCharset(java.nio.charset.Charset)]: [public void com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.setConnectionCharset(java.lang.String)] 2020-06-09 17:13:04.990 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [canal.properties] 2020-06-09 17:13:04.990 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [ant_prod/instance.properties] 2020-06-09 17:13:05.305 [main] INFO  c.a.otter.canal.instance.spring.CanalInstanceWithSpring - start CannalInstance for 1-ant_prod  2020-06-09 17:13:05.311 [main] WARN  c.a.o.canal.parse.inbound.mysql.dbsync.LogEventConvert - --> init table filter : ^.*\..*$ 2020-06-09 17:13:05.311 [main] WARN  c.a.o.canal.parse.inbound.mysql.dbsync.LogEventConvert - --> init table black filter :  2020-06-09 17:13:05.315 [main] INFO  c.a.otter.canal.instance.core.AbstractCanalInstance - start successful.... 2020-06-09 17:13:05.422 [destination = ant_prod , address = rm-wz99s5v03gso12521.mysql.rds.aliyuncs.com/192.xxxxxx:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> begin to find start position, it will be long time for reset or first position 2020-06-09 17:13:05.423 [destination = ant_prod , address = rm-wz99s5v03gso12521.mysql.rds.aliyuncs.com/192.xxxxxx:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just show master status 2020-06-09 17:13:06.483 [destination = ant_prod , address = rm-wz99s5v03gso12521.mysql.rds.aliyuncs.com/192.xxxxxx:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.000234,position=6676924,serverId=184376678,gtid=,timestamp=1591693973000] cost : 1051ms , the next step is binlog dump

配置 canal-adapter

4.1 canal-adapter 配置

由于Mysql 是8.0 這里需要下載 mysql-connector-java-8.0.20.jar,并將其放入lib中

cp mysql-connector-java-8.0.20.jar /canal-adapter/lib/

解壓之后進(jìn)入 conf文件夾中,修改 application.yml

server:    port: 8089  spring:    jackson:      date-format: yyyy-MM-dd HH:mm:ss      time-zone: GMT+8      default-property-inclusion: non_null  canal.conf:    mode: tcp # kafka rocketMQ    canalServerHost: 127.0.0.1:11111    batchSize: 500    syncBatchSize: 1000    retries: 0    timeout:    accessKey:    secretKey:  # 源Mysql 地址賬號(hào)密碼等    srcDataSources:       defaultDS:        url: jdbc:mysql://localhost:3306/test_database?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai        username: canal        password: canal  # 需要實(shí)時(shí)同步數(shù)據(jù)庫(kù),如果多個(gè)實(shí)例進(jìn)行區(qū)分即可    canalAdapters:    - instance: prod # canal instance,在canal-server中指定instance的名稱      groups:      - groupId: g1        outerAdapters:        - name: rdb          key: mysql1 # 唯一標(biāo)示          properties:            jdbc.driverClassName: com.mysql.jdbc.Driver            jdbc.url: jdbc:mysql://localhost:3306/test_database_01?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai            jdbc.username: canal            jdbc.password: canal

編輯rdb目錄下面表的映射文件,數(shù)據(jù)庫(kù)/表 (多個(gè)表創(chuàng)建多個(gè)映射文件,文件名對(duì)應(yīng)表名)以此類推

dataSourceKey: defaultDS  destination: prod  outerAdapterKey: mysql1  concurrent: true  dbMapping:    database: test_database_01    table: test    targetTable: test_database_01.test    targetPk:      id: id    mapAll: true

4.1 canal-adapter 啟動(dòng)

進(jìn)入 canal-adapter/bin 目錄 啟動(dòng)

cd canal-adapter/bin # 進(jìn)入目錄  ./startup.sh & # 后臺(tái)啟動(dòng)

查看日志,是否啟動(dòng)成功

cd canal-adapter/adapter/logs/ #進(jìn)入日志目錄  tail -f adapter.log # 查看日志是否啟動(dòng)成功

測(cè)試數(shù)據(jù)庫(kù)同步

更新/刪除/批量插入/批量更新/批量刪除

上述就是小編為大家分享的Canal中怎么實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)實(shí)時(shí)數(shù)據(jù)同步了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章題目:Canal中怎么實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)實(shí)時(shí)數(shù)據(jù)同步
文章分享:http://weahome.cn/article/gcggpc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部