我有两个数据中心,每个数据中心都配置为单领导者,多追随者节点配置。因此,有两个领导者,每个数据中心一个。它们都可以接受写请求。在一个数据中心的leader节点上发生的写入以异步方式复制到其他数据中心的leader节点上。
现在,假设我有一个Oracle表transaction_logs,其中tran_id作为主键。我不能将此tran_id保持为自动递增,因为如果每个数据中心的leader节点同时收到写请求,则两个不同的写请求将使用相同的主键值,并且在从一个数据中心的leader到另一个数据中心的数据复制过程中,会因重复的主键而发生写冲突。
那么,在这种情况下,我们应该如何设计主键呢?要求是应用程序或系统应生成主键值,数据类型应为最佳,因为将在主键上创建索引。
1条答案
按热度按时间d7v8vwbk1#
试试这个:
可以指示Shareplex/GoldenGate等逻辑复制工具在检测到冲突时使用更高的时间戳值来解决冲突。
这样,您甚至可以处理多写入器架构。