1. 程式人生 > >MYCAT-SERVER1.5.1簡易入門教程

MYCAT-SERVER1.5.1簡易入門教程

一、安裝java

因Mycat是用java開發的,所以需要在實驗環境下安裝java,官方建議jdk1.7及以上版本

將檔案上傳到/usr/local/目錄下,解壓jdk-7u79-linux-x64.tar.gz檔案。

命令:

# tar -zxvf jdk-7u79-linux-x64.tar.gz

二、MYSQL配置 mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz

安裝步驟略

三、MYCAT配置 

上傳檔案到/usr/local/目錄下

# tar -zxvf Mycat-server-1.5.1-RELEASE-20160405120037-linux.tar.gz

# cd mycat/conf

#修改MYCAT/conf/wrapper.conf 檔案中jdk/java路徑,並儲存退出。

# vim wrapper.conf


# vim schema.xml   編輯MYCAT邏輯資料庫配置檔案。



dataHost屬性解析:

name:唯一名稱,maxCon:物理資料庫,最大連線執行緒,minCon為最小,balance=0:不開啟讀寫分離模式(即沒主從查詢分離),writeType=0:不開啟負載均衡,當第一個writeHost連線失敗,才用第二組。dbType:資料庫型別,dbDriver:資料庫驅動連線方式,其它資料庫可採用jdbc。switchType=1:自動切換,配置主從後,會根據主從心跳檢測切換。heartbeat:MYCAT與資料庫之間通訊心跳檢測語句。writeHost物理資料庫連線地址及使用者名稱密碼。

以上屬性詳解,請閱讀MYCAT指南。

修改資料庫連線地址後,儲存退出,如下圖


啟動MYCAT,日誌目錄下,顯示錯誤。原因是,沒有在/etc/hosts下配置mycatdb


配置mycatdb


修改下MYCAT日誌檔案級別,方便觀察,預設INFO級別。

# vim /usr/local/mycat/conf/log4j.xml


再次啟動MYCAT服務,檢視wrapper.log,mycat.log



啟動MYCAT成功,並建立了10個數據庫連線,連線三個邏輯節點對應的物理資料庫,服務埠8066,管理埠9066等。。。

檢視MYCAT/conf下,server.xml配置


連線8066埠



連線MYSQL資料庫,檢視資料庫及表,MYCAT邏輯資料庫,在物理資料庫上,並未真實存在。


在MYSQL物理資料庫上,建立TESTDB邏輯資料庫,三個分片節點對應的儲存庫名稱(這裡需要手工在MYSQL上建立)


在MYCAT上建立邏輯表,資料來源無法連線第一個資料來源,檢視MYCAT日誌,也說資料庫無法連線。

建立Travelrecord表 

create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);



解決辦法,因為MYCAT採用遠端連線方式,連線MYSQL,先檢視MYCAT連線使用者schema.xml中writeHost標籤裡使用者名稱是否有連線MYSQL許可權。


root使用者僅允許本地連線,不允許IP地址連線,給root使用者授權。

#允許root使用者遠端訪問,“%”表示,允許任何IP地址通用使用者名稱密碼連線。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123123' WITH GRANT OPTION; 
#重新整理許可權
mysql> FLUSH PRIVILEGES; 

再到MYCAT裡建立邏輯表,並檢視,該邏輯表,被分別建立到三個邏輯節點對應的資料庫上。


在MYSQL物理庫上檢視,通過MYCAT,將表分別建立在db1、db2、db3,三個資料庫下。


在MYCAT上插入表資料,資料插入成功。


在MYSQL上檢視


三條記錄,通過MYCAT分片規則,被分配到了,三個不同database上。

分片規則定義檔案 mycat/conf/rule.xml,擷取rule.xml中片段展示

<tableRule name="auto-sharding-long">  <!--分片規則名稱-->
                <rule>
                        <columns>id</columns><!--分片欄位,是指要分片的表中欄位-->
                        <algorithm>rang-long</algorithm><!--分片方法-->
                </rule>
        </tableRule>

<function name="rang-long" <!--分片方法定義-->
                class="org.opencloudb.route.function.AutoPartitionByLong"><!--分片底層方法-->
                <property name="mapFile">autopartition-long.txt</property><!--分片範圍定義檔案-->
        </function>

檔案autopartition-long.txt內容: