#数据库开启binlog
查看我之前的教程 docker 创建MySQL

docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf  /
vim /mysqld.cnf
i
##添加下面的内容
log-bin=mysql-bin
server-id=1


保存 重启mysql容器

安装canal

docker run -p  11111:11111   --name=canal -id canal/canal-server
##进入 canal 容器
docker exec  -it canal bash
#编辑
cd /home/admin/canal-server/conf/example/
vi instance.properties


保存 重启cannel容器

java客户端

##导入两个依赖<dependency><groupId>com.alibaba.otter</groupId><artifactId>canal.client</artifactId><version>1.1.5</version></dependency><!-- Message、CanalEntry.Entry等来自此安装包 --><dependency><groupId>com.alibaba.otter</groupId><artifactId>canal.protocol</artifactId><version>1.1.5</version></dependency>

测试用例

package com.zixi;import com.alibaba.otter.canal.client.CanalConnector;
import com.alibaba.otter.canal.client.CanalConnectors;
import com.alibaba.otter.canal.protocol.CanalEntry;
import com.alibaba.otter.canal.protocol.Message;
import com.google.protobuf.InvalidProtocolBufferException;import java.net.InetSocketAddress;
import java.util.List;/*** @创建人 jiangxiong* @创建时间 2021-09-05 22:14* @描述*/
public class Simple {//Canal服务地址private static final String SERVER_ADDRESS = "服务地址";//Canal Server 服务端口号private static final Integer PORT = 11111;//目的地,其实Canal Service内部有一个队列,和配置文件中一致即可,参考【修改instance.properties】图中private static final String DESTINATION = "example";//用户名和密码,但是目前不支持,只能为空private static final String USERNAME = "";//用户名和密码,但是目前不支持,只能为空private static final String PASSWORD = "";public static void main(String[] args) {CanalConnector canalConnector = CanalConnectors.newSingleConnector(new InetSocketAddress(SERVER_ADDRESS, PORT), DESTINATION, USERNAME, PASSWORD);canalConnector.connect();//订阅所有消息canalConnector.subscribe(".*\\..*");//恢复到之前同步的那个位置canalConnector.rollback();for (; ; ) {//获取指定数量的数据,但是不做确认标记,下一次取还会取到这些信息Message message = canalConnector.getWithoutAck(100);//获取消息idlong batchId = message.getId();if (batchId != -1) {System.out.println("msgId -> " + batchId);printEnity(message.getEntries());//提交确认//canalConnector.ack(batchId);//处理失败,回滚数据//canalConnector.rollback(batchId);}}}private static void printEnity(List<CanalEntry.Entry> entries) {for (CanalEntry.Entry entry : entries) {if (entry.getEntryType() != CanalEntry.EntryType.ROWDATA) {continue;}try {CanalEntry.RowChange rowChange = CanalEntry.RowChange.parseFrom(entry.getStoreValue());for (CanalEntry.RowData rowData : rowChange.getRowDatasList()) {System.out.println(rowChange.getEventType());switch (rowChange.getEventType()) {//如果希望监听多种事件,可以手动增加casecase INSERT:String tableName = entry.getHeader().getTableName();//测试users表进行映射处List<CanalEntry.Column> afterColumnsList = rowData.getAfterColumnsList();System.out.println(afterColumnsList);break;case UPDATE:List<CanalEntry.Column> afterColumnsList2 = rowData.getAfterColumnsList();System.out.println("新插入的数据是:" + afterColumnsList2);break;case DELETE:List<CanalEntry.Column> beforeColumnsList = rowData.getBeforeColumnsList();System.out.println("被删除的数据是:" + beforeColumnsList);break;default:}}} catch (InvalidProtocolBufferException e) {e.printStackTrace();}}}
}

docker安装canal相关推荐

  1. canal介绍和使用docker安装canal

    文章目录 概述 1.1 背景 1.2 工作原理 1.4 HA机制设计 1.5 docker上安装canal 1.6 简单使用 概述 1.1 背景 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的 ...

  2. Docker安装部署MySQL+Canal+Kafka+Camus+HIVE数据实时同步

    因为公司业务需求要将mysql的数据实时同步到hive中,在网上找到一套可用的方案,即MySQL+Canal+Kafka+Camus+HIVE的数据流通方式,因为是首次搭建,所以暂时使用伪分布式的搭建 ...

  3. docker 安装mysql、canal、redis实现redis和mysql缓存一致性

    一.canal介绍 Canal 是用 Java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件. 目前,Canal 主要支持了 MySQL 的 Binlog 解析,解析完成后才利 ...

  4. 【大数据】M1 mac win docker安装kafka+mysql+canal

    文章目录 kafka docker-compose创建kafka 容器启动以后,访问容器,并且发送消息测试 问题 Exception in thread "main" kafka. ...

  5. macOS、Linux CentOS 、Docker安装部署canal-server(canal-deployer)服务

    1.环境准备 canal-server(canal-deployer)依赖jdk,需要先安装部署好jdk1.8 mysql开启binlog 2.安装部署 2.1.Docker方式安装部署 这里以1.1 ...

  6. linux版docker安装镜像

    目录 安装portainer 安装mysql单机版 安装mysql主从复制 安装redis单机版 安装redis集群(3主3从) 安装ES docker安装kafka docker安装nacos do ...

  7. CentOS 7中Docker安装详细步骤 ( 资源 )

    2019独角兽企业重金招聘Python工程师标准>>> 注意:centos 6.9上默认是安装docker早期的1.7.*版本,后续docker 分CE和EE的版本,只能安装在cen ...

  8. Docker安装ElasticSearch和Kibana并解决常见问题

    一. es安装 1.docker镜像下载 docker pull elasticsearch:7.3.0 2.启动 docker run -di --name=test_elasticsearch - ...

  9. Docker安装Apache与运行简单的web服务——httpd helloworld

    Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...

最新文章

  1. Uva1593 代码对齐
  2. go的http服务报错accept4: too many open files
  3. Emacs自带的小游戏
  4. python send 案例_python socket编程入门(编写server实例)+send 与sendall的区别与使用方法...
  5. pymc3使用_使用PyMC3了解飞机事故趋势
  6. mac 安装laravel Valet环境
  7. html圆圈复选框的代码,单选、复选框Demo
  8. 高效使用Tigergraph和Docker
  9. 中国各省名称+ 经纬度
  10. 台式计算机硬件的拆装,电脑拆解实例:苹果台式机拆机换盘详细步骤!
  11. Android Studio模拟器使用sqlite3建立SQLite数据库
  12. MPC-HC视频播放器
  13. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)
  14. 美通社企业新闻汇总 | 2019.1.10 | 全球最受欢迎商旅城市上海第四,华为发布AI数据中心交换机...
  15. 梅西明明有高薪为什么还努力踢球?
  16. Win11玩游戏延迟高的解决办法
  17. 杠杆炒股选择几倍比较适合?
  18. 云服务器的实用功能——弹性伸缩
  19. 如何修改qgsMapCanvas.cpp使其隐藏想要的图层
  20. 多米诺骨牌——变形版0,1背包问题

热门文章

  1. 日常工作:一个死锁问题的查验
  2. 【快速入门Dfinity】有了转译得到的wasm文件,怎么才能构建一个项目呢?
  3. 使用Pages for mac如何将文件转换成word格式?
  4. 2022年京东双11红包领取活动时间什么时候开始怎么领取京东双11红包?
  5. 一键安装JDK1.8
  6. OPPO可可软件商店推“免流量”下载活动
  7. mysql failover_新特性解读 | MySQL 8.0.22 新特性 Async Replication Auto failover
  8. Turtlebot4 神龟4号-前世今生的八卦
  9. Ubuntu Touch OTA-16(Linux手机测试更新)Arduino+ROS+Python+C++等
  10. 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级