选择数据源
数据源选择的重要性
选择合适的数据源是数据同步成功的基础。正确的数据源选择能够:
- 确保数据完整性:选择支持所需数据格式和协议的数据源
- 优化同步性能:根据数据源特性选择合适的同步策略
- 降低集成复杂度:使用已支持的数据源减少开发工作量
- 保障数据质量:选择稳定可靠的数据源确保同步质量
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
: ROWbinlog_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 能够正常访问数据源。
测试步骤:
- 点击"连接测试"按钮
- 等待测试结果
- 根据测试结果调整配置
- 重新测试直到连接成功
最佳实践
权限配置
- 最小权限原则:只授予同步所需的最小权限
- 专用账户:为数据同步创建专用账户
- 权限审计:定期审查账户权限配置
安全配置
- 网络隔离:使用私有网络连接避免公网传输
- 加密传输:启用SSL/TLS加密数据传输
- 访问控制:配置IP白名单限制访问
性能优化
- 连接池:合理配置连接池大小
- 批量处理:启用批量数据处理提高效率
- 并发控制:根据源系统性能调整并发度
监控告警
- 连接状态:监控数据源连接状态
- 性能指标:监控同步性能指标
- 异常告警:设置连接异常告警
通过合理选择和配置数据源,可以确保数据同步的稳定性、安全性和高效性,为业务提供可靠的数据支持。