跳到主要内容

更换元数据库(kubernetes)

本文档介绍 CloudCanal K8S 部署如何更换元数据库。

CloudCanal 默认提供了元数据库镜像(MySQL), 但是用户上生产,希望能够用自有的、更加稳定、且得到良好维护的元数据库,本文做了具体的操作描述。

导出已有元数据库

  • 在 K8S 集群上执行以下命令,导出 cloudcanal_console 库内容

    # 进入 cloudcanal-mysql pod
    kubectl exec -it mysql-xxx-xxx -n cloudcanal /bin/bash
    # 导出 cloudcanal_console 库内容
    mysqldump -uroot -proot --databases cloudcanal_console > ./cloudcanal_console.sql
    # 退出 Pod,将 dump 出来的文件 copy 到宿主机
    kubectl cp cloudcanal/mysql-xxx-xxx:/tmp/cloudcanal_console.sql .

准备好新的元数据库 MySQL,将数据导入新元数据库

mysql> source ${YOUR_PATH}/cloudcanal_console.sql;

PS:请确保您准备的数据库与 cloudcanal-mysql Pod 的数据库版本一致,否则需要人工修改数据库表字符集。

修改 Console 的 Configmap 里的配置,修改后会自动同步到 Console Pod 中

  • 编辑 Configmap:kubectl edit cm console-config -n cloudcanal
  • 修改配置项
    • spring.datasource.url
    • spring.datasource.username
    • spring.datasource.password

重启 console 并确认能够正常登陆控制台

常见问题

账号权限

  • 请确保修改后的账号对 CloudCanal 元数据库有以下权限: SELECTUPDATEDELETEINSERTCREATEDROPINDEXALTEREXECUTECREATE ROUTINEALTER ROUTINE
    GRANT SELECT,UPDATE,DELETE,INSERT,CREATE,DROP,INDEX,ALTER,EXECUTE,CREATE ROUTINE,ALTER ROUTINE ON cloudcanal_console.* TO common_user@'%';