一、 mysql的市场占有率
二、 mysql为什么受到如此的欢迎
三、 mysql数据库系统的优缺点
四、 网络服务器的需求
五、 什么是mysql的集群
六、 什么是负载均衡
七、 mysql集群部署和实现方法
八、 负载均衡的配置和测试
九、 Mysql集群系统的测试(测试方案+测试脚本+测试结果分析)
l mysql的市场占有率
MySQL是世界上最流行的开源数据库,已有1100多万的击活安装,每天超过五万的下
载。MySQL为全球开发者、DBA和IT管理者在可靠性、性能、易用性方面提供了选
择。
第三方市场调查机构Evans Data Corporation调查显示,过去两年内在开发者使用
的所有数据库中,MySQL已经拥有了25%的市场占有率。开源已经成为当今IT结构中
不可或缺的重要部分,而且开源的市场占有率将继续增加。如下图所示:
l mysql为什么受到如此的欢迎
Sun公司今天1月份花了10亿美元将mysql收购,准备进军开源和数据库。
数据库系统 | Oracle | SQL Server | MySQL | DB2 |
是否免费 | 收费 | 收费 | 免费 | 收费 |
存储过程 | 支持 | 支持 | 支持 | 支持 |
视图 | 支持 | 支持 | 支持 | 支持 |
快照 | 支持 | 支持 | 不支持 | 支持 |
触发器 | 支持 | 支持 | 支持 | 支持 |
安全 | 强 | 中 | 中 | 强 |
复杂查询 | 强 | 中 | 弱 | 中 |
索引 | 丰富 | 一般 | 弱 | 中 |
数据类型 | 多 | 多 | 多 | 多 |
事务处理 | 强 | 强 | 弱 | 中 |
l mysql数据库系统的优缺点
每个系统都有自身的不足和发展历程,mysql也一样。
优点 | 缺点 |
1. 源码公开,免费 2. 跨平台 3. 为多种开发语言和包提供了API 4. 支持多线程 5. 小巧、灵活、速度较快 6. 支持各种字符集 7. 提供各种连接、优化的工具包
| 1. 不完善,很多数据库特性不支持 2. 只适合中小型应用,对于大型应用,可以跟其他数据库互补; 3. 数据库系统数据量只能达到千万级别;
|
l 网络服务的需求
随着Internet的飞速发展和对我们生活的深入影响,越来越多的个人在互联网上购物、娱
乐、休闲、与人沟通、获取信息;越来越多的企业把他们与顾客和业务伙伴之间的联络
搬到互联网上,通过网络来完成交易,建立与客户之间的联系。互联网的用户数和网络
流量正以几何级数增长,这对网络服务的可伸缩性提出很高的要求。例如,比较热门的Web
站点会因为被访问次数急剧增长而不能及时处理用户的请求,导致用户进行长时间的等待
,大大降低了服务质量。另外,随着电子商务等关键性应用在网上运行,任何例外的服务
中断都将造成不可估量的损失,服务的高可用性也越来越重要。所以,对用硬件和软件方
法实现高可伸缩、高可用网络服务的需求不断增长,这种需求可以归结以下几点:
1) 可伸缩性(Scalability),当服务的负载增长时,系统能被扩展来满足需求,且不降
低服务质量。
2) 高可用性(Availability),尽管部分硬件和软件会发生故障,整个系统的服务必须是
每天24小时每星期7天可用的。
3) 可管理性(Manageability),整个系统可能在物理上很大,但应该容易管理。
4) 价格有效性(Cost-effectiveness),整个系统实现是经济的、易支付的。
单服务器显然不能处理不断增长的负载。这种服务器升级方法有下列不足:一是升级过
程繁琐,机器切换会使服务暂时中断,并造成原有计算资源的浪费;二是越往高端的服务
器,所花费的代价越大;三是一旦该服务器或应用软件失效,会导致整个服务的中断。
通过高性能网络或局域网互联的服务器集群正成为实现高可伸缩的、高可用网络服务的有
效结构。这种松耦合结构比紧耦合的多处理器系统具有更好的伸缩性和性能价格比,组成
集群的PC服务器或RISC服务器和标准网络设备因为大规模生产,价格低,具有很高的性能
价格比。但是,这里有很多挑战性的工作,如何在集群系统实现并行网络服务,它对外是
透明的,它具有良好的可伸缩性和可用性。
针对上述需求,我们给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在
Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的服
务器集群,我们称之为Linux虚拟服务器(Linux Virtual Server)。在LVS集群中,使得
服务器集群的结构对客户是透明的,客户访问集群提供的网络服务就像访问一台高性能、
高可用的服务器一样。客户程序不受服务器集群的影响不需作任何修改。系统的伸缩性通
过在服务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正
确地重置系统达到高可用性。
l 什么是mysql集群
分为同步集群和异步集群。
同步集群(mysql cluster)
结构: (data + sql + mgm节点)
特点:
1) 内存级别的,对硬件要求较低,但是对内存要求较大。换算比例为:1:1.1;
2) 数据同时放在几台服务器上,冗余较好;
3) 速度一般;
4) 建表需要声明为engine=ndbcluster
5) 扩展性强;
6) 可以实现高可用性和负载均衡,实现对大型应用的支持;
7) 必须是特定的mysql版本,如:已经编译好的max版本;
8) 配置和管理方便,不会丢失数据;
异步集群(mysql replication)
结构: (master + slave)
特点:
1) 主从数据库异步数据;
2) 数据放在几台服务器上,冗余一般;
3) 速度较快;
4) 扩展性差;
5) 无法实现高可用性和负载均衡(只能在程序级别实现读写分离,减轻对主数据库的压力);
6) 配置和管理较差,可能会丢失数据;
l 什么是负载均衡
通过director,将用户的请求分发到real server服务器上,然后返回给用户。
负载均衡部署灵活、能够满足各种需求。
实现方式:
硬件:BIG/IP、Cisco、IBM(昂贵)
软件:LVS(免费)
LVS系统将用户的请求的数据包在数据层和网络层进行了封装和转发,由三种方式满足各种需求。
1) DR:直接路由
2) Tuning:tcp/ip隧道
3) NAT:网络地址转换
需求:
免费的软件包
1) 2台低端的director(active和standby)
2) 心跳线:连接2台director,检测活动情况
3) 2台以上的real servers
通用结构:
有兴趣的可以分别研究上面的三种LVS结构。
l mysql集群部署和实现方法
1) 假设现在有4台服务器(mysql官方推荐的最小配置)
服务器 | 开启的服务 | 角色 |
192.168.131.164 Ndb1 | Mysqld | Mysql API |
Ndb_mgmd | 管理节点(master) | |
Heartbeat | Director(master) | |
192.168.131.26 Ndb2 | Mysqld | Mysql API |
Ndb_mgmd | 管理节点(backup) | |
Heartbeat | Director(standby) | |
192.168.131.77 Sql1 | Mysqld | Mysql API(realserver) |
Ndbd | 存储节点 | |
Arptables | 访问路由 | |
192.168.131.101 |