首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL/MariaDB从最大损耗的从站读取首选项

MySQL/MariaDB从最大损耗的从站读取首选项
EN

Stack Overflow用户
提问于 2018-07-06 14:58:46
回答 3查看 455关注 0票数 0

我使用Mysql/MariaDB和Innodb存储引擎版本10.x。

我想设置一个具有主从配置的集群。可以选择使用--无害只读或只读-只读从从中读取数据。

但是,除了上面的内容外,客户端还需要从从服务器读取数据当且仅当最大从延迟小于x秒。

由于网络拥塞、磁盘吞吐量低、运行时间长等原因,从服务器可能会落后于主服务器。具有最大允许延迟选项的读取首选项应该允许应用程序为从中读取的数据指定最大复制延迟或“延迟”。当第二次用户的估计损耗超过时,客户端将停止使用它进行从从中读取操作,并开始从主读取。

我想知道MySql/InnoDB中是否有选项?

EN

回答 3

Stack Overflow用户

发布于 2018-07-06 15:58:13

没有自动选项可以将查询切换到主服务器。这是由应用程序逻辑处理的。

您可以运行查询SHOW SLAVE STATUS,返回的字段之一是Seconds_Behind_Master。您必须编写应用程序代码来检查这一点,如果滞后大于阈值,则查询主程序。

您可能会发现某种类型的代理可以为您执行此逻辑。请参阅https://mydbops.wordpress.com/2018/02/19/proxysql-series-mysql-replication-read-write-split-up/

它并不总是最好的选择,处理一个副本X秒的滞后,作为不可用的。有些查询是完全没有问题的,不管延迟如何。几年前,我写了一篇关于这个问题的演示文稿,其中包括一些示例查询。用MySQL和PHP进行读/写拆分 (Percona webinar,2013年)

票数 1
EN

Stack Overflow用户

发布于 2018-07-07 14:39:39

  • 有许多代理产品可能有这样的代码。
  • 如果您自动切换到Master,那么它可能会不堪重负,从而导致更糟的系统问题。
  • 如果你试图切换到另一个奴隶,这是太容易进入拍打的情况。
  • Galera有一种处理“批判性阅读”的方法,如果您想要使用集群设置,而不是主+奴隶。
  • 如果问题的一部分是主从之间的距离,如果您切换到主,客户端在哪里?如果它在奴隶附近,那么到达主人的额外时间不是会抵消一些好处吗?
  • 避免长期运行的查询,增强奴隶以避免缓慢的磁盘,加快访问磁盘的速度,研究网络改进。

总之,我不喜欢尝试将查询转移到Master;我将致力于处理根本的问题。

票数 0
EN

Stack Overflow用户

发布于 2019-12-13 12:33:08

MariaDB MaxScale有多种处理复制滞后的方法。

最简单的方法是限制最大允许的复制滞后与max_slave_replication_lag参数。这就像你描述的那样:如果一个奴隶比主人落后太多秒,那么其他奴隶,作为最后的手段,主人就会被使用。这是MaxScale中最常见的处理复制滞后的方法。

另一种选择是使用causal_reads特性,它利用了MASTER_GTID_WAIT和MariaDB 10.2及更新版本中的其他功能。这允许读取一致性,而不需要在主服务器上添加额外的负载。这是以延迟为代价的:如果服务器落后几秒钟,读取可能会花费更长的时间。当数据一致性非常重要但请求延迟不那么重要时,使用此选项。

第三种选择是在发生写操作后使用CCRFilter强制对主服务器进行读取。与causal_reads相比,这是一种更简单的方法,但它提供数据一致性的代价是增加了主服务器上的负载。

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

https://stackoverflow.com/questions/51213099

复制
相关文章

相似问题

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