MySQL分散式資料庫服務中介軟體--Cobar研究二,mysql中介軟體--cobar

來源:互聯網
上載者:User

MySQL分散式資料庫服務中介軟體--Cobar研究二,mysql中介軟體--cobar

這篇來學習下Cobar的具體使用配置

情境:

系統對外提供的資料庫名是UserCenter,並且其中有一張表u_user

該表的一部分資料被映射到物理資料庫alicobar_test_master的u_user上,另外一部分資料被映射到物理資料庫alicobar_test_shard的u_user上。

一.環境準備

OS:CentOS6.4 64位

DB:MySQL5.6.22

JDK:1.7

Cobar:1.2.7

MySQL-master      192.168.89.4       連接埠3306    使用者名稱:alicobar 密碼:alicobarpwd123

MySQL-backup      192.168.89.5      連接埠3306    使用者名稱:alicobar 密碼:alicobarpwd123

cobar-server           192.168.66.89

schema:alicobar_test_master、alicobar_test_shard,table:u_user  指令碼如下:

CREATE DATABASE /*!32312 IF NOT EXISTS*/`alicobar_test_master` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `alicobar_test_master`;/*Table structure for table `u_user` */CREATE TABLE `u_user` (  `code` bigint(19) NOT NULL,  `mobile` varchar(32) DEFAULT NULL,  `email` varchar(64) DEFAULT NULL,  `nickname` varchar(64) DEFAULT NULL,  `password` varchar(32) NOT NULL,  `create_time` datetime NOT NULL,  `modify_time` datetime DEFAULT NULL,  `status` int(10) NOT NULL COMMENT '使用者狀態:1 = 啟用;2 = 禁用;... ...',  PRIMARY KEY (`code`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='--使用者資訊'


 

CREATE DATABASE /*!32312 IF NOT EXISTS*/`alicobar_test_shard` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `alicobar_test_shard`;/*Table structure for table `u_user` */CREATE TABLE `u_user` (  `code` bigint(19) NOT NULL,  `mobile` varchar(32) DEFAULT NULL,  `email` varchar(64) DEFAULT NULL,  `nickname` varchar(64) DEFAULT NULL,  `password` varchar(32) NOT NULL,  `create_time` datetime NOT NULL,  `modify_time` datetime DEFAULT NULL,  `status` int(10) NOT NULL COMMENT '使用者狀態:1 = 啟用;2 = 禁用;... ...',  PRIMARY KEY (`code`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='--使用者資訊';


 

二.部署和配置

         MySQL主主同步就不再這裡詳細說明了,可以參考官網手冊

1.安裝JDK配置JAVA環境變數JAVA_HOME

下載JDK1.7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

安裝過程就不說了,下面簡單說下安裝後配置

 vi /etc/profile  在文本末尾添加

export JAVA_HOME=/usr/java/jdk1.7.0_75  
export JRE_HOME=/usr/java/jdk1.7.0_75/jre  
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
export PATH=$JAVA_HOME/bin:$PATH

添加java_home環境變數後,使profile立即生效

source /etc/profile

2.安裝cobar

:https://github.com/alibaba/cobar/wiki

下載Cobar壓縮檔並解壓,進入conf目錄可以看到schema.xml, rule.xml, server.xml等相關的設定檔

schema.xml配置如下(注意:schema.xml包含MySQL的IP、連接埠、使用者名稱、密碼等配置,您需要按照注釋替換為您的MySQL資訊。)

[root@localhost conf]# more schema.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cobar:schema SYSTEM "schema.dtd"><cobar:schema xmlns:cobar="http://cobar.alibaba.com/">  <!-- schema定義 -->  <schema name="UserCenter" dataNode="node1">    <table name="u_user" dataNode="node1,node2" rule="rule1" />  </schema>  <!-- 資料節點定義,資料節點由資料來源和其他一些參數組織而成。-->  <dataNode name="node1">    <property name="dataSource">      <dataSourceRef>source-master[0]</dataSourceRef>      <dataSourceRef>source-backup[0]</dataSourceRef>    </property>    <!--Cobar與後端資料來源串連池大小設定-->    <property name="poolSize">256</property>        <!--Cobar通過心跳來實現後端資料來源HA,一旦主要資料源心跳失敗,便切換到備資料來源上工作-->    <!--Cobar心跳是通過向後端資料來源執行一條SQL語句,根據該語句的返回結果判斷資料來源的運行情況-->    <property name="heartbeatSQL">select user()</property>    </dataNode>  <dataNode name="node2">    <property name="dataSource">      <dataSourceRef>source-master[1]</dataSourceRef>      <dataSourceRef>source-backup[1]</dataSourceRef>    </property>    <!--Cobar與後端資料來源串連池大小設定-->    <property name="poolSize">256</property>    <!--Cobar通過心跳來實現後端資料來源HA,一旦主要資料源心跳失敗,便切換到備資料來源上工作-->    <!--Cobar心跳是通過向後端資料來源執行一條SQL語句,根據該語句的返回結果判斷資料來源的運行情況-->    <property name="heartbeatSQL">select user()</property>  </dataNode>  <!-- 資料來源定義,資料來源是一個具體的後端資料連線的表示。-->  <dataSource name="source-master" type="mysql">    <property name="location">      <location>192.168.89.4:3306/alicobar_test_master</location> <!--注意:替換為您的MySQL IP和Port-->      <location>192.168.89.4:3306/alicobar_test_shard</location>    </property>    <property name="user">alicobar</property> <!--注意:替換為您的MySQL使用者名稱-->    <property name="password">alicobarpwd123</property> <!--注意:替換為您的MySQL密碼-->    <property name="sqlMode">STRICT_TRANS_TABLES</property>  </dataSource>  <dataSource name="source-backup" type="mysql">    <property name="location">      <location>192.168.89.5:3306/alicobar_test_master</location>      <location>192.168.89.5:3306/alicobar_test_shard</location>    </property>    <property name="user">alicobar</property>    <property name="password">alicobarpwd123</property>    <property name="sqlMode">STRICT_TRANS_TABLES</property>  </dataSource></cobar:schema>

 

rule.xml配置如下(本文以數字類型的code欄位作為拆分欄位,將資料拆分到兩個庫中。)

more rule.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cobar:rule SYSTEM "rule.dtd"><cobar:rule xmlns:cobar="http://cobar.alibaba.com/">  <!-- 路由規則定義,定義什麼表,什麼欄位,採用什麼路由演算法 -->  <tableRule name="rule1">    <rule>      <columns>code</columns>      <algorithm><![CDATA[ func1(${code}) ]]></algorithm>    </rule>  </tableRule>  <!-- 路由函數定義 -->  <function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong">    <property name="partitionCount">2</property>    <property name="partitionLength">512</property>  </function></cobar:rule>

server.xml配置如下

more server.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cobar:server SYSTEM "server.dtd"><cobar:server xmlns:cobar="http://cobar.alibaba.com/">    <!-- 系統參數定義,服務連接埠、管理連接埠,處理器個數、線程池等。 -->  <!--  <system>    <property name="serverPort">8066</property>    <property name="managerPort">9066</property>    <property name="initExecutor">16</property>    <property name="timerExecutor">4</property>    <property name="managerExecutor">4</property>    <property name="processors">4</property>    <property name="processorHandler">8</property>    <property name="processorExecutor">8</property>    <property name="clusterHeartbeatUser">_HEARTBEAT_USER_</property>    <property name="clusterHeartbeatPass">_HEARTBEAT_PASS_</property>  </system>  -->  <!-- 使用者訪問定義,使用者名稱、密碼、schema等資訊。 -->  <user name="test">    <property name="password">test</property>    <property name="schemas">UserCenter</property>  </user>  <!--  <user name="root">    <property name="password"></property>  </user>  -->  <!-- 叢集列表定義,指定叢集節點的主機和權重,用於叢集間的心跳和用戶端負載平衡。 -->  <!--   <cluster>    <node name="cobar1">      <property name="host">127.0.0.1</property>      <property name="weight">1</property>    </node>  </cluster>   -->     <!-- 隔離區定義,可以限定某個主機上只允許某個使用者登入。 -->  <!--  <quarantine>    <host name="1.2.3.4">      <property name="user">test</property>    </host>  </quarantine>  --></cobar:server>
三.啟動和使用Cobar

1.啟動Cobar,進入bin目錄可以看到Cobar的啟動、停止與重啟指令碼

報沒有log目錄,我們建立一個,再次啟動


 查看logs目錄下stdout.log, 啟動成功日誌如下

[root@localhost logs]# more stdout.log
17:31:10,939 INFO  ===============================================
17:31:10,940 INFO  Cobar is ready to startup ...
17:31:10,940 INFO  Startup processors ...
17:31:10,974 INFO  Startup connector ...
17:31:10,975 INFO  Initialize dataNodes ...
17:31:11,140 INFO  node1:0 init success
17:31:11,142 INFO  node2:0 init success
17:31:11,150 INFO  CobarManager is started and listening on 9066
17:31:11,152 INFO  CobarServer is started and listening on 8066
17:31:11,152 INFO  ===============================================

訪問Cobar同訪問MySQL的方式完全相同

常用訪問方式如下(注意:本文將Cobar部署在192.168.66.89這台機器上,否則請替換為您的Cobar所在IP,其他資訊不變) 

SQL執行語句時與使用傳統單一資料庫無區別

[root@localhost cobar-server-1.2.7]# mysql -h192.168.66.89 -utest -ptest -P8066 -DUserCenter

Warning: Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 5Server version: 5.1.48-cobar-1.2.7 Cobar Server (ALIBABA)Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+------------+| DATABASE   |+------------+| UserCenter |+------------+1 row in set (0.00 sec)mysql> show tables;+----------------------+| Tables_in_UserCenter |+----------------------+| u_user               |+----------------------+1 row in set (0.05 sec)mysql> 



 至此配置完成!

 

 

 

 

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.