首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL主复制延迟

MySQL主复制延迟
EN

Server Fault用户
提问于 2012-02-04 02:10:32
回答 3查看 1.3K关注 0票数 3

我使用具有以下选项的本地后端连接在同一个数据中心中配置了两个MySQL服务器(MySQL-1MySQL-2)在master-master复制中:

代码语言:javascript
运行
复制
innodb_flush_log_at_trx_commit=1
sync_binlog=1

我们使用负载均衡器在两个MySQL服务器之间平均地循环罗宾MySQL请求。这很好,但我担心复制滞后。例如,如果用户A将一行插入MySQL-1,则用户A从MySQL-2中选择数据,数据可能尚未成功复制。

基本上,我的问题是,应该有多少延迟(毫秒,秒)?他们的MySQL选项是用来防止/减少滞后的吗?

EN

回答 3

Server Fault用户

发布于 2012-02-04 08:04:27

这取决于服务器的性能,这与每个服务器必须处理多少查询、表有多大有关,等等。使用这种复制解决方案应该是同步的,这肯定会在事务期间造成一些延迟。这仅仅是因为每个事务都不应该被认为是完全提交的,除非在两个节点上都这样做。

我认为更安全的选择是根据客户端的源IP (如果支持/可能的话)平衡请求。在这种情况下,来自同一个客户端的所有请求都将被转发到同一个DB服务器。

票数 1
EN

Server Fault用户

发布于 2012-02-04 11:32:35

我在主->中遇到了这个问题--很多从设置。这比你的情况还要糟糕,因为读物是从奴隶那里得到的,而不是有50/50的机会。

每次用户写信到数据库(例如论坛帖子或单击“喜欢”按钮)时,他们都会得到一个HTTP重定向到应该显示他们的帖子的页面,但它从来没有这样做。重定向和后续请求的往返时间比复制滞后时间短。

观察SHOW SLAVE STATUS的滞后表明,它几乎总是在一秒之内。不过,偶尔也会比这更高。由于复制SQL是单线程的,10秒的慢速查询将导致复制延迟10秒。

我们的解决方案是修改我们所有的“刚发布的”页面,使其始终从主程序而不是从奴隶处读取。在您的情况下,确保每个web服务器都知道前面的请求是哪个数据库是很困难的。

更好的解决方案可能是将最近编写的数据放入memcached实例中。即使memcached数据有10秒的过期时间,这也足以弥补复制滞后。

票数 1
EN

Server Fault用户

发布于 2012-02-09 16:15:53

滞后取决于以下主要因素:

  1. 写操作(插入和更新)的数量
  2. 硬件(磁盘速度和cpu)
  3. 服务器负载(选择)

以前是不可能计算滞后的。我可以建议使用并发写e操作进行一些密集的(为您)测试。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/356774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档