沈陽網(wǎng)站建設(shè)選網(wǎng)龍百度在線問答
一、mycat概述
mycat是阿里巴巴企業(yè)下的開源的,基于JAVA語言編寫的MySQL數(shù)據(jù)庫中間件,可以像使用MySQL一樣來使用Mycat,對于開發(fā)人員來說根本感覺不到mycat的存在。之前在國內(nèi)使用數(shù)據(jù)庫分庫分表,讀寫分離最主流的就是使用mycat,但是截止到今日2023-12-13日,mycat的網(wǎng)站的下載鏈接已經(jīng)不能打開了,不知道是服務(wù)器暫時出問題,還是沒有人維護(hù)了,以后都不在支持更新下載了,但是作為曾經(jīng)的主流中間件,我個人覺得還是有必要學(xué)習(xí)一下。我之前保留了Mycat1.6的linux版本現(xiàn)在分享給大家
mycat1.6: 鏈接: https://pan.baidu.com/s/1fq8LddDexRBqzBhZi4760Q 提取碼: hjif
JDK8: 鏈接: https://pan.baidu.com/s/1sQhSR5GgmxB3STpihOqCAw 提取碼: 0b6l
mysql-connector的jar包:鏈接: https://pan.baidu.com/s/1kxhqT8eB-V5Az5qpxT8nhw 提取碼: 23pu
?
二、準(zhǔn)備測試環(huán)境
2.1 JDK 安裝
因為mycat是基于JAVA語言編寫的,所以在安裝mycat的時候,需要先安裝JDK,mycat需要的JDK8,可以使用我給的JDK鏈接下載后安裝,也可以直接在線安裝。
在線安裝指令:yum install java-1.8.0-openjdk* -y (基于centos7上的安裝)
安裝好之后,運行 java -version,看到一下輸出表示安裝成功
[root@localhost centos7]# java -version openjdk version "1.8.0_392" OpenJDK Runtime Environment (build 1.8.0_392-b08) OpenJDK 64-Bit Server VM (build 25.392-b08, mixed mode)
2.2 MySQL服務(wù)器準(zhǔn)備
因mycat主要功能有分庫分表和讀寫分離,所以至少需要準(zhǔn)備兩臺具有mysql(8.0.27)服務(wù)的服務(wù)器,這里我準(zhǔn)備了三臺測試服務(wù)器.
服務(wù)器1:192.168.3.90 安裝了JDK8, MySQL-8.0.27
服務(wù)器2:192.168.3.91 安裝了JDK8, MySQL-8.0.27,mycat1.6
服務(wù)器3:192.168.3.92 安裝了JDK8, MySQL-8.0.27
說明服務(wù)器1和服務(wù)器3作為mysql服務(wù)器使用,服務(wù)器2即作為mysql服務(wù)器使用,也作為mycat服務(wù)器使用。
? 2.3 Mycat準(zhǔn)備
將下載好的 Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz 和?mysql-connector-java-8.0.27.jar?放在192.168.3.91服務(wù)器的 /usr/local/下
? 解壓 Mycat :?tar -zxvf Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz
解壓之后就會有一個mycat文件夾
三、Mycat文件目錄
進(jìn)入到mycat文件夾,可以看到里面有5個文件夾一個版本說明的文件
- bin: 存放可執(zhí)行文件,用于啟動停止mycat
- conf: 存放mycat的配置文件
- lib: 存放mycat的項目依賴包(jar包)
- logs: 存放mycat的日志文件
說明:因為Mycat1.6 默認(rèn)的mysql連接器是是mysql5+的版本,現(xiàn)在我的mysql版本都是8+的,所以需要將mycat的mysql連接器替換一下,而替換的文件,就是我給大家下載的mysql-connector-java-8.0.27.jar,這是mysql8+的的連接器。
替換步驟,首先進(jìn)入到mycat的lib文件中找到:mysql-connector-java-5.1.35.jar ,然后刪除,在將我給大家的?mysql-connector-java-8.0.22.jar 復(fù)制進(jìn)來
注意:復(fù)制的這個進(jìn)入是沒有執(zhí)行權(quán)限了,需要給mysql-connector-java-8.0.27.jar 增加執(zhí)行權(quán)限:chmod 777 mysql-connector-java-8.0.27.jar
?四、mycat邏輯結(jié)構(gòu)
說明:mycat只做邏輯處理,并不保存數(shù)據(jù),其真實數(shù)據(jù)仍然是保存在mysql數(shù)據(jù)庫中的。
?五、mycat小案例
5.1 需求
現(xiàn)有tb_order數(shù)據(jù)表,表中數(shù)據(jù)量很大,磁盤IO及容量都達(dá)到瓶頸,現(xiàn)在需要對tb_order表進(jìn)行數(shù)據(jù)分片,分為三個數(shù)據(jù)節(jié)點,每個節(jié)點主機位于不同的服務(wù)器上,在dataNode1,dataNode2和dataNode3中TB_ORDER的表結(jié)構(gòu)一樣,保存的數(shù)據(jù)不一樣,即采用水平分表的策略保存數(shù)據(jù)。結(jié)構(gòu)如下:
5.2 創(chuàng)建數(shù)據(jù)庫
原始數(shù)據(jù)庫:里面處理系統(tǒng)創(chuàng)建的數(shù)據(jù)庫外,沒有任何自己創(chuàng)建的數(shù)據(jù)庫。
現(xiàn)在需要根據(jù)需求在每個服務(wù)器上都創(chuàng)建db01數(shù)據(jù)庫
5.3 mycat分片配置schema.xml
在mycat中做分片配置的主要是在conf文件夾下面的schema.xml中配置,里面有關(guān)于邏輯庫、邏輯表、數(shù)據(jù)節(jié)點、節(jié)點主機、分片規(guī)則等配置。
? 修改后的schema.xml如下
5.4 mycat 用戶及權(quán)限配置server.xml
server.xml的配置比較多,我們只需要更改其中user的部分
?
5.5 mycat 啟動
切換到mycat的安裝目錄中的bin文件夾下,執(zhí)行如下指令 ./mycat start (啟動) 和 ./mycat stop (停止),mycat 默認(rèn)端口 8066
注意:我們要想判斷mycat是否啟動成功可以使用 tail -f /usr/local/mycat/logs/wrapper.log 查看日志,如果日志中出現(xiàn)"MyCAT Server startup successfully. see logs in logs/mycat.log" 則說明啟動成功
5.6 mycat 登錄
登錄指令:mysql -h 192.168.3.91 -P 8066 -uroot -p, 這個指令是和普通的mysql數(shù)據(jù)庫連接是一樣的,所以使用mycat對程序員來說是無感的。
然后創(chuàng)建TB_ORDER表,這是報了一個錯誤:ERROR 1105 (HY000): backend connect: java.lang.IllegalArgumentException: Invalid DataSource:0
這里報的錯誤未必就是其具體的錯誤描述,至于到底是什么錯誤,需要我們?nèi)タ匆幌耺ycat.log中的具體問題
這個錯誤表明數(shù)據(jù)庫服務(wù)器在192.168.3.30上因為連接錯誤被阻止了。你可能在某個地方有一臺嘗試連接到這個數(shù)據(jù)庫服務(wù)器的設(shè)備或應(yīng)用程序,導(dǎo)致了連接錯誤。需要使用mysqladmin -u root -p flush-hosts 解除阻止就行了。
注意:mysqladmin是mysql的指令,需要進(jìn)入到mysql安裝目錄下的bin目錄下,或者將該指令添加到了環(huán)境變量中,方可直接使用。
? ?
在此創(chuàng)建表,即可成功
關(guān)于mycat小案例,啟動mycat,使用mycat連接數(shù)據(jù)庫,使用mycat創(chuàng)建表就演示到這里,后面的博客繼續(xù)講解mycat的使用