基於MySQL8.0的MyCat部署實踐

目錄

 

一、MySQL8.0的下載安裝

1.MySQL8.0下載

2.配置初始化my.ini文件

3.初始化MySQL8

4.安裝和啓動MySQL服務

5.修改MySQL初始密碼 

6.設置允許IP地址登陸MySQL

7.允許遠程IP連接MySQL

8.查看上述步驟創建的用戶

9.使用Navicat進行遠程連接

二、MyCat的安裝和部署

1.JDK的下載安裝

(1)創建安裝目錄文件夾

(2)jdk安裝

(3)jre安裝

(4)配置環境變量

(5)測試安裝成功與否

2.MyCat的下載安裝

(1)下載MyCat

(2)配置MyCat環境變量

(3)修改配置文件wrapper.conf

3.MyCat的配置

(1)配置server.xml

(2)配置schema.xml

(3)配置rule.xml

3.MyCat的啓動


一、MySQL8.0的下載安裝

1.MySQL8.0下載

地址爲:MySQL8.0官網下載,點擊紅框的下載

點擊下載之後,會提示你註冊登錄,不要管,選擇No,Thanks直接下載。下載完之後解壓,目錄是這個樣子:

 

解壓後,在硬盤上找一個位置,一般大家喜歡放在C盤,如果數據文件比較大,建議放在空間比較富裕的位置即可,我這裏放到了E盤。

2.配置初始化my.ini文件

默認解壓包裏面沒有這個文件,需要自己手動添加一個,添加內容如下


[mysqld]
# 設置3306端口
port=3306
# 設置mysql的安裝目錄
basedir=E:\mysql8
# 設置mysql數據庫的數據的存放目錄
datadir=E:\mysql8\Data
# 允許最大連接數
max_connections=200
# 允許連接失敗的次數。
max_connect_errors=10
# 服務端使用的字符集默認爲utf8mb4
character-set-server=utf8mb4
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
# 默認使用“mysql_native_password”插件認證
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8mb4
[client]
# 設置mysql客戶端連接服務端時默認使用的端口
port=3306
default-character-set=utf8mb4

          注意,配置文件中的路徑要和實際存放的路徑一致。

3.初始化MySQL8

爲了避免安裝中錯誤,我們最好使用管理員身份運行CMD命令行窗口,並且通過cd命令進入MySQL的安裝目錄的bin目錄

 

然後運行命令mysqld --initialize ,如果遇到“無法啓動此程序,因爲計算機中丟失VCRUNTIME140.dll 嘗試重新安裝此程序以解決此問題” 這個錯誤,則需要安裝Visual C++ Redistributable for Visual Studio 2015   。再接着如果遇到“無法啓動此程序,因爲計算機中丟失api-ms-win-crt-runtime-|1-1-0.dll 嘗試重新安裝此程序以解決此問題  這個錯誤, 則需要下載並安裝Microsoft .NET Framework 4.6.1  ;如果還是出現第二個錯誤,則需要下載並安裝 基於 x64 的系統的 Windows 7 更新程序 (KB2999226)  。重新啓動電腦後,使用cmd命令窗口再進入MySQL的bin目錄 ,並運行mysqld --initialize 。運行完命令後,會在MySQL的目錄下面產生一個“data”文件夾,如下圖所示: 

進入“data”文件夾,找到一個以“*.err”爲後綴的文件,並用記事本格式打開,如下圖  

上圖的第二張圖片,找到“localhost”,後面一串字符就是MySQL的初始密碼“ds5i6l_?2lmS”。  這個密碼暫時要記住後面登

陸的時候還需要這個密碼。                                            

4.安裝和啓動MySQL服務

還在命令行窗口執行命令:mysqld --install

 

不出意外的話會提示安裝成功,如紅框中所示。

 安裝成功後,繼續執行命令:net start mysql

   

不出意外的話會提示服務成功啓動

5.修改MySQL初始密碼 

還記得我們之前初始化的時候默認的密碼嗎,對,就在以“*.err”爲後綴的文件,並用記事本格式打開, 我這裏的初始化密碼是“ds5i6l_?2lmS”。接着在命令行窗口鍵入命令:mysql -u root -p      ,命令行會提醒你鍵入密碼,這時,把我們的初始化密碼“ds5i6l_?2lmS”粘貼進去,回車,不出意外就會登陸成功,如下圖所示。      

 

現在,我們修改密碼,還在剛纔的命令行窗口,我們鍵入“ALTER USER 'root'@'localhost' IDENTIFIED BY 'ghy122';”,這裏“ghy122”是我的新密碼,大家根據自己情況換成自己的密碼即可。

 

不出意外,系統提示我修改成功,大家可以退出窗口,使用新密碼登陸一下試試看。

6.設置允許IP地址登陸MySQL

MySQL作爲數據庫,一般放在服務器上,而我們開發端需要使用IP地址來連接,如果僅僅上面的步驟,還不能讓我們進行IP連接,需要把MySQL所在的IP地址加入到Host中去。假設我這臺安裝MySQL的機器的IP是“172.16.20.128”,那麼我需要在命令行窗口鍵入這個命令:create user 'root'@'172.16.20.128' identified by 'ghy122';   記住,後面的分號不能省略。

 

接着,我們賦予這個新建的用戶管理員權限:grant all privileges on *.* to 'root'@'172.16.20.128';記住,後面的分號不能省略。                                                                                                                                                                                        

 

 最後,我們刷新一下權限:flush privileges;

7.允許遠程IP連接MySQL

剛纔第6條中說到,MySQL是部署在服務器上,假設我的開發端是另外一臺機器,IP地址爲“172.16.20.120”,和MySQL所在的服務器在同一個局域網,要允許開發端連接服務器端的MySQL,也需要把開發端的IP創建爲一個用戶放在MySQL的用戶表中。其實跟第六步大同小異,首先鍵入命令:create user 'root'@'172.16.20.120' identified by 'ghy122'; 注意這裏的IP地址就是我開發端機器的IP地址,爲了方便記憶,密碼我設置爲一樣的。

 

 第二步,爲剛創建的用戶賦予管理員權限,grant all privileges on *.* to 'root'@'172.16.20.120';

 

 第三步,刷新權限:flush privileges;

8.查看上述步驟創建的用戶

首先,通過命令show databases;  在命令行窗口顯示MySQL的所有數據庫

 第二步,通過命令use mysql;     切換到mysql數據庫

 第三步,通過命令show tables;    顯示mysql數據庫的所有表

 

 第四步,查詢user表中的數據,select Host, User from user;

 

通過上述步驟,我們可以在命令行窗口中查看到,之前幾個步驟建立的root管理員權限的用戶。

9.使用Navicat進行遠程連接

首先,我是在開發端也就是IP地址爲“172.16.20.120”這臺機器上,打開Navicat並建立一個連接

 

 第二步,填寫連接信息                                                                                                                                                              

 

 連接名可以自己隨意起一個名字,這裏我寫的128對應MySQL所在服務器IP地址的後三位,方便記憶。然後主機裏面填寫的就是MySQL所在服務器的IP地址,接着密碼就是“ghy122”,這就是我爲什麼用統一的密碼,不然如果MySQL數據庫多了,每個密碼不一樣就不方便記憶,這裏就偷個懶吧。最後測試連接,不出意外的話會提示連接成功。如果提示“ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)”這個錯誤,有可能是你的Windows防火牆沒有對MySQL開放,需要你在控制面板-系統和安全-運行程序通過Windows防火牆,這裏面把MySQL安裝目錄下的mysql.exe和mysqld.exe添加到允許的程序裏。或者就是你的服務沒有正常啓動。

 

  注意,這裏Navicat是我在開發端(IP地址爲“172.16.20.120”)安裝的,服務器端並沒有安裝Navicat。以上就是MySQL的安裝,希望對大家有用。

二、MyCat的安裝和部署

1.JDK的下載安裝

JDK是MyCat必須安裝的環境,因此要在MyCat安裝之前配置好JDK環境變量。值得注意的是,當前的MyCat貌似對最新的JDK13不太支持,我開始用的最新的JDK13,啓動MyCat的時候一直出錯,找不到原因,折騰了好久,換了JDK10就好了,所以我這裏就用JDK10了,官網下載JDK10需要登錄註冊非常麻煩,我這裏提供一個迅雷下載地址,讀者可自行下載JDK10迅雷下載鏈接。我這裏的下載鏈接是64位的,32位系統的讀者可自行網上搜索。

(1)創建安裝目錄文件夾

首先第一步,要在空間富裕的磁盤下創建Java的安裝目錄,我這裏在C盤根目錄下創建了一個“java”文件夾,然後在“java”目錄裏面創建了“jdk”和“jre”兩個文件夾。

(2)jdk安裝

雙擊下載好的jdk-8u221-windows-x64.exe,進入JDK安裝界面,這裏更改路徑到第一步創建好的“jdk”文件夾。

(3)jre安裝

在上面第二步點擊“下一步”後,jdk安裝完成,會提示進行jre的安裝,這裏更改路徑到第一步創建好的“jre”文件夾。

(4)配置環境變量

右鍵我的電腦->屬性->高級系統設置->環境變量,添加一個系統變量“JAVA_HOME”,值爲“C:\Java\jdk

右鍵我的電腦->屬性->高級系統設置->環境變量,在系統變量新建classpath,輸入變量值“%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

在系統變量path下,編輯,在尾部追加“%JAVA_HOME%\bin”,前面記得帶分號,點確定

 

(5)測試安裝成功與否

在java文件夾下新建test.java文件用於測試

public class test
{
	public static void main(String[] agrs)
	{
		System.out.println("hello world");
	}
}

然後以管理員身份打開cmd命令行窗口,並且cd進入java目錄,並鍵入命令:javac test.java

如果沒有報錯,則表示編譯成功,並在java目錄下產生一個“test.class”文件,接着鍵入命令:java test

不出意外的話,程序會成功運行。這就表示Java運行環境成功安裝,下面可以進行MyCat的安裝了。

2.MyCat的下載安裝

(1)下載MyCat

官網下載地址MyCat1.6.7,打開之後選擇Windows版本“Mycat-server-1.6.7.3-release-20190927161129-win.tar”。

下載完成後,解壓“Mycat-server-1.6.7.3-release-20190927161129-win.tar”到磁盤空間富裕的硬盤位置。

(2)配置MyCat環境變量

右鍵我的電腦->屬性->高級系統設置->環境變量,添加一個系統變量“MYCAT_HOME”,值爲“D:\mycat

在系統變量path下,編輯,在尾部追加“%MYCAT_HOME%\bin”,前面記得帶分號,點確定

(3)修改配置文件wrapper.conf

在MyCat的安裝目錄下面找到“conf”文件夾,找到裏面的“wrapper.conf”文件,並打開。

這裏僅僅需要修改wrapper.java.command=C:\java\jdk\bin\java.exe,也就是讓MyCat識別我們的Java目錄

3.MyCat的配置

(1)配置server.xml

在MyCat的安裝目錄下面找到“conf”文件夾,找到裏面的“server.xml”文件,並打開。創建一個MyCat用戶,並指定該用戶可訪問的虛擬數據庫。注意,要把默認的最後一個user註釋掉。我這裏創建了一個用戶“thisCat”,相當於MySQL數據庫的“root”;接着我創建了一個名爲“CatDb”的“schemas”,相當於MySQL數據庫的一個新建數據庫。這裏配置的用戶和數據庫,其實都是虛擬的,MyCat會通過“schema.xml”配置文件,幫你映射到實際的MySQL數據庫上的。

(2)配置schema.xml

在MyCat的安裝目錄下面找到“conf”文件夾,找到裏面的“schema.xml”文件,並打開。

在配置“schema.xml”之前,我要着重說一下我的MySQL部署情況。首先我們使用MyCat是爲了分佈式數據庫,假設我有一個數據庫表“devices”,這個數據庫表的數據量太大了,一天的數據量就有30G左右,一個服務器容量有限,爲了不讓服務器崩掉,我們使用MyCat和MySQL進行分佈式設計,因此,根據這個需求,我使用三臺服務器進行分佈式配置。我在三臺機器上,都安裝了MySQL,他們的IP地址分別是“192.168.22.120”、“192.168.16.137”、“192.168.16.138”,在服務器“192.168.22.120”裏的Navicat裏面分別命名爲“120”、“137”、“138”三個連接。其中,“192.168.22.120”這個服務器是我安裝MyCat的服務器,其他兩個不需要安裝MyCat和Navicat。

在上面圖片中可以看到,“192.168.22.120”、“192.168.16.137”、“192.168.16.138”這三個服務器上的MySQL中,分別有“smartcover”、“sd”、“smart”這三個數據庫(schema),這三個數據庫(schema)你可以命名成一樣的名字也可以命名爲不一樣的名字。但是“smartcover”、“sd”、“smart”這三個數據庫(schema)裏面都含必須含有名字一樣的“devices”這個數據庫表,這個數據庫表就是需要我們用分佈式技術把數據分佈式存放的數據庫表,其他數據庫表數據量小,就不需要分佈式存放了。

上面詳細說明了,我準備用幾臺服務器來進行分佈式存儲,當然你可以繼續增加服務器,原理還是一樣的,下面介紹下怎麼配置“schema.xml”。

上圖是我根據自己的需求配置的“schema.xml”,用了三臺MySQL服務器,配置了讀寫分離,一臺用了只讀,兩外兩臺用了寫入。

第一:“CatDb”就是在“server.xml”配置的虛擬的MyCat數據庫(schema),這裏要和“server.xml”對應,名字要一致。

第二:“table”標籤裏面的“devices”就是我們要分片的數據庫表,“dataNode”屬性表示我們要把“devices”表分片到幾個實際的MySQL數據庫中,一個“dataNode”就代表一個MySQL連接點。

第三:“table”標籤裏面的“rule”屬性,是我們對數據表分片的規則,比如按時間、或者按ID值之類的,這裏不詳細講了。

第四:“dataNode”標籤,“name”屬性是連接點的名稱,和之前“table”標籤裏的“dataNode”屬性對應;“dataHost”屬性是對應下面“dataHost”標籤的名稱,用來連接實際的MySQL,這裏先起名字,後面的“dataHost”標籤再定義怎麼連接;最後的“dataBase”屬性是實際MySQL數據庫中“devices”數據表所在的數據庫,這個名稱跟實際MySQL數據庫名稱要一致。

第五:“dataHost”標籤中“name”屬性的值要跟“dataNode”標籤中“dataHost”屬性的值一致,其實就是名稱要對應起來。然後在“writeHost”裏面的“url”、“user”、“password”這都是實際MySQL的連接信息,每一個“dataHost”標籤如此類推填寫完成。

第六:上面圖片中紅色數字5所指示的位置,是配置讀寫分離,其中把讀的配置放在了服務器“192.168.22.120”的MySQL中。讀者可以根據自己的實際情況自行配置。

(3)配置rule.xml

在MyCat的安裝目錄下面找到“conf”文件夾,找到裏面的“rule.xml”文件,並打開。

這個文件是配置分片的規則,例如我想按月份來進行分片,那麼如上圖紅框中所示,在數據庫表“devices”中有“inTime”這個字段,那麼在“algorithm”表情裏面選擇系統的“partBymonth”算法;然後在“schema.xml”文件中“table”標籤裏面的“rule”屬性的值改爲“sharding-by-month”即可。其他的分片規則讀者可以研究一下,這裏就不細講了,因爲每個人的項目需求不一樣。

3.MyCat的啓動

在上面所有配置完成後,我們可以用管理員身份打開cmd命令行窗口,進行mycat的啓動。

使用cd命令進入mycat的安裝目錄的bin文件夾

然後輸入命令:startup_nowrap.bat,不出意外的話啓動成功

然後,我們使用“192.168.22.120”服務器上的Navicat來連接Mycat。

連接名隨便起,主機就是MyCat所在的服務器的IP,端口默認是8066,用戶名“thisCat”就是我們在“server.xml”文件中定義的一個用戶。

以上是我學習MySQL和MyCat的一些流水賬,記錄一下,希望對讀者有用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章