MySQL深入浅出负载均衡

负载均衡的基本思路很简单:在一个服务器集群中尽可能地的平均负载量。基于这个思路,我们通常的做法是在服务器前端设置一个负载均衡器。负载均衡器的作用是将请求的连接路由到最空闲的可用服务器上。

如图 1,显示了一个大型网站负载均衡设置。其中一个负责 HTTP 流量,另一个用于 MySQL 访问。

图 1 典型的读密集型网站负载均衡架构

负载均衡有五个常见目的:

可扩展性。负载均衡对某些扩展很有帮助,比如读写分离时从备库读数据。高效性。负载均衡因为能够控制请求被路由到何处,因此有助于更有效的使用资源。可用性。灵活的负载均衡方案能够大幅提高服务的可用性。透明性。客户端无需知道是否存在负载均衡器,也不需要关系在负载均衡器的背后有多少机器。呈现给客户端看到的就是一个透明的服务器。一致性。如果应用是有状态的(数据库事务、网站会话等),那么负载均衡器就可以将相关的查询指向同一个服务器,以防止状态丢失。

而对于负载均衡的实现,一般有两种方式:直接连接引入中间件

相关教程:mysql视频教程

1 直接连接

有些人认为负载均衡就是配置在应用和 MySQL 服务器直接东西,但实际上这并不是唯一的负载均衡方法。接下来我们就讨论一下常见的应用直连的方法,及其相关注意事项。

1.1 复制的读写分离

此种方式下,容易出现一个最大的问题:脏数据。一个典型的例子是,当用户评论了一篇博文,然后重新加载页面,却没有看到新增的评论。

当然,我们也不能因为脏数据的问题,就将读写分离弃之不用。实际上,对于很多应用,可能对脏数据的容忍度比较高,此时就可以大胆的引入此种方式。

那么对于脏数据的容忍度比较低的应用,如何进行读写分离呢?接下来,我们对读写分离再进一步区分,相信你总能找到适合自己的一款策略。

1) 基于查询分离

如果应用只有少数数据不能容忍脏数据,我们可以将所有不能容忍脏数据的读和写都分配到 master 上。其它的读查询分配的 slave 上。该策略很容易实现,但如果容忍脏数据的查询比较少,很可能会出现不能有效使用备库的情况。

2) 基于脏数据分离

这是对基于查询分离策略的小改进。需要做一些额外的工作,比如让应用检查复制延迟,以确定备库数据是否最新。许多报表类应用都可以使用这个策略:只需要晚上加载的数据复制到备库接口,并不关心是不是完全跟上了主库。

3) 基于会话分离

这个策略比脏数据分离策略更深入 一些。它是判断用户是否修改了数据,用户不需要看到其他用户的最新数据,只需要看到自己的更新。

具体可以在会话层设置一个标记位,表明用户是否做了更新,用户一旦做了更新,就将该用户的查询在一段时间内指向主库。

这种策略在简单和有效性之间做了很好的妥协,是一种较为推荐的策略。

当然,如果你的想法够多,可以把基于会话的分离策略和复制延迟监控策略结合起来。如果用户在 10 秒前更新了数据,而所有备库延迟在 5 秒内,就可以大胆的从备库中读取数据。要注意的是,记得为整个会话选择同个备库,否则一旦多个备库的延迟不一致,就会给用户造成困扰。

4) 基于全局版本 / 会话分离

通过记录主库日志坐标和备库已复制的坐标对比,确认备库是否更新数据。当应用指向写操作时,在提交事务后,执行一次 SHOW MASTER STATUS 操作,然后将主库日志坐标存储在缓存中,作为被修改对象或者会话的版本号。当应用连接到备库时,执行 SHOW SLAVE STATUS,并将备库上的坐标和缓存中的版本号对比。如果备库比主库记录点更新,就表明备库已更新对应数据,可放心的使用。

实际上,很多读写分离策略都需要监控复制延迟来决定读查询的分配。不过要注意的是,SHOW SLAVE STATUS 得到的 Seconds_behind_master 列的值并不能精确的表示延迟。我们可以使用 Percona Toolkit 中的 pt-heartbeat 工具更好的监控延迟。

Pic Copilot Pic Copilot

AI时代的顶级电商设计师,轻松打造爆款产品图片

Pic Copilot 158 查看详情 Pic Copilot

1.2 修改 DNS 名

对于一些比较简单的应用,可以为不同目的创建 DNS。最简单的方法是只读服务器拥有一个 DNS 名(read.mysql-db.com),给负责写操作的服务器起另外一个 DNS 名(write.mysql-db.com)。如果备库能够跟得上主库,就把只读 DNS 名指向到备库,否则,就指向到主库。

这种策略非常容易实现,但有个很大的问题是:无法完全控制 DNS。

修改 DNS 并不是立刻生效的,也不是原子性的。将 DNS 的变化传递到整个网络或者网络间传播都需要比较长的时间。DNS 数据会在各个地方缓存下,它的过期时间是建议性质,而非强制的。可能需要应用或服务器重启才能使修改后的 DNS 完全生效。

这种策略较为危险,即使可以通过修改 /etc/hosts 文件来避免 DNS 无法完全控制的问题,但仍不失理想策略。

1.3 转移 IP 地址

通过在服务器间转移虚拟地址,来实现负载均衡。是不是感觉和修改 DNS 很像?但实际上完全是两码事。转移 IP 地址允许 DNS 名保持不变,我们可以通过 ARP 命令(不了解 ARP,看这里)强制使 IP 地址的更改快速而且原子性的通知到局域网络上。

一个比较方便的技术是为每个物理服务器分配一个固定的 IP 地址。该 IP 地址固定在服务器上,不再改变。然后可以为每个逻辑上的 “服务”(可以理解为容器)使用一个虚拟 IP 地址。

这样,IP 就能够很方便的在服务器间转移,无需重新配置应用,实现也更加容易。

2 引入中间件

上面的策略都是假定应用是和 MySQL 服务器之间连接的,但是许多负载均衡都会引入一个中间件,作为网络通信的代理。它一边接受所有的通信,另一边将这些请求分发的指定服务器上,并将执行结果发送回请求机器。图 2 展示了此种架构。
图 1:作为中间件的负载均衡器

2.1 负载均衡器

现在有许多负载均衡硬件和软件,但很少有专门为 MySQL 服务器设计的。Web 服务器通常更需要负载均衡,因此许多多用途的负载均衡设备都会支持 HTTP,而对其他用途则只有一些很少的基本特性。

MySQL 连接只是正常的 TCP/IP 连接,所以可以在 MySQL 上使用多用途负载均衡器。但由于缺少 MySQL 专有的特性,因此会多一些限制:

分发请求是可能无法做到很好的负载均衡。对 MySQL 会话支持不足,可能不知道如何把所有从单个 HTTP 会话发送的连接请求 “固定” 到一个 MySQL 服务器上。连接池和长连接可能会阻碍负载均衡器分发连接请求。不能很好的对 MySQL 服务器做健康和负载检查。

2.2 负载均衡算法

有很多算法用来决定哪个服务器接受下一个连接。每个厂商都有各自不同的算法,有以下常用方法:

随机分配。从可用的服务器池中随机选择一个服务器来处理请求。轮询。以循环顺序发送请求到服务器,例如:A、B、C、A、B、C。哈希。通过连接的源 IP 地址进行哈希,将其映射到池中的同一个服务器上。最快响应。将连接分配给能够最快处理请求的服务器上。最少连接数。将连接分配给拥有最少活跃连接的服务器上。权重。根据机器的性能等条件,给不同机器配置不同的权重,以便让高性能的机器能处理更多的连接。

上述各种方法没有最好,只有最适合的,这取决于具体的工作负载。

另外,我们只描述了即时处理的算法。但有时候使用排队算法可能会更有效。例如,一个算法可能只维护给定的数据库服务器并发数量,同一时刻只允许不超过 N 个活跃事务。如果有太多的活跃事务,就将新的请求放到一个队列里,然后让可用服务器列表来处理。

2.3 一主多备间的负载均衡

最常见的复制结构就是一个主库加多个备库。这种架构的扩展性较差,但我们可以通过一些方法结合负载均衡来获得更好的效果。

功能分区。对于厂家的功能包括报表、分析、数据仓库以及全文索引,配置一个或一组备库来扩展单个功能的容量。保证备库跟上主库。备库存在的问题就是脏数据。对于此,我们可以使用函数 MASTER_POS_WAIT() 阻塞主库的操作,直到备库赶上了设置的主库同步点。另外,我们还可以使用复制心跳来检查延迟情况。

我们不能也不应该在应用的开始就就想着把架构做成阿里那样的架构。最好的方式是实现应用当前所明确需要的,并为可能的快速增长做好预先规划

另外,为可扩展性制定一个数字目标是很有意义的,就像我们为性能制定了一个精确目标,满足 10K 或 100K 并发一样。这样可以通过相关理论避免诸如序列化或交互操作的开销问题带入到我们的应用中。

在 MySQL 扩展策略方面,典型的的应用在增长到非常庞大时,通常先从单个服务器转移到向外扩展的拥有备库的架构,再到数据分片或按功能分区。这里要注意的是,我们不提倡诸如 “尽早分片,尽量分片” 的建议。实际上,分片很复杂,而且成本很高,最主要的是很多应用可能根本不需要。与其花大成本去分片,还不如先去看看新的硬件和新版本的 MySQL 有哪些变化,也许这些新变化会给你带来惊喜。

总结

直接连接重 “分离”,均衡器和算法有局限。

为扩展性量化指标。

最后,希望本文对你有所帮助。

以上就是MySQL深入浅出负载均衡的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1038235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 04:15:21
下一篇 2025年12月2日 04:15:42

相关推荐

  • 排名前十的币圈交易所是哪些 2025币圈十大货币交易所app排名

    排名前十的币圈交易所:1. Binance,2. OKX,3. Huobi,4. Coinbase,5. Kraken,6. Bitfinex,7. KuCoin,8. Bittrex,9. Gemini,10. Poloniex,这些平台因其高流动性、低费用、安全性和多样化服务而备受推崇。 排名前…

    2025年12月8日 好文分享
    000
  • 排名前十的币圈交易平台是什么? 盘点2025币圈十大主流交易所

    排名前十的币圈%ignore_a_2%是:1. Binance,2. OKX,3. Huobi,4. Coinbase,5. Kraken,6. Bitfinex,7. KuCoin,8. Bittrex,9. Gemini,10. Poloniex,这些平台因其高流动性、低费用、安全性、多样化服务…

    2025年12月8日 好文分享
    000
  • bitget交易所官网入口 bitget交易所怎么下载

    Bitget交易所官网入口为www.bitget.com,用户可通过浏览器访问。下载Bitget应用步骤如下:1. iOS用户在App Store搜索并下载;2. Android用户在Google Play Store搜索并下载。下载后登录或注册即可开始交易。 Bitget交易所作为全球领先的加密货…

    2025年12月8日
    000
  • 2025最受信赖币圈交易所前十大名单出炉

    2025年,币圈交易所的竞争异常激烈,但经过一系列的评估和用户反馈,以下十大交易所脱颖而出,成为最受信赖的平台。让我们逐一了解这些交易所的特点和优势。 1. Binance   核心优势:作为全球交易量之王,Binance 2025年日均交易量突破500亿美元,市场份额超40.7%,支持1800+交…

    2025年12月8日 好文分享
    000
  • 数字货币交易所全球前十名排行榜 2025十大数字货币交易所最新排名

    2025年全球前十名数字货币交易所分别是:1. Binance,2. OKX,3. Huobi,4. Coinbase,5. Kraken,6. Bitfinex,7. KuCoin,8. Bittrex,9. Gemini,10. Bitstamp,这些交易所凭借其在交易量、用户数量、安全性和创新…

    2025年12月8日 好文分享
    000
  • 国际加密货币交易所2025最新排名前十平台全解析

    2025年%ignore_a_1%竞争聚焦合规化、衍生品创新及生态扩展,Binance、Coinbase、Kraken在安全与规模领先,OKX、Huobi、KuCoin则以区域市场和散户服务突围。用户需根据交易类型(现货/合约)、风险偏好和地域合规性选择平台。 1. 币安(Binance) 核心地位…

    2025年12月8日 好文分享
    000
  • 数字货币交易所币圈排行榜TOP10 币圈十大数字货币交易所最新榜单

    币圈排行榜TOP10的数字货币交易所:1. Binance,2. OKX,3. Huobi,4. Coinbase,5. Kraken,6. Bitfinex,7. Bittrex,8. KuCoin,9. Gemini,10. Bitstamp。这些交易所在用户体验、安全性和流动性方面表现出色,使…

    2025年12月8日 好文分享
    000
  • 数字货币交易所最新排名:2025年十大正规交易平台权威榜单

    2025年,经过广泛的市场调研和用户反馈,我们为您带来最新的十大正规交易平台权威榜单。此榜单不仅考虑了交易量的庞大性、用户体验的友好性,还包括了平台的安全性和监管合规性。 2025年十大正规交易平台权威榜单 1. Binance    庞大的交易量,确保流动性充足丰富的交易对,覆盖几乎所有主流币种强…

    2025年12月8日 好文分享
    000
  • 2025年安全正规的十大数字货币交易平台汇总

    2025年,市场上涌现了众多交易平台,但以下十大数字货币交易平台因其卓越的安全性、用户体验和广泛的市场覆盖而脱颖而出。排名第一的binance以其强大的交易量和丰富的交易对闻名,第二名的okx则以其创新的交易工具和高效的客户服务著称,第三名的火币则凭借其悠久的历史和稳定的表现赢得了用户的信赖。接下来…

    2025年12月8日 好文分享
    000
  • 速读瑞士加密银行Amina 2024年收入达4000万美元,加密资产管理规模翻倍

    瑞士加密银行amina银行(前身为seba银行)公布了2024年的创纪录财务业绩,收入同比增长69%,达到4040万美元。 根据5月28日的新闻发布,该银行的资产管理规模(AUM)增长了136%,达到42亿美元,这主要得益于机构需求和战略扩张的推动。 这家总部位于苏黎世的银行将增长归功于其跨司法管辖…

    2025年12月8日
    000
  • 最新国际数字货币交易平台TOP10排名揭晓

    随着数字货币市场的迅猛发展,国际数字货币交易平台的竞争日益激烈。为了帮助投资者更好地了解市场现状,我们在此揭晓最新的国际数字货币交易平台TOP10排名。以下是根据交易量、用户数量、安全性和用户体验等多方面因素评选出的前十名交易平台。 1.Binance   Binance成立于2017年,是当前全球…

    2025年12月8日 好文分享
    000
  • 比特币(BTC)市值在-0.31%下降后达到343.7万美元

    当日跌幅达-0.31%之后,当前加密货币的总市值约为3.43吨。同时,加密货币的整体交易量也出现了-0.31%的下滑。 在经历-0.31%的下跌后,加密货币总市值现为3.43吨。在同一时间段内,加密货币交易量同样减少了-0.31%。 在排名前200的加密货币中,表现最优的资产在过去24小时内实现了2…

    2025年12月8日
    000
  • 安币交易所怎么安全下载 安币交易所安全入口

    安币交易所安全下载和访问的步骤包括:1.访问官方网站下载客户端;2.验证文件完整性;3.书签官方网站并使用HTTPS访问;4.启用双重认证并使用强密码进行安全交易。 安币交易所安全下载指南 安币交易所是许多加密货币投资者选择的平台之一。为了确保在使用该交易所时能够安全地进行下载和访问,我们将详细介绍…

    2025年12月8日
    000
  • 十大币圈交易所排行最新 2025币圈十大热门交易所盘点

    2025年币圈十大热门交易所分别是:1. Binance,2. OKX,3. Huobi,4. Coinbase,5. Kraken,6. Bybit,7. Bitfinex,8. KuCoin,9. Bittrex,10. Gemini,这些交易所各具特色,提供多种加密货币交易和金融服务,均采用高…

    2025年12月8日 好文分享
    000
  • 2025年度数字资产交易所综合实力排行榜前十汇总

    在2025年,数字资产交易所的竞争愈发激烈,市场上涌现出许多实力强劲的平台。以下是对2025年度综合实力排行榜前十的数字资产交易所的详细汇总,涵盖了每个交易所的关键特点、服务、安全性以及用户体验。 1. Binance(币安)  核心优势:流动性全球第一,日交易量超千亿美元,覆盖600+币种,新币首…

    2025年12月8日 好文分享
    000
  • 火币网页版入口 火币网页版正确地址入口

    火币网页版入口是www.htx.com。用户可通过浏览器访问该网址,无需下载软件,支持多设备访问,界面简洁,功能丰富,提供多重安全措施,客服支持24/7在线。 火币网页版入口是许多用户在进入火币交易平台时最关心的问题之一。火币,作为全球知名的加密货币交易所,提供了多种入口方式来满足不同用户的需求。火…

    2025年12月8日
    000
  • 什么是比特币现金?2025年价格能达到500美元吗?

    比特币现金 (bch) 作为比特币的一个分叉,凭借更快的交易速度和更低的手续费赢得了声誉。多年来,它作为一种日常使用的数字货币获得了关注。尽管其价格经历了显著波动,但对可扩展区块链解决方案需求的增长让许多人开始质疑 bch 是否有可能达到 10,000 美元这一里程碑。 为了探讨这种可能性,理解推动…

    2025年12月8日
    000
  • Bitget现货网格交易常见陷阱及规避方法

    目录 错误 1:将网格机器人视为被动收入机器错误 2:使用过多网格,却不了解其利弊错误 3:在趋势市场中运行机器人而不进行调整错误 4:误用或忽略高级设置错误 5:网格类型与市场环境不一致错误 6:发布后未能监控和调整最后的想法:对自动化的认识关于 Bitget 现货网格交易的常见问题解答Q1:什么…

    2025年12月8日
    000
  • 加密货币怎么赚钱?虚拟货币赚钱的10种方法大揭秘

    加密货币作为一种新兴的金融工具,已经成为了许多投资者和交易者的关注焦点。那么,加密货币怎么赚钱?本文将详细介绍虚拟货币赚钱的10种方法,帮助你更好地理解和利用这一新兴市场。 买入并持有(HODL) 买入并持有是许多加密货币投资者的首选策略。简单来说,就是在价格较低时购买加密货币,然后长期持有,等待价…

    2025年12月8日 好文分享
    000
  • 2025全球加密货币交易所最新权威榜单发布TOP10

    2025年,全球%ignore_a_2%所的竞争愈发激烈,各大交易所不断优化用户体验、提升安全性、拓展业务范围,以期在市场中占据一席之地。近日,权威机构发布了2025年全球加密货币交易所最新榜单,揭示了当前市场中最受欢迎和信任的TOP10交易所。以下是详细介绍及分析。 Binance  &#8211…

    2025年12月8日 好文分享
    000

发表回复

登录后才能评论
关注微信