數據庫中間件01-認識mycat

簡述

Mycat是國產的一套免費開源的分佈式數據庫中間件。想必作開發或者運維的朋友對中間件這個詞應該是比較熟悉了,咱們見到過java中間件,消息中間件等等,這裏又來了一個數據庫中間件。那麼什麼是中間件呢,很容易理解,就是處在中間的物件。處在誰中間呢,必定是處在客戶端和服務端中間。那麼數據庫中間件就是處在數據庫的客戶端和數據庫服務端中間的那個東西。java

輸入圖片說明

原來咱們在鏈接數據庫的時候,咱們經過客戶端直接來鏈接咱們的服務端。那麼如今爲何要經過一箇中間件呢,這不是畫蛇添足嗎?對於咱們簡單的數據庫結構來說,這確實是畫蛇添足,可是對於龐大的數據庫集羣來說,中間件的做用可就大了。mysql

  • 咱們知道爲了提升數據庫的吞吐量,能夠對數據庫進行切分,能夠採用讀寫分離。
  • 爲了提升數據庫的可用性,能夠對數據庫進行高可用集羣。

如今咱們的客戶端面臨的再也不是單臺數據庫節點,而是多臺節點所組成的龐大的數據庫集羣。以讀寫分離爲例,可能有一個主節點,多個從節點,主節點負責數據的寫操做,從節點負責數據的讀操做,從節點作了負載均衡。那麼這個時候其實客戶端面臨就是兩臺機器,在客戶端中就要配置兩個數據源,在進行數據庫操做的時候就須要咱們的客戶端來進行判斷,究竟是選擇哪一臺機器來進行操做。兩個節點還比較好選擇,若是機器多的話,好比數據庫節點有5萬臺,那麼這個時候你還能再讓客戶端來進行選擇嗎?這個時候數據庫中間件就派上用場了。再好比咱們對數據庫進行拆分,分到不一樣節點的不一樣數據庫中,那麼咱們在進行sql操做的時候,咱們還要手動的再進行數據庫路由和表路由,這是一個重複造輪子的事情,爲了不每次都要這麼作,這個時候也就顯示出了數據庫中間件的做用。linux

數據庫中間件對客戶端屏蔽後端所鏈接的數據庫服務,而是對外提供一個門面,這個門面就是由中間件所管理的虛擬數據庫和虛擬表。爲何說是虛擬的呢,由於數據庫中間件並不進行數據的操做,數據的操做依然是分發到後端的數據節點上。後端的節點可能有多個,對於一張表,可能分佈到多個節點上,可是數據庫中間件展示給客戶端的就一張。這樣客戶端操做數據庫中間件的這一張表,就能夠操做到中間件所維護的多個節點的多個表,而客戶端並不須要關注是如何操做的。sql

mycat還有一個很是大的優點就是它並無本身建立一個協議,而是使用的mysql的協議,這樣咱們在操做mycat的時候,就像操做咱們的mysql同樣,能夠經過mysql的客戶端鏈接mycat,可使用mysql的命令等等,這樣對於mycat的入門就很是的簡單了。數據庫

mycat採用的編程語言是java,運行須要jvm的支持。另外由於mycat是開源的,對於mycat的改造是比較方便的,好比自定義切分的規則等等。編程

部署MyCat

MyCat是一個Java應用,所以部署MyCat首先要安裝Java。Java的安裝能夠參考Java安裝筆記。 Java有一大特性,就是一次編寫,處處運行,就是說Java的項目,能夠運行在多種平臺之上。也就是說,MyCat既能夠運行到Windows平時,也能夠運行在Linux平臺,也能夠運行在Mac上等等。只要是安裝了Java環境的機器上理論上是均可以運行的。 MyCat官方提供了Windows和Linux的下載,固然既然是開源的,也提供了源碼的下載。咱們能夠下載現成的軟件來部署,也能夠下載源碼進行編譯後部署。這裏咱們就下載Windows下編譯打包好的軟件來進行部署。後端

官網

http://www.mycat.io/

輸入圖片說明

輸入圖片說明

下載 win.tar.gz格式和linux.tar.gz格式。這裏不知道爲何把Windows下的也打成了tar包,不過好在WinRAR是支持tar格式的解壓的。下載到本地以後直接經過WinRAR來進行解壓就能夠了。解壓後的目錄結構以下app

輸入圖片說明

這個目錄結構算是比較中規中矩的了。對於熟悉Java的朋友來說這個結構能夠說一看就知道是幹嗎的。bin是存放的可執行文件。進到bin下,有以下文件負載均衡

輸入圖片說明

Windows + R 輸入 cmd 彈出一個dos命令行窗口。在窗口中切換到當前的路徑下,輸入 mycat.bat console 就能夠啓動了運維

啓動完畢以後,能夠經過MySQL的客戶端工具來進行鏈接,默認的用戶名爲root 密碼爲123456.

建議將加壓完畢的文件夾放到磁盤的根目錄下,好比放到c盤下或者d盤下。目錄中不要帶有中文。

Linux下安裝也是一樣,先安裝jdk,而後解壓就能夠了 tar -zxvf ..... 剩下的就都同樣了

其實mycat的單節點部署是很是簡單的。解壓以後就可使用,這也是Java項目的一大特徵吧。

不少狀況下若是是在虛擬機的環境下安裝,而虛擬機的內存在設置的比較小的狀況下,啓動會有問題,這裏須要修改mycat的配置文件,將指定的內存改小。

/conf/wrapper.xml這個文件

# Java Additional Parameters  
#wrapper.java.additional.1=  
wrapper.java.additional.1=-DMYCAT_HOME=.  
wrapper.java.additional.2=-server  
wrapper.java.additional.3=-XX:MaxPermSize=64M  
wrapper.java.additional.4=-XX:+AggressiveOpts  
wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G  
wrapper.java.additional.6=-Dcom.sun.management.jmxremote  
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984  
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false  
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false  
wrapper.java.additional.10=-Xmx4G  
wrapper.java.additional.11=-Xms1G

看到有 2G 4G 1G 這樣的,改爲 512M就能夠了。固然了若是你的內存設置的若是還小的,你能夠嘗試的改的再小一些。

MyCat用戶配置

咱們在首次使用客戶端登陸的時候,咱們可使用一個名字爲root,密碼爲123456的這麼一個帳戶。這個帳戶是MyCat給咱們建立的一個默認用戶,那麼這個用戶是在哪裏指定的,或者又如何建立的呢。 這個問題其實很是簡單,咱們看到在mycat的目錄下有一個conf目錄,這個目錄就是用來存放配置文件的目錄,其中有一個配置文件叫作server.xml。打開這個文件,咱們就很清楚用戶的配置了。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <user name="root">
        <property name="password">123456</property>
        <property name="schemas">TESTDB</property>

        <!-- 表級 DML 權限設置 -->
        <!--         
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>        
         -->
    </user>

    <user name="user">
        <property name="password">user</property>
        <property name="schemas">TESTDB</property>
        <property name="readOnly">true</property>
    </user>

</mycat:server>

去掉了一些其餘的配置,咱們能夠看到,經過user標籤就能夠配置要鏈接的用戶,經過嵌套property標籤來指定用戶的配置。好比password就是密碼,schemas就是可以鏈接的數據庫。在user下還能夠配置權限。

經過這個配置文件很清楚的就能夠了解到mycat的用戶配置。若是想要新增長一個用戶,那麼直接添加一個 user 標籤就能夠。在user標籤下指定密碼和所鏈接的數據庫。固然了,這裏的數據庫是虛擬的庫,是在schema.xml配置文件中配置的。多個schemas使用逗號隔開。

到這裏關於mycat的用戶配置就說完了。

連接

Mycat

相關文章
相關標籤/搜索