mysql - 自增主键和复制

标签 mysql replication

最近我被告知要将 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/

相关文章:

mysql - 指定用户 : 3 columns or one location varchar column in mysql? 位置的更好方法是什么

mysql - 使用 phpmyadmin Cpanel 为 mysql 设置复制服务器

hadoop - 快速HDFS和Hive数据复制

mysql - 无法停止 percona xtradb 集群节点

mongodb - 在 MongoDb 中使用副本集的三个节点和 2 个已关闭

mysql - 产品过滤器 WHERE IN 子句的替代方法

mysql - 尝试更新现有记录 - 出现错误

php - 使用 PHP 格式化 MySQL 数据库中多列的结果

mysql - 将数据拆分为范围并显示计数

redis - Redis 用于复制的临时文件的位置?