---
title: "通过 Canal 同步数据 - OB Cloud 云数据库 master | OceanBase 文档中心"
description: 通过 Canal 同步数据 Canal 是一个开源的数据库变更日志解析工具，主要应用于基于 MySQL 数据库的增量数据订阅和消费。Canal 主要用于实现数据的实时同步和异构系统的数据集成。 本文介绍使用 Canal 的 Canal Server 和 Canal Adapter 组件进行 OB Cloud MySQ…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*qbZXRo_94ZEAAAAAAAAAAAAADiGDAQ/original) OB Cloud 云数据库

# 通过 Canal 同步数据

更新时间：2026-05-20 20:15:24

Canal 是一个开源的数据库变更日志解析工具，主要应用于基于 MySQL 数据库的增量数据订阅和消费。Canal 主要用于实现数据的实时同步和异构系统的数据集成。

本文介绍使用 Canal 的 Canal Server 和 Canal Adapter 组件进行 OB Cloud MySQL 兼容模式租户间的数据同步。

## 背景信息

- Canal Server

  负责连接到 MySQL 数据库，模拟 MySQL slave 的行为，解析数据库的 Binlog 日志文件，提取其中的变更数据，并以一种易于处理的格式提供给下游消费。
 - Canal Adapter

  Canal 的扩展组件，用于将 Canal Server 解析出的数据变更映射和转发到多种类型的下游数据存储，如 RDBMS（关系型数据库）、Elasticsearch、HBase 等。

更多关于 Canal 的信息，参考 Canal 的 [GitHub 地址](https://github.com/alibaba/canal/releases)。

## 前提条件

在同步数据前，确认以下信息：

- 您已开启 OB Cloud MySQL 的 Binlog。更多信息，参考 [操作步骤](#操作步骤)。
 - 您已安装 Java 1.8 或更高版本。
 - 您已安装 Canal Server。
 - 您已安装 Canal Adapter。
 - 您已在目标 OB Cloud 数据库中创建需要的表结构，确保它与源数据库相同。

## 操作步骤

按照以下步骤进行 OB Cloud MySQL 兼容模式租户间的数据同步：

1. 开启 OB Cloud 的 Binlog 服务。 开启 Binlog 日志服务的路径：实例列表 -> 租户管理 -> Binlog 服务，点击开通即可。更多信息，参考 [开通 Binlog 日志服务](https://www.oceanbase.com/docs/common-oceanbase-cloud-1000000004154488)。
 2. 创建用于数据同步的用户。

   ```sql
    CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
    GRANT SELECT ON *.* TO '用户名';

   ```
 3. 配置 Canal Server。 修改 `conf/example/instance.properties` 文件，设置 OB Cloud MySQL 的地址、端口、用户名和密码，以及待监听的数据库和表。启动 Canal 服务，并监控其日志以确保正常运行。示例配置文件如下：

   ```shell
   vi conf/example/instance.properties

   ```

   ```yml
    # 配置 OB Cloud MySQL 数据源连接信息
    canal.instance.master.address=源 OB Cloud MySQL 服务器地址:端口
    canal.instance.dbUsername=用户名
    canal.instance.dbPassword=密码

    # 其他配置项保持默认

   ```
 4. 启动 Canal Server。

   ```shell
   cd /Canal_Home/canal && sh bin/startup.sh

   ```

   检查日志文件确认 Canal Server 启动成功：

   ```shell
   tail -f logs/canal/canal.log

   ```
 5. 配置 Canal Adapter。 进入 Canal Adapter 的配置目录 `conf`，编辑 `application.yml` 配置文件，配置 rdb Adapter 属性：

   ```yml
   mode: tcp #tcp kafka rocketMQ rabbitMQ  
   dataSourceKey: defaultDS
   destination: example
   groupId: g1
   outerAdapters:
   - name: rdb
       key: mysql1
       properties:
       jdbc.driverClassName: com.mysql.cj.jdbc.Driver
       jdbc.url: jdbc:mysql://目标MySQL地址:端口/目标数据库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false
       jdbc.username: 目标数据库用户名
       jdbc.password: 目标数据库密码

   ```

   Canal Adapter 支持多种类型的数据存储系统，每种类型都对应一个 Adapter。RDB Adapter 是 Canal Adapter 的一部分，它专门用于在关系型数据库之间同步数据。 RDB（Relational Database）映射文件示例如下：

   ```shell
   cat conf/rdb/mytest_user.yml

   ```

   ```yml

   dataSourceKey: defaultDS
   destination: example
   groupId: g1
   outerAdapterKey: mysql1
   concurrent: true
   dbMapping:
   database: 源数据库名
   table: 源表名
   targetTable: 目标数据库.目标表名
   targetPk:
       id: 主键字段
   mapAll: true

   ```
 6. 启动 Canal Adapter。

   ```shell
   cd /Canal_Home/adapter && sh bin/startup.sh

   ```

   检查日志文件确认 Canal Adapter 启动成功：

   ```shell
   tail -f logs/adapter/adapter.log

   ```
 7. 验证数据同步 检查目标数据库的表，验证源数据是否已成功同步。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
