【问题标题】:efficient method to sync up two tables in different servers with java使用java同步不同服务器中的两个表的有效方法
【发布时间】:2011-08-27 01:14:22
【问题描述】:

我们有一个从各种外部系统更新的源表。我要求目标表(在不同的服务器中)与此源表同步。目标表不是源表的精确副本,在将数据插入/更新到目标表之前必须进行一些数据处理。

我想到了以下逻辑

我们每 15 分钟运行一次这个 java 消费者代码,它会获取创建时间戳的记录,而不是之前更新的记录,并存储在 CachedRowSet 中。并调用以CachedRowSet为参数的存储过程,完成数据处理并将数据插入/更新到目标表中。

您是否认为上述方法是一种有效的方法,因为我们每次更新都会处理超过一百万条记录?

当源表中的一条记录被删除时,上述方法也不会被复制!你能建议在这种情况下该怎么做

【问题讨论】:

  • 当你根据时间戳进行同步时,你应该确保两台服务器也从同一个(NTP)服务器同步它们的时钟......不过我宁愿设置一个主从,复制远程位置上的数据,根据需要进行处理(存储很便宜,您可以将所有同步问题留给数据库本身),然后将处理后的数据存储在单独的表中。

标签: java sql database optimization jdbc


【解决方案1】:

类似于数据库用于保存点和回滚的技术。 每当源表中有一些变化时,例如增删改查。根据目标表所需的格式保留更改脚本。您可以定期将这些更改推送到目标服务器。由于您的源表由各种外部系统更新,因此您需要在源表上设置触发器以保存脚本日志。

【讨论】:

    【解决方案2】:

    您可能想从 Maatkit 工具中查看 mk-table-sync:

    http://www.maatkit.org/doc/mk-table-sync.html

    您需要小心处理您的餐桌差异。

    【讨论】:

    • mk-table-sync 是一个 Perl 实现。从问题用户寻找基于 JAVA 的解决方案。
    • Java 可以调用命令行脚本。选择使用开源工具,还是从头开始重写,我想我想了解该工具。这比看起来要正确。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多