自增主键和复制

3

最近我被告知要在所有表中添加自增主键,因为我们的数据库将被复制(主-主解决方案)。我们所有的表都有某种类型的主键,但并非所有表都是自增的。

我查看了mysql关于复制的文档,没有找到任何要求必须使用自增主键的迹象。那么,我错过了什么吗?当数据库被复制时,使用自增主键更好吗?

1个回答

4
自增主键绝对不是必需的,但它们是处理整数主键和多主复制时出现的问题的一种较为简单明了的方法之一。您需要确保每个主机上新插入的行能够被唯一识别。当服务器A在服务器B插入第1行时,您不希望它们同时插入第1行,因为它们在彼此传输日志时,将在尝试插入对方的行时都会报告重复键的问题。
您需要阅读有关auto_increment_increment和auto_increment_offset配置设置的内容,这将使自增工作与多主机系统保持良好的状态。
此外,使用自然主键的表有时(但并非总是)完全适用于多主复制。这完全取决于插入的频率和性质。
话虽如此,多主复制是一个最后的手段和一个糟糕的想法,除非您拥有一位经验丰富的MySQL DBA。我从我的经验中得出这个结论,因为我的雇主在生产中使用了一个三台服务器的多主循环复制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接