欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

數據庫–Cobar分布式數據庫集群MySQL中間件

系統 2903 0

運行環境:

  • 主機1:Ubuntu14.04 Desktop + MySQL5.5 + JDK 1.7(HP Z400) ?內網IP地址:192.168.137.8
  • NODE1:Ubuntu 13.04 server + MySQL5.5 ?內網IP地址:192.168.137.31
  • NODE2:Ubuntu 13.04 server + MySQL5.5 ?內網IP地址:192.168.137.32

注:(NODE1和NODE2運行于XEN虛擬化平臺,硬件環境HP Z800)

Cobar簡介:

Cobar是關系型數據庫的分布式處理系統,它可以在分布式的環境下看上去像傳統數據庫一樣為您提供海量數據服務。

  • ? ? ? ?產品在阿里巴巴B2B公司已經穩定運行了3年以上。
  • ? ? ? ?目前已經接管了3000+個MySQL數據庫的schema,為應用提供數據服務。
  • ? ? ? ?據最近統計cobar集群目前平均每天處理近50億次的SQL執行請求。

Cobar最主要解決的問題是:分布式和HA。

分布式:主要是通過將同一個表的數據拆分成多個,放入不同的數據庫實例,查詢的時候也會按照同樣的操作方式,來更新具體數據庫實例中的對應的數據。

HA:高可用性,在設置了MYSQL心跳的情況下,如果主數據庫發生了異常,Cobar會自動連接從數據庫,如果主數據庫恢復正常,只能手動恢復到主數據庫。Cobar只負責切換數據庫實例,不負責主從數據庫的同步,所以需要提前將主從數據庫設置雙向同步。

存在的不足:

  • ? (1).不支持跨庫情況下的join、分頁、排序、子查詢操作。
  • ? (2).SET語句執行會被忽略,事務和字符集設置除外。
  • ? (3).分庫情況下,insert語句必須包含拆分字段列名。
  • ? (4).分庫情況下,update語句不能更新拆分字段的值。
  • ? (5).不支持SAVEPOINT操作。
  • ? (6).暫時只支持MySQL數據節點。
  • ? (7).使用JDBC時,不支持rewriteBatchedStatements=true參數設置(默認為false)。
  • ? (8).使用JDBC時,不支持useServerPrepStmts=true參數設置(默認為false)。
  • ? (9).使用JDBC時,BLOB, BINARY, VARBINARY字段不能使用setBlob()或setBinaryStream()方法設置參數。

當然,如果想努力實現這些功能,可以fork官方的源碼: https://github.com/alibaba/cobar

環境搭建

  • Cobar服務器:192.168.137.8:8066 用戶名/密碼:root/sa 實例名:dbtest
  • 主機1:192.168.137.8:3306 用戶名/密碼:cobar/sa 實例名:dbtest1
  • Node1:192.168.137.31:3306 用戶名/密碼:cobar/sa 實例名:dbtest2
  • Node2:192.168.137.32:3306 用戶名/密碼:cobar/sa 實例名:dbtest3

Cobar-Server-1.2.7版本下載: http://pan.baidu.com/s/1pJudQh9

實驗拓撲圖如下:

?

cobar

?

首先分別在三個主機創建數據庫實例:

      
        #創建dbtest1腳本

   dropdatabaseif exists dbtest1;

   createdatabasedbtest1;

   use dbtest1;

   #在dbtest1上創建tb1

   createtabletb1(

   id   intnotnull,

   gmt   datetime);

#創建dbtest2

   dropdatabaseif exists dbtest2;

   createdatabasedbtest2;

   use dbtest2;

   #在dbtest2上創建tb2

   createtabletb2(

   id   intnotnull,

   val  varchar(
      
      
        256
      
      
        ));

#創建dbtest3

   dropdatabaseif exists dbtest3;

   createdatabasedbtest3;

   use dbtest3;

   #在dbtest3上創建tb2

   createtabletb2(

   id   intnotnull,

   val  varchar(
      
      
        256
      
      ));
    

Cobar配置:

schema.xml配置如下

      <!DOCTYPE cobar:schema SYSTEM 
      
        "
      
      
        schema.dtd
      
      
        "
      
      >

<cobar:schema xmlns:cobar=
      
        "
      
      
        http://cobar.alibaba.com/
      
      
        "
      
      >

  <!-- schema定義 -->

  <schema name=
      
        "
      
      
        dbtest
      
      
        "
      
       dataNode=
      
        "
      
      
        dnTest1
      
      
        "
      
      >

    <table name=
      
        "
      
      
        tb2
      
      
        "
      
       dataNode=
      
        "
      
      
        dnTest2,dnTest3
      
      
        "
      
       rule=
      
        "
      
      
        rule1
      
      
        "
      
       />

  </schema>

  <!-- 數據節點定義,數據節點由數據源和其他一些參數組織而成。-->

  <dataNode name=
      
        "
      
      
        dnTest1
      
      
        "
      
      >

    <property name=
      
        "
      
      
        dataSource
      
      
        "
      
      >

      <dataSourceRef>dsTest[
      
        0
      
      ]</dataSourceRef>

    </property>

  </dataNode>

  <dataNode name=
      
        "
      
      
        dnTest2
      
      
        "
      
      >

    <property name=
      
        "
      
      
        dataSource
      
      
        "
      
      >

      <dataSourceRef>dsTest[
      
        1
      
      ]</dataSourceRef>

    </property>

  </dataNode>

  <dataNode name=
      
        "
      
      
        dnTest3
      
      
        "
      
      >

    <property name=
      
        "
      
      
        dataSource
      
      
        "
      
      >

      <dataSourceRef>dsTest[
      
        2
      
      ]</dataSourceRef>

    </property>

  </dataNode>

  <!-- 數據源定義,數據源是一個具體的后端數據連接的表示。-->

  <dataSource name=
      
        "
      
      
        dsTest
      
      
        "
      
       type=
      
        "
      
      
        mysql
      
      
        "
      
      >

    <property name=
      
        "
      
      
        location
      
      
        "
      
      >

      <location>
      
        192.168
      
      .
      
        137.8
      
      :
      
        3306
      
      /dbtest1</location>

      <location>
      
        192.168
      
      .
      
        137.31
      
      :
      
        3306
      
      /dbtest2</location>

      <location>
      
        192.168
      
      .
      
        137.32
      
      :
      
        3306
      
      /dbtest3</location>

    </property>

    <property name=
      
        "
      
      
        user
      
      
        "
      
      >cobar</property>

    <property name=
      
        "
      
      
        password
      
      
        "
      
      >sa</property>

    <property name=
      
        "
      
      
        sqlMode
      
      
        "
      
      >STRICT_TRANS_TABLES</property>

  </dataSource>

</cobar:schema>
    

server.xml簡單配置

      <!DOCTYPE cobar:server SYSTEM 
      
        "
      
      
        server.dtd
      
      
        "
      
      >

<cobar:server xmlns:cobar=
      
        "
      
      
        http://cobar.alibaba.com/
      
      
        "
      
      >

  <!-- 用戶訪問定義,用戶名、密碼、schema等信息。 -->

  <user name=
      
        "
      
      
        root
      
      
        "
      
      >

    <property name=
      
        "
      
      
        password
      
      
        "
      
      >sa</property>

    <property name=
      
        "
      
      
        schemas
      
      
        "
      
      >dbtest</property>

  </user>

</cobar:server>
    

rule.xml配置

      <!DOCTYPE cobar:rule SYSTEM 
      
        "
      
      
        rule.dtd
      
      
        "
      
      >

<cobar:rule xmlns:cobar=
      
        "
      
      
        http://cobar.alibaba.com/
      
      
        "
      
      >

  <!-- 路由規則定義,定義什么表,什么字段,采用什么路由算法 -->

  <tableRule name=
      
        "
      
      
        rule1
      
      
        "
      
      >

    <rule>

      <columns>val</columns>

      <algorithm><![CDATA[ func2(${val}) ]]></algorithm>

    </rule>

  </tableRule>

  <!-- 路由函數定義 -->

  <function name=
      
        "
      
      
        func1
      
      
        "
      
      
        class
      
      =
      
        "
      
      
        com.alibaba.cobar.route.function.PartitionByLong
      
      
        "
      
      >

    <property name=
      
        "
      
      
        partitionCount
      
      
        "
      
      >
      
        2
      
      </property>

    <property name=
      
        "
      
      
        partitionLength
      
      
        "
      
      >
      
        512
      
      </property>

  </function>

  <!-- 路由函數定義 -->

  <function name=
      
        "
      
      
        func2
      
      
        "
      
      
        class
      
      =
      
        "
      
      
        com.alibaba.cobar.route.function.PartitionByString
      
      
        "
      
      >

    <property name=
      
        "
      
      
        partitionCount
      
      
        "
      
      >
      
        2
      
      </property>

    <property name=
      
        "
      
      
        partitionLength
      
      
        "
      
      >
      
        512
      
      </property>

    <property name=
      
        "
      
      
        hashSlice
      
      
        "
      
      >-
      
        5
      
      :</property>

  </function>

</cobar:rule>
    

這里需要說明,INSERT語句中必須包含路由規則定義的字段,否則Cobar不會對數據進行拆分,同時存儲到多個數據庫實例中,比如上面的tb2表中,id字段如果設置了auto_increment,插入語句中不用指明id字段,這樣就無法達到數據包拆分的目的。

準備完成之后直接運行bin目錄下的./startup.sh即可。

然后查看輸入的日志:

      yan@yan-Z400:~/cobar-server-
      
        1.2
      
      .
      
        7
      
      /logs$ tail -
      
        f stdout.log


      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        155
      
       INFO  Cobar 
      
        is
      
      
         ready to startup ...


      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        155
      
      
         INFO  Startup processors ...


      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        198
      
      
         INFO  Startup connector ...


      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        202
      
      
         INFO  Initialize dataNodes ...


      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        811
      
       INFO  dnTest1:
      
        0
      
      
         init success


      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        816
      
       INFO  dnTest3:
      
        0
      
      
         init success


      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        821
      
       INFO  dnTest2:
      
        0
      
      
         init success


      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        835
      
       INFO  CobarManager 
      
        is
      
       started and listening on 
      
        9066
      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        837
      
       INFO  CobarServer 
      
        is
      
       started and listening on 
      
        8066
      
      
        09
      
      :
      
        57
      
      :
      
        00
      
      ,
      
        837
      
       INFO  ===============================================
    

?

這樣cobar服務端就已經啟動。

直接使用jdbc或mysql終端連接cobar:

      yan@yan-Z400:~$ mysql -uroot -psa -P8066 -h192.
      
        168.137
      
      .
      
        8
      
      
        

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id 
      
      
        is
      
      
        1
      
      
        

Server version: 
      
      
        5.1
      
      .
      
        48
      
      -cobar-
      
        1.2
      
      .
      
        7
      
      
         Cobar Server (ALIBABA)



Copyright (c) 
      
      
        2000
      
      , 
      
        2013
      
      , Oracle and/
      
        or its affiliates. All rights reserved.



Oracle 
      
      
        is
      
       a registered trademark of Oracle Corporation and/
      
        or its

affiliates. Other names may be trademarks of their respective

owners.



Type 
      
      
        '
      
      
        help;
      
      
        '
      
       or 
      
        '
      
      
        \h
      
      
        '
      
      
        for
      
       help. Type 
      
        '
      
      
        \c
      
      
        '
      
       to clear the current input statement.
    

下面使用幾句Pyhton進行數據庫的插入操作:

      #!/usr/bin/
      
        env python

#coding
      
      =utf-
      
        8
      
      
        

import MySQLdb



#連接

cxn 
      
      = MySQLdb.Connect(host=
      
        '
      
      
        192.168.137.8
      
      
        '
      
      ,port=
      
        8066
      
      , user = 
      
        '
      
      
        root
      
      
        '
      
      , passwd = 
      
        '
      
      
        sa
      
      
        '
      
      
        )

#游標

cur 
      
      =
      
         cxn.cursor()



cur.execute(
      
      
        "
      
      
        USE dbtest
      
      
        "
      
      
        )




      
      
        for
      
       i 
      
        in
      
       range(
      
        1
      
      ,
      
        200
      
      
        ):

    cur.execute(
      
      
        "
      
      
        INSERT INTO tb2 (val) values ('this is a test record %d')
      
      
        "
      
      %
      
        i)

    print 
      
      
        '
      
      
        insert the %d record into cobar
      
      
        '
      
      %
      
        i 



cur.close()

cxn.commit()

cxn.close()
      
    

插入后查看數據庫dbtest2和數據dbtest3的情況:

可以看到有100條數據插入了dbtest2,99條數據插入了dbtest3。

后面會對Cobar進行更深入的了解。我的Fork分支

(完)

?

?

原創作品,轉載請標明:http://blog.geekcome.com/archives/252

數據庫–Cobar分布式數據庫集群MySQL中間件


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天摸夜夜摸夜夜狠狠摸 | 精品久久精品 | 九九99热久久精品在线9 | 91婷婷| 欧美国产精品久久 | 色淫影院 | 日韩一区二区三区精品 | 欧美二级毛片免费高清电影 | 国产九九在线视频 | 欧美久久天天综合香蕉伊 | 99久久久久久 | 99自拍视频在线观看 | 亚洲高清在线视频 | 一区二区三区在线 | 4hu在线| 黄色av免费看 | 成人年鲁鲁在线观看视频 | 日韩欧美在线中文字幕 | 五月缴情| 五月天色网址 | 99九九精品视频 | 99久久免费视频在线观看 | 亚洲精品免费观看 | 色老师影院 | 欧美一区二区三区成人 | 无遮挡又黄又爽又色的动态图1000 | 天天爱天天做天天干 | 最新欧美精品一区二区三区 | 在线免费黄色 | 在线观看日本中文字幕 | 黄色草逼视频 | 亚洲欧美国产视频 | 日韩欧美一区二区三区不卡在线 | 欧美大黑bbb| 国产牛仔裤系列在线观看 | 成人免费网址在线 | 成人影院在线 | 2017av伦理片| 日日摸夜夜添夜夜添精品视频 | 婷婷久久五月天 | 无码又黄又爽又舒服的A片 综合久久网 |