共计 2001 个字符,预计需要花费 6 分钟才能阅读完成。
自动写代码机器人,免费开通
丸趣 TV 小编给大家分享一下 MySQL 实现负载均衡功能的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
前言
MySQL 是一个高速度、高性能、多线程、开放源代码,建立在客户 / 服务器 (Client/Server) 结构上的关系型数据库管理系 (RDBMS)。它始于 1979 年,最初是 MichaelWidenius 为瑞典 TcX 公司创建的 UNIREG 数据库系统,当时的 UNIREG 没有 SQL(StructuredQueryLanguage 结构化查询语言) 接口,限制了它的应用。
1996 年 5 月,Widenius 开发出了 MySQL 的最初版本,开始在 Internet 上公开发行。MySQL 的开发人员从一开始就一直关注它的性能,为此不惜特性集,直到今天,MySQL 依然保持本色,以高速度高性能为首要原则。随着时间的推移,MySQL 也加入了大型数据库产品的高级特性,如存储过程、视图、触发器等,使其在企业级数据库系统中开始被部署应用[1]。
2008 年 10 月,SUN 公司收购了 MySQLAB 公司,开始进入开源领域。随着重量级操作系统 Solaris 的开源,SUNMySQL 在数据库市场占有的份额将会进一步提高。因此,在生产环境中部署具有负载均衡功能的 MySQL 服务器集群,对于提高企业数据库应用系统的速度、稳定性及可伸缩性具有很大的现实意义,也可以有效降低应用系统的投资成本。
一、负载均衡基本思路
在一个服务器集群中,尽可能的平均负载量。通常做法是在服务器前端设置一个负载均衡器(专门的硬件设备),MySQL 的负载均衡,通常都离不开数据分片(把数据分割成小块,存储到不同的 db 节点中)、复制等操作。
在一个服务器集群中,尽可能的平均负载量。通常做法是在服务器前端设置一个负载均衡器(专门的硬件设备),MySQL 的负载均衡,通常都离不开数据分片(把数据分割成小块,存储到不同的 db 节点中)、复制等操作。
负载均衡的主要贡献,除了均发数据库请求,还可提供管理读 / 写策略。在分发请求时则确定那些节点可写,可读,随即将请求发送到指定节点上执行操作。
二、实现负载均衡的方式
1、mysql 读写分离
mysql 复制时,产生了多个数据副本(备库),为减少服务器压力,备库用于处理读操作,主库可同时处理读写是 mysql 集群实现读写分离的常用策略。
由于备库的复制是异步的,无法实时同步,读写分离的主要难点也在于备库上的脏数据。通常如果使用备库进行读,一般对数据的实时性要求不能太高。对此,mysql 提供了几种常见的读写分离方式,例如基于查询的读写分离、基于脏数据、基于会话等,有兴趣可继续研究。
mysql 设置的读写分离,减少了主库的请求量,将大量读的操作发送给备库,实现负载均衡。
2、修改 DNS
在高并发负载均衡(一)——企业架构分析和 DNS 中详细介绍了 DNS 以及 DNS 如何实现负载,简言之,通过 n 个服务器 IP 指定到一个域名,根据请求的不同标识特征,将请求发送给不同的 IP 服务器进行处理。
3、引入中间件
mysql 官方提供了一个 mysql 负载的中间件,mysql_proxy,也需要在服务器上进行安装,修改配置文件(mysql 的服务器 IP), 实质与 nginx 类似,也是一个代理服务器。
4、利用 mysql 复制分流查询操作
利用 mysql 的主从复制可以有效的分流更新操作和查询操作,具体的实现是一个主服务器,承担更新操作,多台从服务器,承担查询操作,主从之间通过复制实现数据的同步。多台从服务器一方面用来确保可用性,一方面可以创建不同的索引满足不同查询的需要。
对于主从之间不需要复制全部表的情况,可以通过在主的服务器上搭建一个虚拟的从服务器,将需要复制到从服务器的表设置成 blackhole 引擎,然后定义 replicate-do-table 参数只复制这些表,这样就过滤出需要复制的 binlog,减少了传输 binlog 的带宽。因为搭建的虚拟的从服务器只起到过滤 binlog 的作用,并没有实际纪录任何数据,所以对主数据库服务器的性能影响也非常的有限。
通过复制分流查询的存在的问题是主数据库上更新频繁或者网络出现问题的时候,主从之间的数据可能存在差异,造成查询结果的异议,应用在设计的时候需要有所考虑。
5、采用分布式数据库架构
mysql 从 5.0.3 开始支持分布式事务,当前分布式事务只对 Innodb 存储引擎支持。分布式的数据库架构适合大数据量,负载高的情况,有良好的扩展性和高可用性。通过在多台服务器之间分布数据实现在多台服务器之间的负载平均,提高了访问的执行效率。具体实现的时候,可以使用 mysql 的 Cluster 功能(NDB 引擎)或者自己编写程序来实现全局事务。
看完了这篇文章,相信你对“MySQL 实现负载均衡功能的方法”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!
向 AI 问一下细节