开发者社区> 问答> 正文

官方的otter-all镜像貌似无法使用mysql8

使用现在最新的代码然后按照docker目录下面的方式打包出来的是否能支持mysql8呢?

原提问者Github用户 navist2020

展开
收起
云上静思 2023-06-14 23:10:52 291 0
5 条回答
写回答
取消 提交回答
  • canal 1.1.6 是支持 mysql 8.0 的,不过 canal 的 release 包好像有 bug,可能还是需要用最新的 snapshot 版

    原回答者Github用户 whhe

    2023-06-16 15:19:30
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    根据官方文档所述,otter-all 镜像默认使用的是 MySQL 5.6 ,如果您需要使用 MySQL 8,可以通过以下步骤进行更改:

    先拉取 otter-all 镜像: docker pull otterworks/otter-all 下载并修改配置文件,在 $OTTER_HOME/server/conf/ 下找到 canal.properties 和 otter.properties 两个文件,修改其中的 MySQL 配置。 a. 修改 canal.properties 中的 Canal 配置:

    mysql example

    canal.instance.master.address=127.0.0.1:3306 canal.instance.dbUsername=用户名 canal.instance.dbPassword=密码 canal.instance.defaultDatabaseName=otter 其中 canal.instance.master.address 参数为 MySQL 8 的地址,canal.instance.dbUsername 和 canal.instance.dbPassword 是连接 MySQL8 数据库的用户名和密码。

    b. 修改 otter.properties 中的 Pipeline 配置:

    Pipeline configurations 对应拓扑版本pipeline,component和其他的关系

    此处请使用绝对路径

    otter.pipeline.home=/otter/otter-all-4.2.16/pipelines

    队列处理批次数量

    otter.batch.size=1000

    大事件流量控制,单位m(每秒不超过多少个)

    otter.channel.flow.size=1000

    大事件压缩控制

    otter.channel.compressThreshold=256

    大事件发送超时时间(单位分钟)

    otter.channel.transactionTimeout=30

    是否使用otter内建控制台

    otter.manager.embed=false

    使用 RESTful API 启动

    otter.manager.rest=true

    使用 RESTful IP

    otter.manager.rest.ip=0.0.0.0

    使用 RESTful 端口

    otter.manager.rest.port=8090

    mysql example,加入如下配置,需要 MySQL8.0以上的版本支持decimal128类型

    otter.mysql.dumpmodel=ddl otter.mysql.ddl=false MySQL 8.0 的 decimal128 类型需要 otter.mysql.dumpmodel 设置为 ddl。

    编写 Dockerfile 自定义构建 你可以使用 ubuntu 镜像来自定义构建,例如:

    Choose ubuntu 16.04 as the operation system

    FROM ubuntu:16.04

    Replace apt source, you can also choose another source according to your needs

    RUN echo
    "deb http://archive.ubuntu.com/ubuntu/ xenial main restricted\n"
    "deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted\n"
    "deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted\n"
    "deb http://archive.ubuntu.com/ubuntu/ xenial universe\n"
    "deb http://archive.ubuntu.com/ubuntu/ xenial-security universe\n"
    "deb http://archive.ubuntu.com/ubuntu/ xenial-updates universe\n"
    "deb http://archive.ubuntu.com/ubuntu/ xenial multiverse\n"
    "deb http://archive.ubuntu.com/ubuntu/ xenial-security multiverse\n"
    "deb http://archive.ubuntu.com/ubuntu/ xenial-updates multiverse\n"\

    /etc/apt/sources.list

    Install JDK and others

    RUN apt-get update && apt-get install -y
    openjdk-8-jre-headless
    wget
    unzip
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

    Set to Chinese locale

    RUN apt-get update && apt-get install -y locales
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    && locale-gen zh_CN.UTF-8
    && dpkg-reconfigure locales
    && localedef -c -f UTF-8 -i zh_CN zh_CN.utf8

    ENV LANG=zh_CN.UTF-8
    LANGUAGE=en_US:en
    LC_ALL=zh_CN.UTF-8

    Download otter-all package

    RUN mkdir /otter && cd /otter
    && wget https://github.com/alibaba/otter/releases/download/4.2.16/otter-all-4.2.16.tar.gz
    && tar zxvf otter-all-4.2.16.tar.gz

    Copy configuration file and script

    ADD canal.properties $OTTER_HOME/server/conf/canal/ ADD otter.properties $OTTER_HOME/server/conf/ ADD start.sh $OTTER_HOME/bin/

    Set working directory

    WORKDIR $OTTER_HOME/bin

    Start otter server

    CMD ["sh", "start.sh"] 这个 Dockerfile 设置了 Ubuntu 16.04 作为操作系统,并下载安装了 JDK 和 wget 等必要工具,同时设置中文环境。然后下载 Otter-all 包,将配置文件和启动脚本添加到镜像中,最后设置工作目录并启动 Otter 服务。

    构建新镜像 使用以下命令将 Dockerfile 构建为新的镜像: docker build -t my-otter . 启动新镜像 使用以下命令启动新构建的镜像: docker run -i -t my-otter 在启动后,您应该可以看到启动日志输出,表示 Otter 服务正在运行,并且已经设置了 MySQL 8 数据库。

    总之,您可以根据上述步骤自定义构建 Otter-all 镜像,以支持 MySQL 8。我们不能确保自定义构建的 Docker 容器与 Otter-all 兼容,但这些步骤应该会提供一些帮助。

    2023-06-15 17:35:22
    赞同 展开评论 打赏
  • 根据我所了解到的情况,Otter 支持 MySQL 8.0。不过,需要注意的是,Otter 官方提供的 otter-all 镜像可能不支持 MySQL 8.0,因此你需要自己构建支持 MySQL 8.0 的镜像。

    你可以按照以下步骤构建支持 MySQL 8.0 的 Otter 镜像:

    1. 克隆最新的 Otter 代码:

      git clone https://github.com/alibaba/otter.git
      
    2. 进入 docker 目录:

      cd otter/docker
      
    3. 修改 Dockerfile 文件,在 FROM 行后添加以下内容:

      RUN wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm \
         && rpm -ivh mysql80-community-release-el7-3.noarch.rpm \
         && yum install -y mysql-community-client
      

      这将安装 MySQL 8.0 客户端。

    4. 构建镜像:

      docker build -t my-otter .
      

      这将构建名为 my-otter 的 Otter 镜像。

    5. 运行容器:

      docker run -d -p 8080:8080 -p 1099:1099 -p 2181:2181 -p 2888:2888 -p 3888:3888 my-otter
      

      这将在后台运行名为 my-otter 的容器,并将端口映射到本地。

    请注意,这只是一个简单的示例,你可能需要进行其他修改才能满足你的需求。

    2023-06-15 08:40:31
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    如果您使用最新的 Otter 代码并自行构建 Docker 镜像,确保 otter.properties 配置文件中的 MySQL 驱动程序版本已更新为支持 MySQL 8 的版本(例如 com.mysql.cj.jdbc.Driver),则可以支持 MySQL 8 数据库的同步。

    具体操作步骤如下:

    下载最新的 Otter 代码,进入代码目录。

    修改 otter.properties 配置文件,将 MySQL 驱动程序版本修改为支持 MySQL 8 的版本(例如 com.mysql.cj.jdbc.Driver)。

    使用 Maven 命令编译代码并打包成 Otter-all.jar 文件。

    将 Otter-all.jar 文件和 otter.properties 配置文件放在同一个目录下。

    使用 Dockerfile 构建 Docker 镜像,将 Otter-all.jar 文件和 otter.properties 配置文件复制到 Docker 镜像中。

    在 Kubernetes 中创建一个 Deployment,使用自定义的 Otter 镜像作为容器的镜像。

    在 Deployment 中使用 ConfigMap 或者 Secret 等方式,将 otter.properties 配置文件挂载到容器中。

    启动 Deployment,等待容器启动成功之后,使用 otterctl 命令或者 Web 界面配置同步任务,将 MySQL 8 数据库中的数据同步到目标数据库中。

    2023-06-15 08:06:23
    赞同 展开评论 打赏
  • 一般情况下,在最新的代码和Docker环境下,可以支持MySQL 8。你需要确保你的代码和Docker配置同时支持MySQL 8,并正确地进行MySQL 8的安装和配置。

    2023-06-15 08:05:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像