你們要的MyCat實現MySQL分庫分表來了

格伯納發表於2020-08-17

藉助MyCat來實現MySQL的分庫分表落地,沒有實現過的,或者沒了解過的可以看看

前言

在之前寫過一篇關於mysql分庫分表的文章,那篇文章只是給大家提供了一個思路,但是回覆下面有很多說是細節問題沒有提到。所以咔咔就在出了這篇文章。

本文只是針對其中的一個細節而已,比如如何落地MySQL的分庫分表,本文使用資料庫中介軟體MyCat來實現。

其中還有最多的回覆是分庫分表後的分頁查詢如何操作,這個問題也會在後文繼續寫到。

關於MySQL分庫分表這個真正落地使用中間還有很多的問題,咔咔儘量把解決方案都提供給大家,如你有更好的實現方案,評論區見哈!

本文使用環境

  • MySQL8.0
  • Centos7.3

一、MyCat安裝

避擴音示廣告問題,自己去開啟MyCat的官方地址去複製下載地址,這裡咔咔就不提供了。

咔咔使用的虛擬機器是centos7.3,需要環境的jdk已經有了,就不在寫教程了。如沒有的話,百度搜搜就可以了哈!

下圖就是安裝成功的安裝包 在這裡插入圖片描述進行解壓: tar -zxvf Mycat-server-1.6.7.1-release-20200209222254-linux.tar.gz,解壓成功後會在目錄下存在一個 mycat目錄。

二、建立一個新的MySQL使用者

需要建立一個新的MySQL使用者用來連線Mycat

以下就是建立使用者的流程


// 建立mycat使用者

CREATE  USER  'mycat'@ '%'  IDENTIFIED  BY  'mycat';
// 修改密碼
ALTER  USER  'mycat'@ '%'  IDENTIFIED  WITH mysql_native_password  BY ’Fang, 1996 '; 
// 重新整理許可權
FLUSH PRIVILEGES;

三、配置MyCat

配置項一:server.xml

此處使用上邊建立的新的MySQL使用者mycat,可以管理的邏輯庫為mycat_order,對應schema.xml中的<schema name="mydatabase"

框出的來的解讀一下

第一行:name值後邊是上邊建立的MySQL使用者 第二行:是mycat使用者的密碼 第三行:是資料庫

在這裡插入圖片描述配置項二:schema.xml

這個檔案主要修改連線其他資料庫的倆個節點

使用規則是mod-long這個需要注意一下子

在這塊的配置咔咔卡了很久,下面這個是咔咔已經配置好的 在這裡插入圖片描述

配置項三:rule.xml

這裡是order_id使用mod-long規則 在這裡插入圖片描述這個修改就是你有幾個節點就寫多少即可 在這裡插入圖片描述

三、資料庫資訊準備

在倆臺伺服器114.55.103.25和192.168.253.129建立資料庫kaka和kaka

分別建立t_order和t_order_detail倆張表

表結構如下




CREATE 

TABLE 

`t_order_detail` (

   `od_id`  int( 11 NOT  NULL,
   `order_id`  int( 11 DEFAULT  NULL,
   `goods_id`  int( 11 DEFAULT  NULL,
   `unit_price`  float  DEFAULT  NULL,
   `qty`  int( 11 DEFAULT  NULL,
  PRIMARY  KEY ( `od_id`)
ENGINE= InnoDB  DEFAULT  CHARSET=utf8;

CREATE  TABLE  `t_order` (
   `order_id` bagint( 20 NOT  NULL,
   `user_id`  int( 11 DEFAULT  NULL,
   `pay_mode`  tinyint( 4 DEFAULT  NULL,
   `amount`  float  DEFAULT  NULL,
   `order_date` datetime  DEFAULT  NULL,
  PRIMARY  KEY ( `order_id`)
ENGINE= InnoDB  DEFAULT  CHARSET=utf8;

四、測試連線並插入資料,檢視資料分佈狀態

連線: mysql -umycat -p -P8066 -h192.168.253.129 --default-auth=mysql_native_password

連線成功就可以看到我們的邏輯庫 在這裡插入圖片描述然後新增三個資料




insert 

into t_order (order_id,user_id,pay_mode,amount) 

values (

next 

value 

for MYCATSEQ_ORDER,

103,

1

Query OK,  1  row affected ( 0.01 sec)

insert  into t_order (order_id,user_id,pay_mode,amount)  values ( next  value  for MYCATSEQ_ORDER, 103, 1
Query OK,  1  row affected ( 0.01 sec)

insert  into t_order (order_id,user_id,pay_mode,amount)  values ( next  value  for MYCATSEQ_ORDER, 103, 1
Query OK,  1  row affected ( 0.01 sec)

這個時候我們檢視一下邏輯庫的t_order資料,這裡的order_id本應該是從1000開始的,之前咔咔做測試使用了一些。 在這裡插入圖片描述這時我們在來看192.168.253.129和114.55.103.25這倆臺資料庫的資料分佈

192.168.253.129資料庫  這個可以看到進入了倆條資料

在這裡插入圖片描述 144.55.103.25資料庫

這臺資料庫只進入了一條資料 在這裡插入圖片描述

五、分頁查詢,需要的資料在不同表的查詢

其實這一切mycat都已經幫你做好了

比如現在user_id為103的資料分佈分倆臺資料庫上,我們進行查詢

在這裡插入圖片描述還有分頁問題,都跟平時一樣的 在這裡插入圖片描述

六、總結

  • 資料庫使用MySQL8.0需要注意密碼問題
  • 在配置schema.xml時需要注意
  • 配置server.xml時邏輯庫在user使用者雖然不需要但是也需要改為一致
  • 修改MySQL使用者的host為%
  • 密碼驗證規則設定為mysql_native_password
  • 連線mycat時一定要帶著mysql_native_password這個引數

本文使用的mycat也是咔咔第一次接觸,也有很多的東西不明白。後邊咔咔也會一點點的補充這方面的知識,希望大家一起共同進步。

堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在諾大網際網路中咔咔的文章能帶給你一絲絲幫助。


來自 “ https://www.cnblogs.com/fkaka/p/13516475.html ”, 原文作者:咔咔-;原文連結:https://www.cnblogs.com/fkaka/p/13516475.html,如有侵權,請聯絡管理員刪除。

相關文章