最新文章:看我如何快速學習.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
總結:
如今的技術感受越作越薄,多關注開源的解決方案,卻成爲必要的一項工做技能了。