最近我被告知要在我们所有的表中添加auto_increment主键,因为我们的数据库将被复制(master-master解决方案)。我们所有的表都有某种主键,但并非所有表都是自动增量的。
我查看了有关复制的mysql文档,但我没有发现任何迹象表明需要这个(auto_increment主键)。那么,我错过了什么吗?在复制数据库时,自动增加主键是否更好?
答案 0 :(得分:4)
自动增量主键绝对不是必需,但它们是处理整数主键和多键处理时将要处理的时髦娱乐的更直接和简单的方法之一 - 主要复制。您需要确保能够唯一标识每个主服务器上新插入的行。您不希望服务器A在服务器B插入第1行的同时插入第1行,就像它们将日志相互传输一样,当它们尝试插入彼此的行时,它们都会抱怨重复的键。
您需要了解auto_increment_increment和auto_increment_offset配置设置,这将使自动增量功能在多主机上正常运行。
此外,使用自然主键的表有时(但不总是)对于多主复制非常安全。这完全取决于插入物的频率和性质。
话虽这么说,除非你有一个经验丰富的MySQL DBA,否则多主人是最后的手段和坏主意。我从经验中说出这一点,因为我的雇主在生产中有一个三服务器多主复制循环。