MySQL如何生成唯一的server-id
如果没有设置在同一个集群中,server-id一旦重复,可能引发一些诡异问题。上面两种情况可以看到,在同一个replication set中,保持server-id的唯一性非常重要。然后某dba突发奇想把passive-master的server-id修改为400。当双master的复制启动后,那些之前在passive-master上执行的server-id为200的ddl变更,会从此陷入死循环。一天86400秒来计算,往后计算50年,最大的server-id也才使用到86400*365*50,完全在server-id范围内。例如ip为192.168.122.23,端口为3309,那么server-id可以写为122233309。在管理服务器上采用自增的id来统一分配server-id。这可以保证不冲突,但是需要维护中心节点。在每个replication set中为mysql库增加一个管理表,保证每个从库的server-id不冲突。
用户评论