mycat 入門教程


作用

mycat就是一個數據庫中間件,數據庫的代理,它屏蔽了物理數據庫,應用連接mycat,然后mycat再連接物理數據庫
它支持水平拆分(分庫分表,通過分庫達到分表),支持多種分片規則,比如范圍切片、自然月分片、hash取模分片等
它支持mysql、oracle、mongodb、sql server,並且支持數據庫集群。

使用網上的兩張圖片表示mycat解決的問題

沒有mycat前

這里寫圖片描述

有了mycat后

這里寫圖片描述

入門教程

  • github下載,Mycat-server-x.x.x-RELEASE-xxxxxxxxxx-win.tar.gz
    這里寫圖片描述

  • 解壓后,修改mycat_home\conf\schema.xml中的url、user、password
    這里寫圖片描述

  • 修改mycat_home\conf\server.xml
    這里寫圖片描述

  • 進入mycat_home\bin,啟動mycat
    這里寫圖片描述

  • 登錄物理數據庫,創建db1、db2、db3

 mysql -u[username] -p -P3306
   
   
  
  
          
  • 1
create database db1;
create database db2;
create database db3;
   
   
  
  
          
  • 1
  • 2
  • 3
  • 客戶端連接mycat,注意連接的是mycat而不是物理數據庫,mycat默認端口號8066
 mysql -u[username] -p -P8066
   
   
  
  
          
  • 1

這里寫圖片描述

  • 查看表,默認顯示schema.xml中配置的表,實際上此時物理數據庫沒有表,所以查詢employee會出錯
    登錄物理數據庫。
    這里寫圖片描述

  • mycat中,創建employee表,插入數據

create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
insert into employee(id,name,sharding_id) values(1,'leader us',10000);
insert into employee(id,name,sharding_id) values(2, 'me',10010);
insert into employee(id,name,sharding_id) values(3, 'mycat',10000);
insert into employee(id,name,sharding_id) values(4, 'mydog',10010);
  • mycat中,執行計划顯示來自兩個數據節點,與schema.xml中配置的一致
    這里寫圖片描述

  • 物理數據庫中,mycat創建了employee表,查看數據,可以發現數據實現了分片
    這里寫圖片描述

db1中的employee數據,id為1、3兩條數據
這里寫圖片描述

db2中的employee數據,id為2、4兩條數據
這里寫圖片描述

配置文件介紹

  • schema.xml 配置schema、datanode、datahost
    • schema就是邏輯數據庫,它包含table(邏輯表),表中有對應的datanode、分片規則
    • datanode,就是邏輯數據庫,含有物理數據庫名字
    • datahost,就是物理數據庫的ip地址,用戶名、密碼等
  • server.xml 配置連接mycat的用戶名、密碼、數據庫名
  • rule.xml 分片規則

后記

最初我是想着mycat可以實現同一個庫,某個表的切片而研究的mycat(比如db1中某個employee表,拆分為employee1-99,employee100-199,employee299-299….)。經過上述研究,發現mycat是通過分庫而達到的分表,所以是不支持我最初的需求的。

參考

https://github.com/MyCATApache/Mycat-doc/blob/master/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/mycat%E5%AE%89%E8%A3%85%E5%85%A5%E9%97%A8(%E4%B8%A4%E8%8A%82%E7%82%B9).md


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM