成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Canal實現MySQL數據庫實時數據同步

數據庫 MySQL
Canal Server能夠解析MySQL binlog并訂閱數據更改,而Canal Client可以實現將更改廣播到任何地方,例如數據庫和Apache Kafka。

[[343023]]

簡介

1.1 canal介紹

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

Canal Server能夠解析MySQL binlog并訂閱數據更改,而Canal Client可以實現將更改廣播到任何地方,例如數據庫和Apache Kafka。

它具有以下功能:

  •  支持所有平臺。
  •  支持由Prometheus提供支持的細粒度系統監控。
  •  支持通過不同方式解析和訂閱MySQL binlog,例如通過GTID。
  •  支持高性能,實時數據同步。(詳見Performance)
  •  Canal Server和Canal Client都支持HA / Scalability,由Apache ZooKeeper提供支持
  •  Docker支持。

缺點:

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

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

1.2 運作原理

原理很簡單:

  1.  Canal模擬MySQL的slave的交互協議,偽裝成mysql slave,并將轉發協議發送到MySQL Master服務器。
  2.  MySQL Master接收到轉儲請求并開始將二進制日志推送到slave(即canal)。
  3.  Canal將二進制日志對象解析為自己的數據類型(原始字節流)

如圖所示:

準備工作

2.1 下載解壓canal-server

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

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

解壓 

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

2.2 下載解壓 canal-adapter

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

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

解壓 

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

配置 canal-server

3.1 canal-server 配置

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

  1. canal.destinations = prod # 指定instance的名字多個使用逗號分隔 

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

  1. mkdir ant_prod  #創建文件夾  
  2. cp example/nstance.properties  prod/ # copy 文件 

修改 nstance.properties 配置如下: 

  1. canal.instance.master.address=127.0.0.1:3306      # 源Mysql地址  
  2. canalcanal.instance.dbUsername=canal                   # 源Mysql賬號  
  3. canalcanal.instance.dbPassword=canal                   # 源Mysql密碼  
  4. canal.instance.connectionCharset=UTF-8            # 與源數據庫編碼格式一致   
  5. canal.instance.defaultDatabaseName=test_database  # 默認監聽源數據庫 

3.2 canal-server 啟動

進入 canal-server bin 目錄 啟動 

  1. cd canal-server/bin # 進入目錄  
  2. ./startup.sh & # 后臺啟動 

查看日志,是否啟動成功 

  1. cd canal-server/logs/ant_prod #進入日志目錄 

啟動成功: 

  1. 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)] 
  2. 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] 
  3. 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] 
  4. 2020-06-09 17:13:05.305 [main] INFO  c.a.otter.canal.instance.spring.CanalInstanceWithSpring - start CannalInstance for 1-ant_prod  
  5. 2020-06-09 17:13:05.311 [main] WARN  c.a.o.canal.parse.inbound.mysql.dbsync.LogEventConvert - --> init table filter : ^.*\..*$ 
  6. 2020-06-09 17:13:05.311 [main] WARN  c.a.o.canal.parse.inbound.mysql.dbsync.LogEventConvert - --> init table black filter :  
  7. 2020-06-09 17:13:05.315 [main] INFO  c.a.otter.canal.instance.core.AbstractCanalInstance - start successful.... 
  8. 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 
  9. 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 
  10. 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中 

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

解壓之后進入 conf文件夾中,修改 application.yml 

  1. server:  
  2.   port: 8089  
  3. spring:  
  4.   jackson:  
  5.     date-format: yyyy-MM-dd HH:mm:ss  
  6.     time-zone: GMT+8  
  7.     default-property-inclusion: non_null  
  8. canal.conf:  
  9.   mode: tcp # kafka rocketMQ  
  10.   canalServerHost: 127.0.0.1:11111  
  11.   batchSize: 500  
  12.   syncBatchSize: 1000  
  13.   retries: 0  
  14.   timeout: 
  15.    accessKey:  
  16.   secretKey:  
  17. # 源Mysql 地址賬號密碼等  
  18.   srcDataSources:   
  19.     defaultDS:  
  20.       url: jdbc:mysql://localhost:3306/test_database?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai 
  21.        username: canal  
  22.       password: canal  
  23. # 需要實時同步數據庫,如果多個實例進行區分即可  
  24.   canalAdapters:  
  25.   - instance: prod # canal instance,在canal-server中指定instance的名稱  
  26.     groups:  
  27.     - groupId: g1  
  28.       outerAdapters:  
  29.       - name: rdb  
  30.         key: mysql1 # 唯一標示  
  31.         properties:  
  32.           jdbc.driverClassName: com.mysql.jdbc.Driver  
  33.           jdbc.url: jdbc:mysql://localhost:3306/test_database_01?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai  
  34.           jdbc.username: canal  
  35.           jdbc.password: canal 

編輯rdb目錄下面表的映射文件,數據庫/表 (多個表創建多個映射文件,文件名對應表名)以此類推 

  1. dataSourceKey: defaultDS  
  2. destination: prod  
  3. outerAdapterKey: mysql1  
  4. concurrent: true  
  5. dbMapping:  
  6.   database: test_database_01  
  7.   table: test  
  8.   targetTable: test_database_01.test  
  9.   targetPk:  
  10.     id: id  
  11.   mapAll: true 

4.1 canal-adapter 啟動

進入 canal-adapter/bin 目錄 啟動 

  1. cd canal-adapter/bin # 進入目錄  
  2. ./startup.sh & # 后臺啟動 

查看日志,是否啟動成功 

  1. cd canal-adapter/adapter/logs/ #進入日志目錄  
  2. tail -f adapter.log # 查看日志是否啟動成功 

測試數據庫同步 

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

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2024-10-30 08:15:18

2011-06-07 17:01:44

2025-04-29 08:36:28

SpringCanal數據庫

2010-06-02 16:57:50

MySQL數據庫同步

2010-06-09 17:36:45

MySQL數據庫同步

2010-06-09 15:01:18

MySQL數據庫同步

2010-05-17 14:00:07

MySql數據庫

2023-08-31 08:32:52

2019-10-08 15:54:42

SQL數據庫技術

2019-07-23 10:43:28

MariaDB數據庫MySQL

2024-12-06 08:29:29

2012-04-13 13:46:27

SAPHANASybase

2023-09-26 08:11:22

Spring配置MySQL

2011-04-14 10:36:36

2010-08-27 09:59:51

SQL Server

2023-09-08 10:13:30

開發技術

2010-07-01 15:44:22

SQL Server數

2025-04-01 08:38:41

2020-08-31 07:00:00

數據庫數據庫同步

2010-05-12 18:41:34

MySQL數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜网址| 99亚洲 | 久久久精品在线 | 麻豆changesxxx国产 | 久久久久久av | 青青草在线视频免费观看 | 亚洲一区二区三区免费在线观看 | 男女免费在线观看视频 | 日韩一区中文字幕 | 欧美精品一区二区三区四区五区 | 午夜视频大全 | 成人在线亚洲 | 国产最好的av国产大片 | 一级a爱片性色毛片免费 | 涩涩鲁亚洲精品一区二区 | 色噜噜狠狠色综合中国 | 在线免费观看a级片 | 国产一区不卡 | 欧美精品一区二区在线观看 | 日韩欧美在线观看视频网站 | 久久国产综合 | 国产激情综合五月久久 | 久久国产精品一区二区三区 | 九九精品在线 | 波多野结衣一区二区 | 国产精品精品久久久 | 亚洲精品视频免费观看 | 精品国产精品 | 噜噜噜噜狠狠狠7777视频 | 国产一区日韩在线 | 99免费在线视频 | 午夜精品视频 | 在线日韩欧美 | 午夜精品一区二区三区在线 | 蜜桃精品噜噜噜成人av | 激情久久av一区av二区av三区 | 国产精品a久久久久 | 成人精品一区二区户外勾搭野战 | 日韩和的一区二在线 | 亚洲精品2| 国产一区二区三区四区在线观看 |