CentOS安裝mycat+mysql5.6 完成資料庫分片
注:首先安裝mysql5.6 (本文中的mysql一定要安裝mysql5.6)
參考我的部落格:http://blog.csdn.net/a639735331/article/details/79073783
mycat 下載地址:
連結:https://pan.baidu.com/s/1cYLkGu 密碼:gbh0
1.:把MyCat的壓縮包上傳到linux伺服器
2.:解壓縮,得到mycat目錄
3.:進入mycat/bin,啟動MyCat
啟動命令:./mycat start
停止命令:./mycat stop
重啟命令:./mycat restart
注意:可以使用mysql的客戶端直接連線mycat服務。預設服務埠為8066 需要結合下文中 配置使用者名稱和密碼
4.檢測mycat是否啟動成功
ps aux|grep mycat
出現以上資訊說明啟動成功否則檢視日誌 cat root/mycat/logs/wrapper.log 出現以下錯誤錯誤: 代理丟擲異常錯誤: java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: bogon: bogon: 域名解析暫時失敗
5.則需要在/etc/hosts 新增 主機名字對映到IP地址的方法
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.40.116 bogon再次啟動 6.mycat分片
MyCAT支援水平分片與垂直分片:
水平分片:一個表格的資料分割到多個節點上,按照行分隔。
垂直分片:一個數據庫中多個表格A,B,C,A儲存到節點1上,B儲存到節點2上,C儲存到節點3上。
MyCAT通過定義表的分片規則來實現分片,每個表格可以捆綁一個分片規則,每個分片規則指定一個分片欄位並繫結一個函式,來實現動態分片演算法。
1、Schema:邏輯庫,與MySQL中的Database(資料庫)對應,一個邏輯庫中定義了所包括的Table。
2、Table:表,即物理資料庫中儲存的某一張表,與傳統資料庫不同,這裡的表格需要宣告其所儲存的邏輯資料節點DataNode。在此可以指定表的分片規則。
3、DataNode:MyCAT的邏輯資料節點,是存放table的具體物理節點,也稱之為分片節點,通過DataSource來關聯到後端某個具體資料庫上
4、DataSource:定義某個物理庫的訪問地址,用於捆綁到Datanode上
7.環境準備
在一個mysql伺服器中建立2個數據庫 db1 db3 分別代表2個數據節點 8.修改mycat配置檔案 1、Schema.xml作為MyCat中重要的配置檔案之一,管理著MyCat的邏輯庫、表、分片規則、DataNode以及DataSource。弄懂這些配置,是正確使用MyCat的前提。這裡就一層層對該檔案進行解析。schema 標籤用於定義MyCat例項中的邏輯庫Table 標籤定義了MyCat中的邏輯表dataNode 標籤定義了MyCat中的資料節點,也就是我們通常說所的資料分片。dataHost標籤在mycat邏輯庫中也是作為最底層的標籤存在,直接定義了具體的資料庫例項、讀寫分離配置和心跳語句。注意:若是LINUX版本的MYSQL,則需要設定為Mysql大小寫不敏感,否則可能會發生表找不到的問題。在MySQL的配置檔案中my.ini [mysqld] 中增加一行 lower_case_table_names = 1檔案路徑:/root/mycat/conf/schema.xml2、server.xml幾乎儲存了所有mycat需要的系統配置資訊。最常用的是在此配置使用者名稱、密碼及許可權。
檔案路徑:/root/mycat/conf/server.xml3、rule.xml裡面就定義了我們對錶進行拆分所涉及到的規則定義。我們可以靈活的對錶使用不同的分片演算法,或者對錶使用相同的演算法但具體的引數不同。這個檔案裡面主要有tableRule和function這兩個標籤。在具體使用過程中可以按照需求新增tableRule
和function。
此配置檔案可以不用修改,使用預設即可。
9.測試分片
配置完畢後,重新啟動mycat。使用mysql客戶端連線mycat,建立表。 create table TB_ITEM( id bigint primary key, title varchar(32) ) INSERT INTO TB_ITEM(ID,TITLE) VALUES(1,'22'); INSERT INTO TB_ITEM(ID,TITLE) VALUES(5000000,'22'); 這2條資料進入了db1資料庫INSERT INTO TB_ITEM(ID,TITLE) VALUES(5000001,'22');
這條資料進入了db2資料庫
由於配置的分片規則為“auto-sharding-long”,所以mycat會根據此規則自動分片。
每個datanode中儲存一定數量的資料。根據id進行分片
經測試id範圍為:
Datanode1:1~5000000
Datanode2:5000000~10000000
當10000001以上的id插入時報錯:
[Err] 1064 - can't find any valid datanode:TB_ITEM -> ID -> 10000001
此時需要新增節點了。