使用淘寶中介軟體cobar實現mysql分庫分表

五柳-先生發表於2016-04-07
cobar 編譯安裝配置筆記
https://github.com/alibaba/cobar
windows下使用eclipse匯入cobar專案,eclipse File -> Import -> Git 
https://github.com/alibaba/cobar

linux下:wget https://codeload.github.com/alibaba/cobar/zip/master
F:\mycat>mvn compile
F:\mycat>mvn package

生成壓縮包cobar-server-1.2.7.tar.gz,放到linux環境中解壓出來,沒有logs目錄,新建並執行檢視目錄結構如下:
[html] view plain copy
  1. [root@XAYQ-Test3 ~]# tree /opt/cobar-server  
  2. /opt/software/cobar-server  
  3. ├── bin  
  4. │   ├── restart.sh  
  5. │   ├── shutdown.sh  
  6. │   ├── startup.bat  
  7. │   └── startup.sh  
  8. ├── conf  
  9. │   ├── log4j.xml                       #日誌配置檔案,不需要修改  
  10. │   ├── rule.xml                        #mysql路由規則  
  11. │   ├── schema.xml                      #  
  12. │   └── server.xml                      #  
  13. ├── lib  
  14. │   ├── cobar-server-1.2.7.jar  
  15. │   └── log4j-1.2.17.jar  
  16. └── logs  
  17.     ├── alarm.log  
  18.     ├── console.log  
  19.     ├── heartbeat.log  
  20.     ├── stdout.log  
  21.     └── stdout.log.2014-07-10  
    
1.主要修改以下幾個檔案:rule.xml 
[html] view plain copy
  1. <!-- 路由規則定義,定義什麼表,什麼欄位,採用什麼路由演算法 -->  
  2. <tableRule name="rule1">  
  3.   <rule>  
  4.     <columns>id</columns>  
  5.     <algorithm><![CDATA[ func1(${id}) ]]></algorithm>  
  6.   </rule>  
  7. </tableRule>  
  8.   
  9. <!-- 路由函式定義 -->  
  10. <function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong">  
  11.   <property name="partitionCount">2</property>  
  12.   <property name="partitionLength">512</property>  
  13. </function>  
  
2.schema.xml ,定義資料節點
[html] view plain copy
  1. <cobar:schema xmlns:cobar="http://cobar.alibaba.com/">  
  2.   
  3.   <!-- schema定義 -->  
  4.   <schema name="cppdb" dataNode="cppDb1">  
  5.     <table name="tb2" dataNode="cppDb2,cppDb3" rule="rule1" />  
  6.   </schema>  
  7.   
  8.   <!-- 資料節點定義,資料節點由資料來源和其他一些引數組織而成。-->  
  9.   <dataNode name="cppDb1">  
  10.     <property name="dataSource">  
  11.       <dataSourceRef>cppDataSource[0]</dataSourceRef>  
  12.     </property>  
  13.   </dataNode>  
  14.   <dataNode name="cppDb2">  
  15.     <property name="dataSource">  
  16.       <dataSourceRef>cppDataSource[1]</dataSourceRef>  
  17.     </property>  
  18.   </dataNode>  
  19.   <dataNode name="cppDb3">  
  20.     <property name="dataSource">  
  21.       <dataSourceRef>cppDataSource[2]</dataSourceRef>  
  22.     </property>  
  23.   </dataNode>  
  24.   
  25.   <!-- 資料來源定義,資料來源是一個具體的後端資料連線的表示。-->  
  26.   <dataSource name="cppDataSource" type="mysql">  
  27.     <property name="location">  
  28.       <location>172.22.14.7:3306/cpp1</location>  
  29.       <location>172.22.14.7:3306/cpp2</location>  
  30.       <location>172.22.14.7:3306/cpp3</location>  
  31.     </property>  
  32.     <property name="user">root</property>  
  33.     <property name="password">root</property>  
  34.     <property name="sqlMode">STRICT_TRANS_TABLES</property>  
  35.   </dataSource>  
  36.   
  37. </cobar:schema>  

3.server.xml,定義cobar對外統一的資料介面。

  <!-- 使用者訪問定義,使用者名稱、密碼、schema等資訊。 -->
[html] view plain copy
  1. <user name="root">  
  2. <property name="password">root</property>  
  3. <property name="schemas">cppdb</property>  
  4. t;/user>  



cobar升級版:mycat,提供了大連的文件,以及原始碼。

http://code.taobao.org/svn/openclouddb/

http://blog.csdn.net/huoyunshen88/article/details/37927553

相關文章