最近在梳理資料庫集群的相關操作,現在花點時間整理一下關于mysql資料庫集群的操作總結,恰好你又在看這一塊,供一份參考,本次系列終結大概包括以下內容:多資料庫安裝、mycat部署安裝、資料庫之讀寫分離主從復制、資料庫之雙主多重、資料庫分庫分表,每一個點,有可能會對應一篇或者多篇文章,由于還要繼續上班作業,所以本系列分享預計持續時間需要10天左右,有興趣的您可以持續關注,我是一個菜鳥,如果寫的不好的地方,望多多指點和包涵,
好了,直接進入本次的主題:mycat讀寫分離模式配置安裝,
一、簡介
mycat是干嘛的呢?首先我們來簡單的了解一下mycat到底是干嘛的:MyCat 是目前最流行的基于 java 語言撰寫的資料庫中間件,是一個實作了 MySQL 協議 的服務器,前端用戶可以把它看作是一個資料庫代理,MyCat 發展到目前的版本,已經不是一個單純的 MySQL 代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流資料庫,也支持 MongoDB 這種新型NoSQL 方式的存盤,未來還會支持更多型別的存盤,
簡單的說,Mycat是一個資料庫集群操作中間件,實作了資料庫的:讀寫分離、主從切換、分庫分表等業務,但是對我們程式員在使用上來說,是封裝的,和平時使用單庫單表操作無差別,其它的就不在此忽悠了,網上介紹多如牛毛,


二、環境準備
1、JDK安裝
前面已經介紹了mycat是用java寫的,所以第一個環境要求就是要jdk環境,并且jdk是1.8+,
Jdk安裝包下載,我最開始在官網下載,下載的速度超慢,今天就不推薦官網下載地址了,今天給大家推薦的是國內華為大佬提供的下載地址,當然上面包的更新速度沒有官網及時,但是夠用了,目前是13+,
直接上地址:https://repo.huaweicloud.com/java/jdk/13+33/?C=M&O=D
下載速度但是杠杠的,分分鐘下載完畢:

根據自己的電腦環境,選擇對應的包下載即可,由于本次是在win10上實操,所我現在的是win-64,
下載完畢后,直接點擊exe安裝包,傻瓜式的下一步下一步即可完成安裝操作,
安裝完畢后,接下來就是配置一下環境變數:
電腦-》屬性-》高級系統配置-》高級-》環境變數-》
在系統變數中的新建變數:
先新建變數名:JAVA_HOME,變數值為:
C:\Program Files\Java\jdk-13 (jdk安裝位置)
接著在PATH變數名中分別添加以下兩個值:
%JAVA_HOME%\bin
查看jdk是否安裝成功
進入cmd:
輸入:java -version

2、mycat下載
Mycat下載途徑有很多種,可以直接在mycat官網下載、github、其它地址下載,具體下載地址,可以根據自己的網路來選擇適合自己的下載方式
mycat官網下載: http://dl.mycat.io
github下載:https://github.com/MyCATApache/Mycat-download
其它下載地址:http://dl.mycat.org.cn/
http://www.mycat.org.cn/
我最終的下載地址是在http://dl.mycat.org.cn/上下載的,

根據機器環境和版本要求,選擇對應的版本的環境下載完成即可,
下載好mycat后,將檔案解壓到存放的檔案目錄,我只放在E盤下,只根據實際磁盤來自由選擇:E:\Program Files\mycat

三、mycat配置主從復制
Mycat的使用配置,我們先從最簡單的模式(主從復制)開始配置起走,Mycat主從復制主要組態檔有如下兩個檔案,兩個檔案都在mycat目錄\conf下,
-
server.xml: 組態檔包含了mycat的系統配置資訊
-
schema.xml:涵蓋了mycat的邏輯庫,表,分片規則,分片節點及資料源,
server.xml組態檔
server.xml主要涉及到兩個標簽的配置,
-
system標簽:主要配置系統相關的配置,在此不在做詳細的描述,根據實際需要在去配置;
-
user標簽:主要用于定義登錄mycat的用戶和權限,這也是本次需要介紹的配置節點,user標簽可以同時配置多個節點,
<!--配置mycat連接用戶資訊--> <!--name:用戶名--> <user name="root" defaultAccount="true"> <!--password:用戶登錄密碼--> <property name="password">xuyuanhong</property> <!--password:mysql對應的邏輯庫名稱,如果有多個庫,那么不同的庫之間通過,連接--> <property name="schemas">test</property> </user>
schema.xml組態檔
schema組態檔是我們這一次介紹的關鍵組態檔,該組態檔會配置具體是mycat邏輯庫和實際資料庫的映射關系,以及分庫分表規則,讀寫規則等等,本次還是只介紹其讀寫分離的配置方式,由于配置資訊很多,直接看詳細的配置說明,
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!--schema:mycat整個資料庫的映射框架配置,每一個mycat邏輯庫需要一個對于的配置節點--> <!--name:mycat的邏輯庫名稱,和sercer.xml中的邏輯庫名稱保持一致--> <!--checkSQLschema:是否檢測SQL,如果設定為 true,那么mycat會對傳遞的SQL做優化,主要去掉指定庫名稱,反之則不做任何處理,一般情況下設定false--> <!--sqlMaxLimit:最大連接數--> <!--dataNode:主要配置邏輯庫和實際庫的映射關系,會有一個專門的節點來配置,此處指需要系結對于的映射關系名稱即可--> <schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dntest"> </schema> <!--dataNode:配置mycat邏輯庫和實際庫的映射關系--> <!--name:映射關系名稱,要和上面的schema對應的dataNode節點名稱保持一致--> <!--database:物體庫映射的真實資料庫名稱--> <!--dataHost:具體的資料庫連接屬性節點名稱--> <dataNode name="dntest" database="test" dataHost="hosttest" /> <!--dataHost:配置資料庫的連接資訊和路由規則資訊--> <!--name:資料連接地址資訊名稱,與上面的dataNode節點中的dataHost名稱對應--> <!--maxCon:指定每個讀寫實體連接池的最大連接--> <!--minCon:指定每個讀寫實體連接池的最小連接,初始化連接池的大小--> <!--balance:查詢操作負載均衡型別,目前的取值有以下4種 balance=0: 不開啟讀寫分離,所有讀操作都發送到當前可用的writeHost上, balance=1: 全部的readHost與Stand by writeHost都參與select陳述句的負載均衡, 簡而言之,當雙主雙從模式(M1->S1, M2->S2,并且M1與M2互為主備)時,在正常情況下,M2,S1和S2都參與select的負載均 balance=2: 所有的讀操作都隨機在writeHost,readHost上分發, balance=3: 所有的讀請求都隨機分配到writeHost對應的readHost上執行,writeHost不負擔讀壓力,注意balance=3只在mycat1.4之后版本中有效, 在實際使用中,針對讀寫分離模式,我們一般都配置為3 --> <!--writeType:寫操作負載均衡型別,目前的取值有3種: writeType=“0”, 所有寫操作都發送到可用的writeHost上, writeType=“1”,所有寫操作都隨機的發送到readHost, writeType=“2”,所有寫操作都隨機的在writeHost、readhost分發, 毫無疑問,在實際使用過中,都會配置為0 --> <!--dbType:指定后端連接的資料庫型別,目前支持二進制的mysql協議,還有其他使用JDBC連接的資料庫,如mongodb,spark等--> <!--dbDriver:指定連接后端資料庫使用的Driver,目前可選的值有native和JDBC, 使用native的話,因為這個值執行的是二進制的mysql協議,所以可以使用mysql和maridb, 其他型別的資料庫則需要使用JDBC驅動來支持 --> <!--switchType:切換方式: -1:表示不自動切換, 1:默認值,表示自動切換 2:表示基于MySQL主從同步狀態決定是否切換,心跳陳述句: show slave status. 3:表示基于mysql galary cluster的切換機制,適合mycat1.4之上的版本,心跳陳述句show status like "%esrep%"; --> <dataHost name="hosttest" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <!--心跳檢測陳述句,mycat也是要實時的去檢測每一個映射資料庫的狀態,通過執行該陳述句的回傳來判斷資料庫是否在線--> <heartbeat>select user()</heartbeat> <!-- writeHost:寫服務器映射關系配置 --> <!-- url:資料庫地址(ip+埠號) --> <!-- user:資料庫連接用戶名(注意改賬號一定要授權可以遠程訪問改資料庫) --> <!-- password:資料庫連接密碼 --> <writeHost host="hostM1" url="192.168.3.205:3306" user="root" password="xuyuanhong"> <!--readHost:讀服務器映射關系配置,可以配置多個節點,多個節點就代表多個從資料庫--> <readHost host="hostS1" url="192.168.3.205:3307" user="root" password="xuyuanhong"> </readHost> </writeHost> </dataHost> </mycat:schema>
四、mycat啟動及其常用操作命令
- 首先需要進入到mycat安裝目錄的bin目錄下
cd E:\Program Files\mycat\bin
- 開啟mycat
mycat.bat start
- 停止mycat
mycat.bat stop
- 重啟mycat
mycat.bat restart
- 查看mycat狀態
mycat.bat status

五、mycat中遇到的問題解決
其實在實際mycat配置時,我也不是一次配置成功的,也遇到了兩個小問題,現在羅列出來,如果剛剛你也遇到了正好可以解決掉,
1、Unrecognized VM option 'AggressiveOpts'
解決方式:打開wrapper.conf組態檔,找到AggressiveOpts并將整行注釋掉即可,如下圖所示:

2、Could not create the Java Virtual Machine.
該問題有可能是設定才記憶體超出本地環境實際記憶體,處理方式也簡單,直接將wrapper.conf對應的記憶體改小即可,如下圖位置:

有關mycat的部署安裝、讀寫分離就分享到這兒了,下一篇將和大家一起分享mycat的多主多重配置,有興趣的小伙伴,可以持續關注,謝謝!
END
為了更高的交流,歡迎大家關注我的公眾號,掃描下面二維碼即可關注,謝謝:

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/1598.html
標籤:ASP.NET
上一篇:第三方系統向泛微OA系統推送訊息
