星空网站建设

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3|回复: 0

叙述用分区和负载均衡让你的MySQL更大更好

[复制链接]
  • TA的每日心情
    无聊
    3 小时前
  • 签到天数: 44 天

    [LV.5]常住居民I

    10万

    主题

    39

    回帖

    30万

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    305319
    发表于 2025-8-7 11:47:17 | 显示全部楼层 |阅读模式

    通常,当我们的MSQL数据库逐渐变慢时,我们就希望通过一切努力使它变得更、更强、更大、更好!那么都有哪些方法呢别着急,我会一个一个给大家介绍如何才能现这些美好的愿望。阅读本系列文章将有助于扩大你的视野,更好地规划你将来的需要,本系列的首篇文章“更,更强的MSQL”讨论了查询化和硬件调整,包括增加额外的服务器和应用程序变更,本文将介绍如何通过分区和负载均衡解决方案让你的MSQL变得更大更好。

    更大的MSQL

    增加更多的MSQL例是提高应用程序响应速度的有效方法,如果你的服务器有多颗CPU,充足的内存和速的硬盘,这些资源有相当一部分处于闲置状态,那么在这种情况下,在服务器上可以同时运行多个MSQL例,因为MSQL默认情况下只有一个进程和多个会话线程,因此它真正能利用的比较大硬件资源是有限的。

    如果你的服务器已经饱和了,那么必须增加服务器,不管你的多个MSQL例是在一台服务器上,还是在多台服务器上,你都需要为应用程序配置一个方法让它知道该将查询发送给哪台服务器,如果是要修改数据,那就应该将指令发送到主数据库例,如果仅仅是查询操作,那么随便发给任何一个从数据库例即可。

    1、数据分区和水平分区

    因为许多W应用程序是通过会话来识别用户的,通过会话将它们分配到不同的从数据库例显得很有道理。例如A-G,H-O,P-Z数据库例可能在工作,这时可以通过用户的哈希值,或将用户分配到不同的服务器上,这就是所谓的分区键,选择分区键时需要慎重决定,因为它会影响到你如何构建从数据库例,主要是考虑如何让这些服务器平均承担工作负载,如果选择得不好,假设从数据库倒掉,也可能会引起数据中断。

    如果正采用这种分区,你需要决定程序运行时使用哪个数据库,这可以通过一个中间层如MSQL代理来现,虽然它还处于A阶段,但它的思想很好,并且已经有很多人将其用于生产环境,它运行在服务器上,响应端口3306上的请求,然后将这些查询通过高速语言如现的某些逻辑转发给后端适当的服务器。

    其次你也可以在应用程序中指定将查询发到哪些服务器,这也是比较灵活的方法,你可以完全控制整个决策过程,你也可以使用__检查从数据库例,看看它们是否有足够的计算资源。还有你使用的编程语言或W框架可能也会提供这方面的支持,如果你还不清楚,可以查询它们的文档。

    你还可以研究一下CT,DBI:BCP以及SQLR,它们支持许多不同的编程语言和数据库。同样,CMS如D也支持多种只读的从数据库,你只需要启用这个功能即可。

    使用这种架构需要考虑的另一个事情是,是否要使用主数据库例,以及何时使用,一般说来,所有插入,更新和删除操作都应放在主数据库例上完成,所有的查询操作都放在从数据库例上完成。例如,如果某个用户对博客文章发表了注释,此时如果直接使用从数据库,可能法完成,因为MSQL复制架构会存在滞后,此时从数据库中可能还没有那篇博文。

    检查过时数据是一个更好的方法,如果你有报告查询在夜间运行,这种方法可能工作得很好,你只需要确保复制赶得上进度即可。

    另一个方法是通过版本号跟踪数据库变更,在读取数据之前确定数据是否是比较新的版本。

    比较后,MSQL提供了一个函数__,它可以确定从数据库更新到哪个时间点了。

    2、功能分区

    你可能已经使用到功能分区,使用功能分区时,需要创建一个生产数据库的副本用于不同目的,如其中一个用于数据仓库和报告,另一个用于文本搜索等。

    通过负载均衡使MSQL变得更好

    如果你的从数据库已经有些只读数据,你可能需要现负载均衡,将流量平均分配到各个从数据库,现方法有多种,如随机分配,比较少连接法,响应速度比较法,或某种加权平均法,虽然某些硬件负载均衡设备可以提供负载均衡功能,但它们往往是设计用于均衡络流量,并没有提供数据库相关的均衡功能。

    幸运的是有很多软件解决方案,LVS项目就是一个不错的候选,它已经发展得相当成熟稳定,它提供了类似DNS轮询的负载均衡算法,但是在IP层现的,速度非常。此外,也有很多项目是建立在LVS基础之上的,包括,它是基于对等络的,因此不会发生单点故障,还有一个值得推荐的项目是。

    小结

    MSQL提供了许多高级特性可以现限制的规模扩展,视不同应用环境有不同的比较佳解决方案,因此需要在用于生产数据库之前,比较好先对各种解决方案进行充分了解,并尽量搭建与生产环境负载相当的测试平台进行测试。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表