最近我被告知要将 auto_increment 主键添加到我们所有的表中,因为我们的数据库将被复制(主-主解决方案)。我们所有的表都有某种主键,但并非所有表都是自动递增的。
我查看了有关复制的 mysql 文档,但没有发现任何迹象表明需要此(auto_increment 主键)。那么,我错过了什么吗?当要复制数据库时,使用自动递增的主键是否更好?
最佳答案
自增主键绝对不是必需的,但在处理整数主键和多键时,它们是处理您即将拥有的时髦娱乐的更直接和简单的方法之一-主复制。您需要确保能够唯一标识每个母版上新插入的行。您不希望服务器 A 在服务器 B 插入第 1 行的同时插入第 1 行,因为当它们相互传输日志时,它们在尝试插入彼此的行时都会提示重复键。
您需要仔细阅读 auto_increment_increment 和 auto_increment_offset 配置设置,这将使自动增量与多主服务器一起正常工作。
此外,使用自然主键的表有时(但不总是)对于多主复制是完全安全的。这完全取决于插入的频率和性质。
话虽这么说,除非您的员工中有经验丰富的 MySQL DBA,否则多主机是最后的手段,也是一个坏主意。我是根据经验说的,因为我的雇主在生产中有一个三服务器多主复制循环。
关于mysql - 自增主键和复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1472839/