我们正在运行一个运行应用程序写入的mysql服务器。为了进行一些批处理,我们编写了一个同步作业来将数据迁移到cassandra集群中。
1. A daily sync job which transfers by updated timestamp for that day.
2. A complete sync job which transfers complete data, overriding existing ones.
现在可能有一行从mysql中删除了,在这种情况下使用上面的方法它将永远存在于cassandra中。
为了解决这个问题,我们为每一行提供了15天的TTL。所以最终它会被删除,如果它没有删除,那么在下一次完全同步时,TTL将被重写。
就用例而言它的工作正常但问题是在完全同步时,完整的数据被覆盖并且sstable一直在生成,并且压缩始终发生,负载平均值随着缓慢和备份大小的增加而增加(本来可以避免的。)
基本上我们希望用新数据替换现有的表数据,但是我们不希望在开始作业之前截断,但只是在作业完成之后。
除了创建一个新表并在生成数据时丢弃过表之外,还有什么方法可以解决这个问题吗?
答案 0 :(得分:3)
您可以查看我在此处介绍的双重迁移策略:http://www.slideshare.net/doanduyhai/from-rdbms-to-cassandra-without-a-hitch
如果出现问题,它具有允许100%正常运行时间和可能的回滚的优点。缺点是发布期间所需的工作量和码