免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4156 | 回复: 0
打印 上一主题 下一主题

Amoeba的使用及单机多MySQL数据库的配置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-15 21:26 |只看该作者 |倒序浏览

                               
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

  Normal
  0
  
  
  
  7.8 磅
  0
  2
  
  false
  false
  false
  
  EN-US
  ZH-CN
  X-NONE
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  
  MicrosoftInternetExplorer4
  
   
   
   
   
   
   
   
   
   
   
   
  

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

/* Style Definitions */
table.MsoNormalTable
        {mso-style-name:普通表格;
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-qformat:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman","serif";}
Amoeba是一个类似MySQL
Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目。其主要功能包括读写分离,垂直分库,水平分库等。Amoeba For MySQL处于在应用和数据库之间,扮演一个中介的角色,它对客户端透明,能将应用传递过来的SQL语句经过分析后,根据配置文件路由到不同的数据库进行适当的处理。Amoeba实现了简单的负载均衡(采用轮询算法)和Failover。
本系统中该模块的体系结构如下图3.2.7所示:

图3.2.7 分布式数据库结构
下面介绍一下Amoeba for MySQL的配置:
(1)   Server配置:
配置统一的对外接口,即外界程序进行连接的虚拟的MySQL数据库。

图3.2.8  对外统一接口配置
(2)   配置4个dbServer
需要至少配置一个dbServer,每个dbServer将是物理数据库Server的映射。

图3.2.9  master1的配置
上述配置实际是告诉虚拟MySQL数据库,它背后真正要去访问的是端口为3306,用户为root的MySQL数据库。本系统中,需要配置4个MySQL数据库。
(3)   配置queryRouter
这里是读写分离的查询规则配置,如下图所示,读操作去连接slavePool,更新操作去连接masterPool。

图3.2.10  query Router的配置
(4)   主从结构的读写分离
MasterPool:Master1、Master2主要进行写数据。
SlavePool:Slave1、Slave2是两个平等的数据库,负责读数据和负载均衡。
Amoeba提供了读写分离和负载均衡的配置方案。配置Slave1和Slave2形成一个虚拟的SlavePool,该配置可以提供负载均衡。配置如下:

图3.2.11  slavePool配置
在queryrouter属性中配置 writePool=masterPool,readPool=slavePool。那么遇到update、insert、delete等写语句时将query发送到writePool,遇到select语句时将query发送到readPool中执行,且在执行select语句时,采用轮询算法,轮流从slave1和slave2中读数据,达到负载均衡的效果。
(5)   数据垂直切分
垂直切分数据是按照系统要求,将不同类型的数据存放在不同的数据库或者服务器。在Amoeba中,数据垂直切分的粒度是表,因此在本系统中,将表account、car_information、violation和location分别存放在两个数据库服务器上(Master1和Master2)。在Amoeba的安装目录下的config/amoeba.xml配置文件中,启用ruleConfig配置。rule.xml配置文件的部分内容如下(第5,17—19行):

图3.2.12  数据切分配置
接下来就可以看到垂直切分的效果,当把数据写入violation表时,Amoeba会到master1上执行,而当把数据写入location表时,将会到master2上执行。上面的配置皆可完成基于Amoeba的数据垂直切分。
(6)   数据水平切分
Amoeba提供了非常友好的数据切分规则表达式,同时Amoeba也允许开发人员增加新的规则函数,数据水平切分的粒度是行。在本系统中,我们根据account表中的AUTHORITY字段进行水平切分,我们将插入的数据分成两类,一类是AUTHORITY=1,另一类是AUTHORITY=0。具体的配置如图3.2.12第5—16行。
在配置文件中,parameters属性指的是sql表达式中的where条件中cloumn字段。例如:在rule1中,参数是AUTHORITY,表达式是AUTHORITY=1,相当于sql语句的select * from account where
AUTHORITY=1。如果有多个属性,可采用逗号分隔。
根据上面的水平切分规则:当有数据要插入account表时,如果AUTHORITY=1那么将数据插入到master1,如果AUTHORITY=0,那么就把数据插入到master2中,当进行select查询时,则Amoeba将从master1和master2同时发起请求,并将结果合并后返回给客户端。
以上是对MySQL实施分布式的中间件Amoeba的配置介绍。除此之外,还需要对MySQL进行主从同步的配置,对此请参见相应版本的MySQL使用手册。
本系统是在一台机器上启动四个MySQL实例来模拟多台数据库服务器。因此,还需要做一些配置,详细过程如下(不同版本略有不同,此处以5.1.39为例):
在同一台电脑中安装多个mysql服务,不能通过安装多次双击mysql安装文件的方式实现。假设电脑中已经安装一个MySQL服务(作为主服务器master),安装目录为D:\MySQL Server 5.1。此时复制MySQL Server 5.1目录下的所有安装文件至一个新的目录,以E:\MySQL Server
5.1目录为例说明,把它作为从服务器slave。
首先修改从服务器的配置文件,即E:\MySQL Server 5.1目录下的my.ini文件。用记事本打开,修改[client]下的port=3307(区别主服务的端口,避免冲突),修改[mysqld]下的port=3307,basedir="E:/MySQL Server
5.1/",datadir="E:/Program
Files/MySQL/MySQL Server 5.1/data/",innodb_data_home_dir="E:/MySQL Datafiles/",其中innodb_data_home_dir自行设置路径 ,datadir为数据的存储路径,根据自己的data文件夹位置自行设置,主服务器的data文件夹默认在C:\Documents
and Settings\All Users\Application Data\MySQL\MySQL Server 5.1目录下。
然后在命令行窗口下进入以下目录E:\MySQL Server
5.1\bin后,执行以下命令mysqld
install mysql_slave,其中mysql_slave为服务名。操作如图:

图3.2.13  安装MySQL服务
接着在注册表找到HKEY_LOCAL_MACHINE
\SYSTEM\CurrentControlSet \Services\ MySQL_ SLAVE中找到ImagePath项,在该项中加入--defaults-file="E:\MySQL Server 5.1\my.ini"。
最后,再回到命令行窗口的E:\MySQL Server 5.1\bin,执行net start mysql 命令,即可启动新的mysql服务。
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104586/showart_2095111.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP