基于mysql的数据库集群系统的实现

基于mysql的数据库集群系统的实现

ID:24901616

大小:54.00 KB

页数:5页

时间:2018-11-16

基于mysql的数据库集群系统的实现_第1页
基于mysql的数据库集群系统的实现_第2页
基于mysql的数据库集群系统的实现_第3页
基于mysql的数据库集群系统的实现_第4页
基于mysql的数据库集群系统的实现_第5页
资源描述:

《基于mysql的数据库集群系统的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于MySQL的数据库集群系统的实现>>教育资源库  第一节数据库集群技术的现状  目前数据库集群系统应用得比较成功,应用范围比较广泛的是:Oracle公司的Oracle9与IBM公司DB2。Oracle9采用Shared-storage的技术,DB2选择了Shared-nothing的技术,二者各有长短。  最新的数据库集群系统的理论基础是分布式计算,将数据分布到每个节点,所有的计算节点并行处理数据,将结果汇总。这样的方式无疑是最完美的。但是目前仍然不能实现全部的功能。  对于Shared-storage以及Shared-nothing的技术请参考Oracle以及IBM网站上的相关资料。  

2、第二节目前数据库应用状况  目前数据库应用状况大致分为两类,第一类是数据量在100G以下,数据库访问频繁,请求密集。主要是ySQL的第一类应用问题的解决方式  一个实际案例的解决:  我在工作当中遇到了这样的问题,我们的ySQL运行在SUN450,2G内存的平台上。由于ySQL,否则怎么都不会好。在对SQL语句优化完成后还是不能很好的解决问题,我们增加了一台数据库服务器,通过MySQL的数据同步机制,让两台数据库上的数据保持同步,修改了一部分只会发生读取操作的php程序,让这些程序连接另外一台数据库,算是把负载分离出去一部分,问题得到了初步的解决。但是后来业务做大,我们又增加了多台服务器,修改

3、了很多程序,分离他们对数据库的读取操作,访问不同的服务器。  第六节MySQL-HA-Proxy方案的提出  通过修改程序的方式实现将系统的负载分离,是件很痛苦的事情,工程浩大,而且不能弄错,因为除了主服务器可以写入、修改数据,而其它的服务器只能通过数据同步更新自身的数据,所以如果你对那些数据库进行了写操作,结果将是灾难性的。  如果我们能够有一个程序分拣SQL语句,根据他的类型(读取/写入),分别传送给不同的服务器,然后再将结果返回。采用一种类似HTTP的PROXY的方式,这样我们就不需要通过修改源程序的方式来分担负载了,如果再能够根据服务器的负载状况,或者是表的状态(可用/锁定),来判断应

4、该将这个请求分配到哪台服务器,那就比我们修改源程序所能达到的效果还要好。  第七节MySQLClient与Server之间如何通信  四处寻找,也没有找到一篇关于Mysql通讯协议的文章,看来只有分析Mysql的源程序了。于是找来mysql3.23.49的代码,打开sniffer工具。MySQL的通讯协议可能变更过多次,在3.23.49的版本里面,通讯协议的版本竟然是10。  简单的分析了一下通讯协议,现在规整如下,有些地方还不是很完善,由于我实在没有太多的时间仔细研读mysql的代码,目前我只了解到了这些。  Server对Client请求的响应数据格式:偏移区域类型长度(byte)说明0H

5、EADDataLength31 2 3 FLAG1=0普通信息  =1多段信息  =2认证返回  >2段结束字4DATACMDCode1 5 MessageDataLength-1   当FLAG=0,2的时候CMDCode与Message的定义CMDCode类型Message的结构00状态码偏移类型Length(byte)   0AffectroandID15 mandDataDataLength-1  mandID与mandData的说明:ID类型数据格式0_SLEEP 1_QUITNULL2_INIT_DBDatabasename3_QUERYstandquerystring4_F

6、IELD_LISTtablename[128]e6_DROP_DBDatabasename7_REFRESHoptions(bits)8_SHUTDOE 16_DELAYED_INSERT 17_CHANGE_USER[user][passysql-proxy的程序的开发,但是目前仍然处于测试阶段,最新的版本是0.0.4,下一个版本仍然还在修订中。从0.0.3版本开始,mysql-proxy已经可以完整的跑完mysql自身提供的sql-bench了,但是这个sql-bench只能提供单点的性能,没有对集群的mysql系统提供测试功能。  系统提供了动态采集RealServer上的LoadAvg

7、然后反馈给MysqlProxy的程序,但是由于这部分我没有进行测试,所以我在前面的测试中采用的请求分配方式是轮询方式,如果出现两个负载一样的RealServer系统会自动的在它们之间轮换选择。  Mysql-proxy的源代码您可以到我的网站下载:sock.org/bbs/Mysql-HA-Cluster项目。还有一部分测试的数据我也会在那里公布。  如何进行系统测试?  既然是专门为Linux+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。