oceanbase通过canal 同步数据到mariadb实践-c7电子娱乐
最近在处理oceanbase 通过 canal同步数据到mariadb 数据库,实践过程中遇到了一些问题,发现社区中这类实践较少。现在将自己实践过程中遇到的问题以及如何解决的,在这里和大家分享一下。
所使用版本:
组件 | 版本号 |
---|---|
操作系统centos | 7.6 |
oceanbase-ce | 4.2.4.0 |
obproxy | 4.3.2.0-26 |
oblogproxy | 4.0.1-1 |
canal-for-ob.deployer | 1.1.6 |
canal-for-ob.adapter | 1.1.6 |
步骤一: 安装 oblogproxy
按照官方手册安装
注意:
1. 注意oblogproxy的版本,因为有可能不支持当前oceanbase版本。可查看版本发布记录了解。
修改 env/deploy.conf.json 配置文件时,注意要先创建元数据库,比如默认的元数据是 binlog_cluster,这个数据库要先创建,否则报错。
{
"host": "",
"port": 0,
"user": "",
"password": "",
"database": "binlog_cluster", <============ 需要先创建
"sys_user": "",
"sys_password": "",
"supervise_start": "",
"init_schema": "",
"node_ip": ""
}
步骤二: 安装canal server、adapter
这一步完全按照c7电子娱乐官网安装即可:
1. 下载安装包,下载
c7电子娱乐官网默认下载的是1.1.6版本:
如果1.1.6有问题可以试试1.1.7
步骤三: 启动canal server 和 adapter
报错:
canal server 日志中
com.oceanbase.clogproxy.client.exception.logproxyclientexception: unsupported protocol version: 19968
在源端oceanbase做dml adapter日志中无任何变化。
在社区中找到类似案例:
步骤四:替换ob版本的canal 为原生canal
注意:
原生canal server 的instance.properties 中,要使用业务租户的root用户连接,端口使用代理端口2883
canal.instance.master.address=192.168.179.198:2883
canal.instance.dbusername=root@ten_en#clu_t
安装原生canal的替换后,会发现问题:
1. 如果oblogproxy部署在单独的服务器上,原生canal无法获取到binlog。 因为instance.properties配置文件中指向的是observer的地址。
所以oblogproxy 应该和observer 部署在一起,虽然这有违背官方的推荐。如果有其他大佬有解决办法,欢迎指出。
将oblogproxy 与observer 安装一起后,添加任务后,启动canal server 和 adapter 组件,发现同步正常。