Skip to main content

版本升级

简述

本文档主要介绍在 Linux/MacOS 操作系统下,已经安装 CloudCanal docker 版用户如何升级 CloudCanal 新版本。

如果您从未安装过 CloudCanal , 请参考 全新安装 文档 CloudCanal docker 版安装( Linux/MacOS)

升级步骤

1. 下载最新安装包

2. 解压缩新安装包

  • 在相同目录下解压覆盖原来的文件
    • 7z x cloudcanal.7z -o./cloudcanal_home

3. 控制台 DDL 变更

  • 检查解压目录下 ddl_history.sql 文件,确认当前使用版本和升级版本是否存在元数据库 (cloudcanal_console) 变更

  • 在 docker 宿主机上执行执行命令登录元数据库(cloudcanal_console) , 执行相关 sql 进行变更

    • mysql -uclougence -h127.0.0.1 -P25000 -p123456
  • 举个例子

    • 当前版本为1.0.3,在 ddl_history.sql 中我们看到1.0.4版本对应的表结构变更,执行以下表结构变更,避免启动 console时报错 e2e76c27-250f-49db-96e4-1be333854854-image.png

    PS:服务版本从2.3.1.0版本之后的升级需要登录到cloudcanal-mysql容器中将当前mysql的数据dump出来备用

    docker exec -it cloudcanal-mysql /bin/bash
    mysqldump -uclougence -p123456 --single-transaction -R -E --databases cloudcanal_console >/tmp/cloudcanal_console.sql

    image-20230104170152434

    退出容器然后把dump出来的文件copy到宿主机

    docker cp cloudcanal-mysql:/tmp/cloudcanal_console.sql .

4. 备份容器数据(可选)

  • 升级会重建 console 和 sidecar 的 volume ,容器内部的配置和日志会丢失

  • Mac OS 和 Windows 请手动备份容器内需要的日志和配置数据

  • 执行 scripts 目录下脚本备份配置和日志数据

    • 备份后的内容存放在 …/scripts/console_backup…/scripts/sidecar_task_backup 两个目录中。
  • 容器重要配置和日志路径

    ### console容器内配置和日志路径
    /home/clougence/cloudcanal/console/conf
    /home/clougence/logs
    ### sidecar容器内配置和日志路径
    /home/clougence/cloudcanal/sidecar/conf
    /home/clougence/logs

5.修改console配置文件

  • 在版本2.2.6.12之后新增了自定义告警接口,在配置文件处需要新增如下配置

    console.config.alert.custom.alerturl=

    image-20221205141715889

6. 关闭旧版本容器(运行中)

./stop.sh

7. 更新到新版本容器

./upgrade.sh

PS:其中服务从2.3.0.11(包含)之前的版本,升级到2.3.1.0(及以后的版本)升级,需要先执行uninstall.sh,然后执行install.sh

​ 当前版本是2.3.0.10(包含)之前的版本,现在需要升级到2.3.0.11,直接执行upgrade.sh即可

​ 当前版本是2.3.0.11(包含)之前的版本,现在需要升级到2.3.1.0(及以后的版本),则需要执行uninstall.sh,然后执行install.sh

​ 当前版本是2.3.1.7(包含)之后的版本,现在需要升级到2.3.1.10(及以后的版本),直接执行upgrade.sh

./uninstall.sh
./install.sh

将刚才copy出来的cloudcanal_console.sql文件cp到cloudcanal-mysql容器,进到cloudcanal-mysql容器中恢复刚才的mysql文件

docker cp ./cloudcanal_console.sql cloudcanal-mysql:/tmp
docker exec -it cloudcanal-mysql /bin/bash
mysql -uclougence -p123456
mysql> drop database cloudcanal_console;
Query OK, 59 rows affected (0.17 sec)
mysql> source /tmp/cloudcanal_console.sql;
mysql> exit
exit

image-20230104171030185

重启一下整个服务

./restart.sh

8. 确认已经升级到新版本

docker ps | grep cloudcanal

062331e8-1d29-40cb-bf41-2969a139e2a4-image.png

常见问题

升级后重新激活失败的常见处理方式

  • 有些老版本升级到最新版本CloudCanal重新获取最新的激活码会激活失败,这主要是License对于老版本CloudCanal的兼容性缺陷。可以清空CloudCanal源数据中的auth_code_info表再重新激活即可正常激活。执行SQL如下:
 truncate table `cloudcanal_console`.`auth_code_info`; 
  • 升级后为系统变成未激活状态,从Clougence官网重新申请新的授权码进行激活即可。