背景介绍 我们都知道,很多用户并不是一开始就是使用 OceanBase 的。所以在他们决定使用 OceanBase 的时候,一定要把之前的业务数据迁移到 OceanBase 上来。如果是全量数据迁移,可以借助离线数据同步工具 DataX。但是,如果在全量迁移过程中业务产生了新数据,这些新数据又如何迁移呢?此时就需要对数据进行增量迁移。这也是本文的主题:如果使用数据同步工具 Canal 实时把数据从 MySQL 同步到 OceanBase。多云 混合云https://www.oceanbase.com/solution/multicloudoceanbase,完全自主研发的原生分布式数据库,连续年稳定支撑双,创新推出“三地五中心”城市级容灾新标准,一套引擎同时支持tp和ap的混合负载,具备数据强一致,高扩展,高可用,高性价比,高度兼容oracle/mysql等特性,已助力+行业客户实现关键业务系统升级。 【特别说明】这个教程使用的都是单机部署,只能用来演示。生产环境多为分布式集群部署。Canal的部署也是支持集群的,需要配合ZooKeeper进行集群管理。 P.S. 配合视频教程一起食用效果更佳噢~~视频教程,点击 OceanBase 监控工具 OBAgent。 那么什么是 Canal 呢?官方给出的解释,Canal 是个数据同步工具,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。基于日志增量订阅和消费,Canal 有以下功能: 数据库镜像 数据库实时备份 索引构建和实时维护(拆分异构索引、倒排索引等) 业务 cache 刷新 带业务逻辑的增量数据处理 忽略官方的解释,通俗来说,Canal 就是一个数据同步工具。它能让 MySQL 和 OceanBase 建立联系,你在 MySQL 上进行的 DDL、DML 操作,都能同步到 OceanBase 上。当然前提是 SQL 是两个数据库都支持的语法。 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件 binary log events,可以通过 show binlog events 进行查看) MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log) MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流) 以上内容部分摘自 Canal 官方 GitHub 仓库,更多信息,查看 Canal GitHub 仓库:https://github.com/alibaba/canal。 从 MySQL 增量同步数据到 OceanBase 总共分 3 步: 第 1 步,设置 MySQL 第 2 步,部署 Canal 第 3 步,写一些数据,测试实时同步功能 接下来我们按照上述步骤,来一起试一把数据同步。 MySQL 的安装本文就不介绍了,比较简单,网上也有很多教程。对于自建 MySQL,需要先开启 Binlog 写入功能,打开 my.cnf 配置文件: 添加这些配置: 更改配置之后需要重启 MySQL 新的配置才能生效。连接 MySQL,查看是否生效: 可以看到此时 log_bin 已经打开,并且 binlog_format 的值为 ROW。 现在创建 Canal 用户: 这里说一个我踩的坑,在设置密码时,如果不满足当前密码强度规则,会报错: 我们看看当前密码强度规则: 密码包括 1 ?个特殊字符,按照要求重置密码,成功 本文使用的 Canal 是 OceanBase 的定制版本,详细信息,参考 Canal for OceanBase。 Canal Deployer 是 Canal 的 server 端,它用来进行 binlog 到 CanalEntry 的转换。来到 Canal for OceanBase 仓库的 Rlease 页面,下载 Deployer 的安装包。然后创建解压目录并解压: 来到安装目录,查看目录结构: 修改实例属性配置文件 这里只介绍我用到的配置,我们把用户名、密码改了就行 启动 Canal: 注意 Canal 启动需要安装 JAVA JDK,安装命令如下: 生产环境建议用二进制包装,这样不会影响其他用户。解压以后配置环境变量就可以了。 现在查看日志,看看 Canal 有没有启动成功: 通过日志,我们看到已经启动成功,接下来我们部署 Canal Adaptor。 Canal Adapter 是 Canal 的客户端适配器,它用来解析 CanalEntry 并将增量变动同步到目的端。还是从刚才提到的 ?Release 页面,下载对应的包,解压方式同上。我们直接来到安装目录,修改启动器配置文件,还是只介绍我用到的配置: 默认的配置是注释的,我们需要打开。由于社区版OceanBase完全兼容MySQL协议,因此在使用时,将其视为MySQL配置即可。Adapter 服务在启动时,会加载对应类型 Adapter 配置目录(此处即conf/rdb/)下的所有配置文件。表映射有两种配置形式:按表映射同步和整库同步。我们直接同步数据库镜像,因为生产环境往往有多个表需要同步,修改 RDB 表映射文件有点麻烦。 创建 database 和 table 我就不演示了,我们直接测试数据同步: 打开一个新的窗口,把日志打印出来,这样方便在插入数据时看到日志的变化。 已经同步过来了,详情见屏幕右侧的日志。此时,你也可以连接到 OceanBase,确认数据是不是真的同步过来了。 最后,来个小彩蛋,canal 的正确读法是 [k?'n?l">,是运河的意思,比如著名的 Panama Canal(巴拿马运河)。我发现很多小伙伴会读成 ['k?n?l">,记住是 ?[k?'n?l"> 哦,重音在后面啦~~ |
无论是在学校还是在社会中,大家一定都接触过一些使用较为普
在日常的学习、工作、生活中,大家都接触过很多优秀的文案吧
在学习、工作、生活中,越来越多人热衷于在社交平台上发布文案,
抖音最火春游文案190句 在平凡的学习、工作、生活中,大家或
情人节高情商发朋友圈文案220句 随着社交网络的兴起,越来越