当你在 master master 复制中使用 int primary id 时会发生什么?
What happens when you use int primary id's in master master replication?
案例:有多张表都有一个主自增id。
这个主 id/key 是多个表中相互关联的外键。
当没有复制或只有主从复制时,这很有效。
但是当你想要一个主-主复制时会发生什么?
插入新记录时,由于偏移量,它不会获得例如 ID 1,而是 master 1 上的 1,master 2 上的 2。
如果是这种情况,那么如何在主控上执行关系 tables/data(如 MySQL 的目的),为什么需要偏移量? master - master应该(在我看来)是彼此的镜子
如果客户 ID 为 2 而我从 master 1 查询,我会得到错误的数据,因为在 master 1 中客户 id 是 1?!
对我来说唯一合乎逻辑的解决方案是创建一个额外的列,例如“customer_id”。
如果您需要更新某些东西,您需要知道 where 子句中 master 1 中的 ID 和 master 2 中的另一个 ID。
谁能解释一下这是如何工作的。
我认为您缺少的是复制插入不使用自动递增,它具有原始插入发生的主服务器的 ID。
请注意,您提出的 customer_id 也会有同样的问题。
案例:有多张表都有一个主自增id。 这个主 id/key 是多个表中相互关联的外键。 当没有复制或只有主从复制时,这很有效。
但是当你想要一个主-主复制时会发生什么? 插入新记录时,由于偏移量,它不会获得例如 ID 1,而是 master 1 上的 1,master 2 上的 2。
如果是这种情况,那么如何在主控上执行关系 tables/data(如 MySQL 的目的),为什么需要偏移量? master - master应该(在我看来)是彼此的镜子
如果客户 ID 为 2 而我从 master 1 查询,我会得到错误的数据,因为在 master 1 中客户 id 是 1?!
对我来说唯一合乎逻辑的解决方案是创建一个额外的列,例如“customer_id”。 如果您需要更新某些东西,您需要知道 where 子句中 master 1 中的 ID 和 master 2 中的另一个 ID。
谁能解释一下这是如何工作的。
我认为您缺少的是复制插入不使用自动递增,它具有原始插入发生的主服务器的 ID。
请注意,您提出的 customer_id 也会有同样的问题。