当前位置: 首页 > news >正文

docker部署canal-server

以下是使用 Docker 安装 Canal-Server 的详细步骤,结合了多个实际部署案例的最佳实践:

一、安装前准备

  1. 配置 MySQL
    • 开启 binlog 日志并设置为 ROW 模式,在 MySQL 配置文件(如 /etc/my.cnf)中添加:

      [mysqld]
      log-bin=mysql-bin
      binlog-format=ROW
      server_id=1

      配置后需重启 MySQL

    • 创建 Canal 专用账户并授权:

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

二、Docker 部署 Canal-Server

  1. 拉取镜像

    docker pull canal/canal-server:v1.1.5  # 推荐稳定版本,避免最新版潜在问题(网页4][7](@ref)
  2. 初始化配置文件

    • 创建挂载目录:
      mkdir -p /opt/docker/canal/{conf,logs}
    • 通过临时容器提取默认配置:
      docker run --name canal_temp -d canal/canal-server:v1.1.5
      docker cp canal_temp:/home/admin/canal-server/conf/canal.properties /opt/docker/canal/conf/
      docker cp canal_temp:/home/admin/canal-server/conf/example/instance.properties /opt/docker/canal/conf/
      docker rm -f canal_temp
  3. 修改关键配置

    • ​**instance.properties**:
      properties
      # 不要监听元数据的变化,如建表语句等
      canal.instance.tsdb.enable=false  
      
      canal.instance.master.address=mysql_host:3306  # MySQL地址
      canal.instance.dbUsername=canal
      canal.instance.dbPassword=canal
      canal.instance.filter.regex=.*\\..*  # 监控所有库表(网页3][4](@ref)

三、启动容器

  1. 运行命令
    docker run -d \
      --name canal-server \
      -p 11111:11111 \
      -v /opt/docker/canal/conf/canal.properties:/home/admin/canal-server/conf/canal.properties \
      -v /opt/docker/canal/conf/instance.properties:/home/admin/canal-server/conf/example/instance.properties \
      -v /opt/docker/canal/logs:/home/admin/canal-server/logs \
      --network=host \  # 推荐使用 host 网络模式避免端口映射问题(网页6]
      canal/canal-server:v1.1.5

四、验证部署

  1. 检查日志
    docker logs -f canal-server
    成功日志包含 Canal connector has connected to mysql_host:3306

五、注意事项

  • 版本选择:v1.1.5 较稳定,v1.1.6 可能存在配置兼容性问题(网页7]
  • 内存限制:建议容器内存分配 ≥2GB,避免 OOM 错误(网页5]
  • 持久化配置:定期备份 /opt/docker/canal/conf 目录防止配置丢失(网页1]

附:多实例部署

若需监控多个数据库实例,可通过挂载多个 instance.properties 文件并指定不同 canal.destinations

# 在 canal.properties 中指定多个实例名
canal.destinations = instance1,instance2
# 为每个实例创建独立的配置文件目录
mkdir /opt/docker/canal/conf/{instance1,instance2}

相关文章:

  • 【原创】使用ElasticSearch存储向量实现大模型RAG
  • Elasticsearch8.17 集群常见问题排查与解决
  • linux:环境变量,进程地址空间
  • DoFoto AI(美颜修图·高质量照片)Ver.1.210.53 高级版.apk
  • 制造业数字化转型之工业级远程控制方案选型指南
  • 万字长文详解|蚂蚁数据湖深度探索与业务应用实践
  • 卫宁健康学习——门诊挂号收费管理系统
  • 英伟达消费级RTX显卡配置表
  • 适合用户快速开发项目的PHP框架有哪些?
  • 【测试报告】抽奖系统
  • C++20 中的同步输出流:`std::basic_osyncstream` 深入解析与应用实践
  • maven在windows系统上的详细安装和配置
  • 【入门初级篇】报表基础操作与功能介绍
  • C++中函数模板与类模板的简单使用
  • STC89C52单片机学习——第26节: [11-2]蜂鸣器播放音乐
  • 谈谈 CSS 中z - index属性的作用及在什么情况下会失效。
  • 「数据会说话」:让AI成为你的数据分析魔法师 ✨
  • yolov5学习及手势识别实战
  • 让 Google Play 成为助力 PC 游戏增长的最佳平台
  • K8S学习之基础三十七:prometheus监控node资源
  • 在线代理浏览器网站/短视频关键词优化
  • 服务器多少钱/优化防疫政策
  • 网站 空间 是什么/广州网站设计
  • 阎良做网站/制作一个网站的费用是多少
  • 建设网站方案 ppt/自媒体推广渠道
  • 企业网站建设费计入什么科目/邢台市seo服务