最新文章:看我如何快速学习.Net(高可用数据采集平台)、高并发数据采集的架构应用(Redis的应用)html
问题点:mysql
随着项目的增加,数据和数据表也成倍的增加,普通的单点数据库已经没法知足平常的增加的须要。为了可以给开发者提供透明化的数据库应用,也为了有益于项目的扩展、维护和应用,迫切须要分布式数据库的解决方案。git
解决方案:github
1. Mysql Cluster :Mysql官方提供分布式集群的解决方案之1、具备较强的权威性。算法
2. Cobar: Taobao提供的分布式数据库的解决方案,通过必定的实践证实、简单易用,而且能够自定义分割算法。sql
3. 爱可生: MySQL分布式集群服务框架, 国内领先的开源数据库软件、数据平台总体解决方案和服务提供商。数据库
4. Percona XtraDB Cluster 5.6: Percona提供,基于Mysql的另外一分支优化过的数据库集群的解决方案。后端
5. 以及其它分布式数据库解决方案: 新浪、MySQL federated 引擎、Amoeba等。数组
基于以上较多的分布式解决方案,仍是选择了淘宝的Cobar、开源并且通过实践证实已经足够知足平常的须要。服务器
配置和应用:
1.下载 :https://github.com/alibaba/cobar/wiki
2. 安装:1). Cobar是基于Java开发的分布式数据库应用,因此安装Cobar首先要安装JAVA JRE。
2). 解压,拷贝过去,运行startup.sh便可。
3.配置:
1)Server.xml 服务器配置
<user name="mysql"> <property name="password">mysql</property> <property name="schemas">data_acquisition_server</property> </user>链接用户名、密码配置,客户端链接登入验证。schemas 主要对应schema.xml的定义。
2) Schema.xml 数据节点、数据表拆分配置
<!-- schema定义 --> <schema name="data_acquisition_server" dataNode="dnDataAcquisitionMaster"> <table name="task" dataNode="dnDataAcquisitionChunk1,dnDataAcquisitionChunk2" rule="rule1" /> <table name="task_upload" dataNode="dnDataAcquisitionChunk1,dnDataAcquisitionChunk2" rule="rule1" /> <table name="task_source" dataNode="dnDataAcquisitionChunk1,dnDataAcquisitionChunk2" rule="rule1" /> </schema> <!-- 数据节点定义,数据节点由数据源和其余一些参数组织而成。--> <dataNode name="dnDataAcquisitionMaster"> <property name="dataSource"> <dataSourceRef>dsServer[0]</dataSourceRef> </property> </dataNode> <dataNode name="dnDataAcquisitionChunk1"> <property name="dataSource"> <dataSourceRef>dsServer[1]</dataSourceRef> </property> </dataNode> <dataNode name="dnDataAcquisitionChunk2"> <property name="dataSource"> <dataSourceRef>dsServer[2]</dataSourceRef> </property> </dataNode> <!-- 数据源定义,数据源是一个具体的后端数据链接的表示。--> <dataSource name="dsServer" type="mysql"> <property name="location"> <location>127.0.0.1:3306/db_data_acquisition_master</location> <location>127.0.0.1:3306/db_data_acquisition_chunk1</location> <location>127.0.0.1:3306/db_data_acquisition_chunk2</location> </property> <property name="user">root</property> <property name="password">123456</property> <property name="sqlMode">STRICT_TRANS_TABLES</property> </dataSource>3) Rule.xml 数据拆分算法配置
<!-- 路由规则定义,定义什么表,什么字段,采用什么路由算法 --> <tableRule name="rule1"> <rule> <columns>id</columns> <algorithm><![CDATA[ func1(${id}) ]]></algorithm> </rule> </tableRule> <!-- 路由函数定义 --> <function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong"> <property name="partitionCount">2</property> <property name="partitionLength">512</property> </function>
4) 数据表建立
数据库:db_data_acquisition_master、db_data_acquisition_chunk一、db_data_acquisition_chunk2
数据表:1)db_data_acquisition_chunk1:task、task_source、task_upload
2)db_data_acquisition_chunk2:task、task_source、task_upload
当前的拆分规则、全部的表必须要有id但不能是自增加的。
4 客户端链接
可使用任一Mysql链接工具进行链接,端口号为:8066
总结:
如今的技术感受越作越薄,多关注开源的解决方案,却成为必要的一项工做技能了。