【问题标题】:Setting up multi master MySQL cluster on different AWS regions在不同的 AWS 区域设置多主 MySQL 集群
【发布时间】:2020-05-29 23:03:10
【问题描述】:

我有一个已经拥有数千名用户的聊天应用程序。服务器位于美国(俄勒冈)。用户分布在全球各地。我已经开始面临与印度用户的服务器响应缓慢有关的问题。我也想在印度建立同样的基础设施。主要问题是 MySQL 复制。在印度创建了一个新的 MySQL 主服务器,但主主复制正在产生问题,因为数据库包含具有自动增量 ID 作为主键的表。据我了解,正在遵循以下流程

假设现在自动增量 ID 为 1000,时间为 XXXXXXX000 毫秒,俄勒冈州和孟买地区之间的延迟为 200 毫秒

  1. 在 XXXXXXX000 毫秒,Server1(US) 在 xyz 表中添加新行,现在自增 id 为 1001。
  2. 在XXXXXXX000毫秒的同时,Server2(Ind)在xyz表中增加了一个新行,现在同一张表的自增id为1001。
  3. 200 毫秒后,在 Server1(US) 上执行的查询被复制到 Server2(Ind),它的自动增量 ID 为 1001,但由于表已经具有该值而无法执行。
  4. 同样,在 Server2(Ind) 上执行的查询被复制到 Server1(US),它的自动增量 ID 为 1001,但由于表已经具有该值而无法执行。

我发现的解决方案之一是在定义 http://www.clusterdb.com/mysql-cluster/setting-up-mysql-asynchronous-replication-for-high-availability 的两个主机上设置 auto_increment_increment 和 auto_increment_offset 值。 我能够复制它,但我不确定这是否是在 AWS EC2 上进行生产设置的正确方法。任何建议将不胜感激。

【问题讨论】:

  • auto_increment_{increment|offset} 解决了多主机问题之一。
  • 印度内部的延迟可以改善,但美国和印度之间的延迟无法改善——无法超过光速。

标签: mysql database amazon-web-services database-design high-availability


【解决方案1】:

您在 [http://www.clusterdb.com/mysql-cluster/setting-up-mysql-asynchronous-replication-for-high-availability][1] 上找到的解决方案是在生产服务器上使用的正确方法。

服务器 1:

auto_increment_increment=1

auto_increment_offset=1

服务器 2:

auto_increment_increment=1

auto_increment_offset=2

【讨论】:

  • 错了! auto_increment_increment 需要在两台服务器上为 2
猜你喜欢
  • 2015-05-06
  • 2020-06-15
  • 1970-01-01
  • 2016-11-24
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
相关资源
最近更新 更多