数据同步系统需要解决的问题

数据同步的方式:

  1. 直连同步:通过ODBC/JDBC等接口直连数据库,对源系统性能影响较大。
  2. 数据文件同步:简单,实用,松耦合,可加密、可压缩。
  3. 数据库日志解析同步:比如oracle的ogg,对源系统影响小。

数据同步需要解决的问题:

  1. 支持异构库同步,例如 mysql -> oracle,oracle -> mysql,mysql -> mysql等
  2. 支持跨机房同步
  3. 支持文件同步,例如日志文件
  4. 支持限速、限流,避免每日大量的同步任务同时执行时,影响主要业务的访问
  5. 支持增量同步、全量同步
  6. 支持容错、降级机制,防止同步出错时,影响后续的任务
  7. 支持双向同步
  8. 支持大数据量同步,至少TB级别数据拉取
  9. 支持二次开发,毕竟每个同步工具都不能完全满足各自公司的业务场景,特殊需求时还是要能够二次开发
  10. 能够自带管理系统,或者能够支持在系统化管理
  11. 具备报警和监控功能

几个常用的同步工具

Apache Sqoop
优点:

  • 基于 MapReduce 实现,容易并行和利用现有集群的计算资源
  • 和 Hive 兼容性好,支持 Parquet,ORC 等格式
  • 支持自动迁移 Schema
  • 社区强大,遇到的问题容易解决

缺点

  • 支持的数据源不算太丰富(比如 ES),扩展难度大
  • 不支持限速,容易对 MySQL 造成压力

阿里DataX
优点:

  • 支持的数据源丰富尤其是支持从非关系型数据库到关系型数据库的同步
  • 支持限速
  • 扩展方便,插件开发难度低
    缺点
  • 需要额外的运行资源,当任务比较多的时候费机器
  • 没有原生支持导出到 Hive,需要做很多额外的工作才能满足需求
  • 考虑到同步本身要消耗不少的计算和带宽资源,Sqoop 可以更好的利用 Hadoop 集群的资源,而且和 Hive 适配的更好,最终选择了 Sqoop 作为数据同步的工具。
JouyPub wechat
欢迎订阅「K叔区块链」 - 专注于区块链技术学习