我在三个不同的数据中心部署了多个mysql服务器。现在我的数据库有几个具有自动增量id列的表。我希望所有三个数据中心的这些列必须具有跨数据中心的唯一ID。是否有可能在Mysql中或我需要以编程方式生成这些列?
例如,在数据中心D1中,表T1具有id 1,则数据中心D2和D3不得为表T1生成id 1。
答案 0 :(得分:1)
我们以前做过的事情以及hardik发布的link中您的情况的关键点是在每台服务器上为auto_increment_offset
设置不同的值,并将auto_increment_increment
设置为大于或等于服务器总数的值。
[Master]
server-id = 1
auto_increment_increment = 10
auto_increment_offset = 1
[Slave1]
server-id = 2
auto_increment_increment = 10
auto_increment_offset = 2
[Slave2]
server-id = 3
auto_increment_increment = 10
auto_increment_offset = 3
此方法有效,但为了将来证明,您需要将auto_increment_increment
设置为合理的值,以便将来可以添加额外的服务器。
答案 1 :(得分:0)
您可以使用复制读取this,您可以设置Master D1和SLAVE other。