选择数据源

数据源选择的重要性

选择合适的数据源是数据同步成功的基础。正确的数据源选择能够:

  • 确保数据完整性:选择支持所需数据格式和协议的数据源
  • 优化同步性能:根据数据源特性选择合适的同步策略
  • 降低集成复杂度:使用已支持的数据源减少开发工作量
  • 保障数据质量:选择稳定可靠的数据源确保同步质量

Teleport(数据同步服务)支持的数据源范围广泛,涵盖了主流的关系型数据库、大数据消息队列、NoSQL 数据库以及特定的云服务。

支持的数据源

数据输入源

Teleport 可以从以下数据源获取数据并进行传输或同步:

数据源类型关键特性支持适用场景
ProtonBase支持高效的全量和增量数据同步ProtonBase实例间数据迁移
PostgreSQL支持高效的全量和增量数据同步PostgreSQL数据库同步
MySQL支持高效的全量和增量数据同步MySQL数据库同步
Oracle支持高效的全量和增量数据同步Oracle数据库同步
Kafka采用事件实时同步,支持 KVS JSON、DOUBLE SERIALIZED KVS JSON、CANAL JSON、CANAL PROTOBUF 格式实时数据流处理
MongoDB支持高效的全量和增量数据同步MongoDB数据库同步
阿里云 ADB (AnalyticDB)支持高效的全量同步阿里云分析型数据库
阿里云 Data Hub采用事件实时同步阿里云实时数据处理
阿里云 SLS (Simple Log Service)采用事件实时同步阿里云日志服务
其他关系型数据库可以支持采用上述协议兼容的其他数据库兼容协议的数据库

数据输出源

当前,Teleport 导出的数据主要支持:

数据源类型典型应用场景配置说明
Kafka将 ProtonBase 的整库数据变更事件输出到 Kafka 主题,支持 Maxwell 和 KVS 两种格式需要配置 Kafka 集群连接信息和主题

权限配置

不同数据源在使用前需要配置相应的权限,以确保 Teleport 能够正常访问和同步数据。

MySQL 权限

对于 MySQL 数据源,根据同步类型(全量同步或增量同步)需要不同的权限:

全量同步权限

GRANT SELECT, SHOW DATABASES ON *.* TO '${user}' IDENTIFIED BY '${password}';
FLUSH PRIVILEGES;

增量同步权限

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '${user}' IDENTIFIED BY '${password}';
FLUSH PRIVILEGES;

binlog 配置要求

增量同步需要确保 MySQL 的 binlog 已正确配置:

  • server_id 非空
  • log_bin: 1 (已开启)
  • binlog_format: ROW
  • binlog_row_image: FULL

PostgreSQL 权限

对于 PostgreSQL 数据源,权限要求根据同步类型(全量同步或增量同步)有所不同:

全量同步权限

-- 授予对指定 schema 中所有表的 SELECT 权限
GRANT SELECT ON ALL TABLES IN SCHEMA ${schema1}[, ${other_schema}] TO ${user};
GRANT USAGE ON SCHEMA ${schema1}[, ${other_schema}] TO ${user};

增量同步权限

需要为现有用户授予 REPLICATION 权限:

-- 为现有用户授予 REPLICATION 权限
ALTER USER ${user} WITH REPLICATION;
 
-- 授予必要的权限
GRANT SELECT ON ALL TABLES IN SCHEMA ${schema1}[, ${other_schema}] TO ${user};
GRANT USAGE ON SCHEMA ${schema1}[, ${other_schema}] TO ${user};

逻辑复制配置要求

增量同步需要确保 PostgreSQL 的逻辑复制已正确配置:

  • wal_level = logical

Oracle 权限

对于 Oracle 数据源,需要授予以下权限以确保 Teleport 能够正常访问和同步数据:

-- 基本查询权限
GRANT SELECT ANY TABLE TO ${user};
GRANT SELECT ANY DICTIONARY TO ${user};
 
-- 增量同步额外权限
GRANT EXECUTE ON DBMS_LOGMNR TO ${user};
GRANT SELECT ON V_$LOGMNR_CONTENTS TO ${user};
GRANT SELECT ON V_$ARCHIVED_LOG TO ${user};
GRANT SELECT ON V_$LOG TO ${user};

Kafka 权限

对于 Kafka 数据源,需要确保 Teleport 具有以下权限以进行数据导入或导出:

  • 对指定主题的读取权限(输入源)
  • 对指定主题的写入权限(输出源)
  • 对 Kafka 集群元数据的访问权限

MongoDB 权限

对于 MongoDB 数据源,需要授予以下权限以确保 Teleport 能够正常访问和同步数据:

// 全量同步权限
{
  role: "read",
  db: "${database}",
  privileges: [],
  roles: []
}
 
// 增量同步权限
{
  role: "read",
  db: "${database}",
  privileges: [],
  roles: []
}
// 以及对 oplog 的读取权限

配置指南

配置 Teleport 连接数据源通常涉及以下步骤:

获取访问凭证

准备目标数据源的地址、端口、用户名、密码、数据库名(或 Topic 名、Project 名等)、以及必要的安全凭证(如 Access Key/Secret Key、SSL 证书等)。

安全建议

  • 使用专用的同步账户,避免使用管理员账户
  • 定期轮换访问凭证
  • 启用SSL/TLS加密传输

选择连接方式

直接连接

采用网络直接连接方式,需要确保防火墙提前将 Teleport 服务的 IP 地址加入白名单。

配置要点

  • 确保网络可达性
  • 配置适当的安全组规则
  • 测试网络连通性

Tunnel连接

通过提前创建好的 PrivateLink 链路,进行更加安全的数据传输。

配置要点

  • 配置VPC终端节点
  • 设置私有网络连接
  • 验证连接安全性

测试连接

保存配置后,首先进行连接测试,确保 Teleport 能够正常访问数据源。

测试步骤

  1. 点击"连接测试"按钮
  2. 等待测试结果
  3. 根据测试结果调整配置
  4. 重新测试直到连接成功

最佳实践

权限配置

  1. 最小权限原则:只授予同步所需的最小权限
  2. 专用账户:为数据同步创建专用账户
  3. 权限审计:定期审查账户权限配置

安全配置

  1. 网络隔离:使用私有网络连接避免公网传输
  2. 加密传输:启用SSL/TLS加密数据传输
  3. 访问控制:配置IP白名单限制访问

性能优化

  1. 连接池:合理配置连接池大小
  2. 批量处理:启用批量数据处理提高效率
  3. 并发控制:根据源系统性能调整并发度

监控告警

  1. 连接状态:监控数据源连接状态
  2. 性能指标:监控同步性能指标
  3. 异常告警:设置连接异常告警

通过合理选择和配置数据源,可以确保数据同步的稳定性、安全性和高效性,为业务提供可靠的数据支持。