AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 80602
Accepted
Mike Purcell
Mike Purcell
Asked: 2014-10-20 14:42:08 +0800 CST2014-10-20 14:42:08 +0800 CST 2014-10-20 14:42:08 +0800 CST

HA - MySQL Master Master 复制 - 重复条目错误

  • 772

我在两个 master 上运行 Percona MySQL 5.5.39,keepalived 监控一个 VIP,如果主 master 变暗,它将故障转移到备用 master。在实验室中测试我的设置的容错性时,我注意到我在两个主机上都得到了重复的密钥条目。

基本上我运行 siege 来模拟用户负载,持续 5 分钟,在这段时间内我关闭了主主机,在大约 10 秒后让 keepalived 检测到中断,VIP 切换到备用主机,此时一切正在按预期工作。然后大约一分钟后,当 siege 仍在运行时,我打开主 master 电源,当它在线时,它假定为 VIP。

我认为在交换 VIP 期间会出现重复条目​​问题。我按照这篇文章解释了如何实现“崩溃恢复”复制,但是在实现了建议的 my.cnf 更改并重新运行用户模拟之后,我最终得到了同样的损坏复制。

备用主机还可以将其索引增加 2 而不是 1,以避免与主主机发生冲突,但我觉得这更像是一种破解而不是解决方案。

有没有更好的方法来避免 HA 环境中的主键冲突?

mysql high-availability
  • 3 3 个回答
  • 1617 Views

3 个回答

  • Voted
  1. Best Answer
    Jehad Keriaki
    2014-10-20T16:49:39+08:002014-10-20T16:49:39+08:00

    这不是黑客攻击。这是他们的意图:使用auto_increment_increment和auto_increment_offset

    http://dev.mysql.com/doc/refman/5.6/en/replication-options-master.html#sysvar_auto_increment_increment

    • 4
  2. jynus
    2014-10-21T07:21:41+08:002014-10-21T07:21:41+08:00

    您的架构不适合异步复制。我强烈建议不要在全自动系统中运行 Master-Master 标准复制,因为您将遇到您所描述的问题。

    虽然您可能不会同时写入两台服务器,但您以非同步方式复制的事实意味着您必须考虑诸如发送到从属服务器的待处理写入或应用到它的待处理写入等问题本地。在这种情况下,自动故障转移并不容易或微不足道,更不用说切换回了。

    有些事情可以帮助您做到这一点:

    • 用于控制它的 Binlog 同步和 InnoDB 表等配置可以提供帮助,但不能解决所有复制问题
    • GTID 复制防止信息被写入两次,并自动解析二进制日志坐标定位
    • Galera 集群(和半同步复制,取决于它的使用方式)消除了异步问题(并且还实现了自己的 GTID)
    • 像MHA这样的工具允许更优雅的故障转移,提供一组崩溃检查和程序,特别是在超过 2 个节点上。它会自动为您更改复制方向。
    • 我更喜欢负载平衡工具而不是 VIP,以实现正确的同步客户端防护(但这只是我)
    • 如果您使用非事务性引擎,请忘记尝试始终如一地做任何事情。请记住,可能会以 MyISAM 格式创建临时表,即使您使用 InnoDB,这仍然是一个问题。

    这auto_increment_increment可以解决节点之间的插入冲突,但不能解决不同节点之间的更新或由于二进制日志不匹配而在同一节点中两次插入相同查询。

    没有正确的答案,但错误的答案很多。我赞扬您的方法(即使最终产品不正确):测试,测试和测试,如果您想要符合您要求的东西。

    • 2
  3. Gea-Suan Lin
    2014-12-02T15:30:59+08:002014-12-02T15:30:59+08:00

    如果您觉得这是一个 hack,请尝试 PXC(Percona XtraDB Cluster)。

    PXC 使用 Galera Cluster(由 Codership 提供),它是与 InnoDB 的同步复制。

    • 0

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve