数据同步快速入门

数据同步的重要性

数据同步是现代数据架构中的关键组件,它帮助您实现数据在不同系统间的无缝流动。使用 ProtonBase 数据同步服务,您可以:

  • 简化数据迁移:轻松将数据从现有系统迁移到 ProtonBase
  • 实时数据集成:保持多个数据系统间的数据一致性
  • 降低运营成本:减少手动数据处理和维护工作
  • 提高数据可用性:确保数据在需要时可用且最新

ProtonBase 提供数据同步服务(Teleport),可以方便、快捷地将数据一站式导入/导出到 ProtonBase。支持 MySQL、Postgres、Kafka 等数据源,集数据同步、迁移于一体。

核心功能

支持的同步操作

  • 支持单表、多表、整库、整实例同步
  • 支持字段裁剪、字段映射、类型转换等操作
  • 支持分库分表同步到一个目标逻辑表
  • 支持 DDL 变更,包括新增表、新增字段等操作

产品优势

  • 高可靠性:企业级数据同步,确保数据一致性
  • 高性能:优化的同步引擎,提供高吞吐量
  • 易用性:直观的界面和简化的配置流程
  • 灵活性:支持多种数据源和复杂映射规则

快速开始

以 MySQL 同步到 ProtonBase 作为例子

配置网络

一般云厂商的 RDS,需要配置白名单才能访问。数据同步的公网 IP 地址如下,请按照云厂商方式将数据同步公网 IP 设置为 RDS 白名单。

云产商地域公网 IP
Alibaba Cloudcn-beijing39.105.121.234
Alibaba Cloudcn-hangzhou47.111.11.209
AWS-CNcn-north-1140.179.51.205
AWS-CNcn-northwest-1161.189.222.97

安全建议

  • 仅添加必要的 IP 地址到白名单
  • 定期审查白名单配置
  • 使用最小权限原则配置数据库用户

创建同步任务

左侧导航栏中选择数据同步 -> 数据导入,然后点击右上角创建按钮

在弹框中,输入作业名称和选择数据源类型 MySQL。

命名规范

  • 使用描述性的作业名称,如 "mysql-to-protonbase-ecommerce"
  • 遵循统一的命名约定,便于管理和识别

配置数据源

在左边输入 MySQL 的连接方式,通过"连接测试"按钮测试是否连接成功;在右边选择目标 Warebase,同样选择"连接测试"测试连接,都出现"连接成功"字样后代表源端和目标端连通正常。更多有关数据源的介绍,参考文章选择数据源

连接配置最佳实践

  • 使用专用的同步账户,避免使用管理员账户
  • 配置适当的连接超时和重试机制
  • 定期轮换访问凭证

选择同步对象

如何快速选择或者过滤同步对象,参考同步对象筛选

对象筛选建议

  • 初期同步时选择少量表进行测试
  • 使用正则表达式批量筛选相似命名的对象
  • 排除不需要同步的系统表或临时表

配置映射规则

本同步任务的默认映射方式为:将 MySQL 数据库(Database)的表映射到 Warebase 的 public 模式(schema)下,具体参考 同步对象映射

映射配置提示

  • 理解默认映射规则,避免数据覆盖
  • 对于分库分表场景,配置合适的映射规则
  • 测试映射结果确保符合预期

设置同步策略

同步策略选择

  • 全量同步:适用于一次性数据迁移
  • 增量同步:适用于持续数据同步
  • 全量+增量:结合两者优势,确保数据完整性

启动同步

同步任务配置结束后,点击启动按钮启动任务

启动完成后,可以查看同步任务状态,具体参考作业操作和状态

启动后检查

  • 监控作业状态和进度
  • 检查错误日志和警告信息
  • 验证同步数据的完整性和准确性

端到端示例:MySQL 到 ProtonBase 数据同步

以下是一个完整的端到端示例,演示如何将 MySQL 数据库中的数据同步到 ProtonBase。

1. 准备源数据

首先,在 MySQL 数据库中创建示例表并插入数据:

-- 创建示例数据库
CREATE DATABASE ecommerce;
 
USE ecommerce;
 
-- 创建用户表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
 
-- 创建订单表
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    product_name VARCHAR(100) NOT NULL,
    quantity INT NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);
 
-- 插入示例数据
INSERT INTO users (username, email) VALUES 
('alice', 'alice@example.com'),
('bob', 'bob@example.com'),
('charlie', 'charlie@example.com');
 
INSERT INTO orders (user_id, product_name, quantity, price) VALUES 
(1, 'Laptop', 1, 1200.00),
(1, 'Mouse', 2, 25.00),
(2, 'Keyboard', 1, 75.00),
(3, 'Monitor', 1, 300.00);

2. 配置网络连接

  1. 获取您的 ProtonBase 数据同步服务的公网 IP 地址
  2. 将该 IP 地址添加到 MySQL RDS 的白名单中
  3. 确保防火墙规则允许从该 IP 地址的连接

3. 创建数据同步作业

  1. 登录 ProtonBase 控制台
  2. 导航到"数据同步" -> "数据导入"
  3. 点击"创建"按钮
  4. 输入作业名称,例如"mysql-to-protonbase-ecommerce"
  5. 选择数据源类型为"MySQL"

4. 配置数据源连接

在数据源配置页面:

  1. 输入 MySQL 连接信息:

    • 主机地址:您的 MySQL RDS 地址
    • 端口:3306
    • 数据库名:ecommerce
    • 用户名和密码
  2. 选择目标 Warebase:

    • 选择您要同步到的 Warebase 实例
  3. 点击"连接测试"验证连接

5. 筛选同步对象

  1. 在对象筛选页面,选择"ecommerce"数据库
  2. 选择要同步的表:
    • users 表
    • orders 表

6. 配置对象映射

  1. 默认映射会将 MySQL 表映射到 ProtonBase 的 public schema
  2. 如果需要自定义映射,可以修改映射规则:
    concat('ecommerce', '.', 'public', '.', SOURCE_OBJECT)

7. 配置同步策略

  1. 选择同步方式:

    • 全量同步:同步所有现有数据
    • 增量同步:持续同步新增和变更的数据
  2. 根据业务需求选择合适的同步策略

8. 启动并监控作业

  1. 点击"启动"按钮开始数据同步
  2. 在作业详情页面监控同步进度
  3. 查看关键指标:
    • 已处理记录数
    • 处理速度(RPS)
    • 同步延迟

9. 验证同步结果

在 ProtonBase 中验证数据是否成功同步:

-- 连接到目标数据库
\c ecommerce
 
-- 查看同步的用户数据
SELECT * FROM public.users;
 
-- 查看同步的订单数据
SELECT * FROM public.orders;
 
-- 执行关联查询验证数据完整性
SELECT u.username, o.product_name, o.quantity, o.price
FROM public.users u
JOIN public.orders o ON u.id = o.user_id;

10. 处理常见问题

连接失败

  • 检查网络白名单配置
  • 验证 MySQL 用户权限
  • 确认防火墙规则

数据不一致

  • 检查映射规则是否正确
  • 验证源表和目标表结构
  • 查看同步日志排查错误

性能问题

  • 调整同步作业的并发度
  • 优化源数据库查询性能
  • 检查网络带宽限制

通过以上步骤,您已经成功完成了从 MySQL 到 ProtonBase 的端到端数据同步。这个示例展示了数据同步的基本流程,您可以根据实际需求调整配置参数和同步策略。