關於 MyCat 的鋪墊文章已經寫了三篇了:linux
今天終於能夠迎接咱們的大 Boss 出場了!數據庫
<!--more-->後端
前面文章咱們提到,若是數據量比較大的話,咱們須要對數據進行分庫分表,分完以後,本來存在一個數據庫中的數據,如今就存在多個數據庫中了,就像下面這樣:前後端分離
那麼此時 MyCat 所扮演的角色就是分佈式數據庫中間件!分佈式
MyCat 是一個開源的分佈式數據庫中間件,它實現了 MySQL 協議,在開發者眼裏,他就是一個數據庫代理,咱們甚至可使用 MySQL 的客戶端工具以及命令行來訪問 MyCat 。微服務
MyCat 如今已經不只僅只支持 MySQL 了,同時也支持 MSSQL、Oracle、DB二、以及 PostgreSQL等主流數據庫。甚至像 MongoDB 這種 NoSQL 也支持。工具
要搞 MyCat ,通常要先搭建好 MySQL 的讀寫分離,MySQL 的讀寫分離能夠參考鬆哥以前的這篇文章:性能
環境:測試
MyCat 使用 Java 開發,所以,運行 MyCat ,必定要具有 Java 環境,配置 Java 運行環境這個比較容易,網上資料也不少,我就不詳細介紹了。spa
Java 環境安裝好以後,首先下載 MyCat:
wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz
下載完成後,對下載文件進行解壓。
tar -zxvf Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz
解壓成功後,會出現一個 mycat
目錄,進入到 mycat/conf
目錄,對 mycat
進行配置:
首先來配置 schema.xml
文件:
schema
中指定邏輯庫的名字,邏輯庫是指 MyCat
中的庫,這個庫不存儲數據,數據存儲在 MySQL
中的物理庫中。dataNode
節點, dataNode
就是指數據庫存儲的位置dataNode
,dataNode
指定 dataHost
和物理庫的名字。dataHost
則配置 MySQL
的主機和從機的位置,登陸密碼等。主機和從機均可以配置多個。配置完 schema.xml 後 ,接下來配置 server.xml。
server.xml 中主要配置 MyCat 的登陸用戶名和密碼,以及須要操做的邏輯庫。
配置完成後,接下來就能夠啓動 MyCat 了 。
執行 MyCat 解壓目錄下的 bin 目錄下的 mycat 命令,能夠啓動 MyCat
./bin/mycat start
若是啓動後,提示沒法建立 mycat.pid
文件,就本身手動建立一個 mycat.pid
文件。啓動成功以後,就能夠在本地鏈接 MyCat
了,鏈接方式和 MySQL
同樣,惟一的區別在於端口號不一樣。
在鏈接 MyCat
以前,先在 MySQL
物理庫中建立 db1
、db2
以及 db3
三個數據庫。
使用 SQLyog
鏈接:
也能夠在 cmd
命令行登陸 MyCat
:
登陸成功後 ,在 MyCat
的窗口中,執行以下命令,建立表:
create table t_user (id integer primary key,username varchar(255))
執行成功後,咱們會發現物理庫中出現了相應的表。
接下來,手動往各個物理庫的物理表中存儲一條數據,而後在 MyCat 窗口中查詢:
這樣就能夠查詢到 三個庫中的三個表中的數據。
整個過程不難,可是有的小夥伴在第一次配置的過程當中仍是容易出錯,所以我這裏仍是來講兩句,出錯了要如何定位。
通常來講,配置 MyCat 出錯,問題可能發生在兩個階段。第一個階段就是客戶端鏈接 MyCat 出錯,第二個階段就是 MyCat 鏈接 MySQL 出錯。
不管你是使用 SQLyog 仍是 Navicat ,咱們在鏈接數據庫的過程當中,均可以先測試鏈接,不少人卡在這一步。
若是在測試鏈接的時候就鏈接不通,說明是 MyCat 的問題,這個時候檢查步驟以下:
這是第一種可能的問題,第二種問題就是測試鏈接沒問題,可是測試完後,卻鏈接不上。反映到 Navicat 上,就是測試鏈接沒問題,測完以後,點擊鏈接名要打開鏈接時,Navicat 就崩了,出現這個問題通常是 MyCat 在鏈接 MySQL 出問題了,這個時候就要去檢查 schema.xml 文件中關於 MySQL 主機和從機的配置是否正確,數據庫地址是否正確,用戶名密碼是否正確。
好了,本文主要簡單介紹了下 MyCat 的安裝問題,下篇文章咱們來看 MyCat 中的分片規則問題。
參考資料:
關注公衆號【江南一點雨】,專一於 Spring Boot+微服務以及先後端分離等全棧技術,按期視頻教程分享,關注後回覆 Java ,領取鬆哥爲你精心準備的 Java 乾貨!