如何實現一臺機器上運行多個MySQL實例?

在一臺機器上一個MySQL服務器運行多個MySQL實例有什麼好處?這裏我先入爲主給大家介紹這樣做至少存在兩個好處(看完這篇文章後理解會更透徹):

(1)減輕服務器鏈接負擔

(2)爲不同的用戶提供不同的mysqld服務器的訪問權限以方便這些用戶進行自我管理。

 

下面我介紹具體的實現過程:

一、準備工作

    臺式機一臺、Windows系統、MySQL服務器(我安裝的版本是MySQL 5.7.24)

二、MySQL安裝

    MySQL的安裝方法網上有很多,但個人建議查看MySQL官方手冊關於安裝的介紹,雖然這種方法很花時間,需要閱讀英文,但是官方資料介紹的詳細並且安裝不容易出錯,MySQL 5.7手冊地址爲https://dev.mysql.com/doc/refman/5.7/en/

三、MySQL安裝測試(非重點)

    MySQL安裝後需要進行測試以檢查安裝是否正確。一遍情況下在C:\ProgramData\MySQL\MySQL Server 5.7路徑下有一個Data文件,如果沒有該文件則在MySQL安裝位置(一般在C:\Program Files\MySQL\MySQL Server 5.7)進入bin文件執行>bin>mysqld --initialize回車後就會在C:\ProgramData\MySQL\MySQL Server 5.7下生成一個Data文件。

  鏈接測試(本地鏈接),bin>mysql -u user -p

回車後,輸入密碼,若登錄成功會顯示welcome信息

四、MySQL實例搭建(重點)

MySQL實例1搭建:

    一個完整的MySQL安裝其實就確定了一個MySQL實例,這個實例的具體信息:

(1)MySQL安裝位置:C:\Program Files\MySQL\MySQL Server 5.7

  (2)Data路徑及my.ini文件路徑:C:\ProgramData\MySQL\MySQL Server 5.7

(3)默認端口3306:在my.ini文件中[mysqld]信息下有port=3306,這是默認的端口。

    啓動該實例的方法是進入C:\Program Files\MySQL\MySQL Server 5.7下的bin文件,打開命名提示窗口,鍵入mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini",回車後如果出現光標閃爍說明服務器(實例)啓動成功了,如下圖所示,關於客戶端鏈接實例文章後面介紹。

MySQL實例2搭建:

    創建另一個MySQL實例,一般涉及的配置有:新建Data路徑、新建port端口號、socket命名、shared-memory-base-name命名、--pid-file命名。實際上創建一個新的MySQL實例只需要新建Data路徑、新建port端口號就可以完成(具體信息見MySQL手冊Running Multiple MySQL Instances on One Machine部分)。操作步驟如下:

第一步:在E盤下新建一個文件夾,我命名爲MySQL Instances

第二步:將實例1中的Data文件夾和my.ini文件複製到MySQL Instances文件夾裏

第三步:配置文件參數設置,打開MySQL Instances文件夾裏的my.ini文件,對[mysqld]下的Data路徑和端口號進行修改

datadir="E:\MySQLInstances\Data",port=3307(除了3306的其他端口都可以)

第四步:在命令行中使用--defaults-file選項來讀取上面自定義的配置文件以啓服務器,具體的操作是進入C:\Program Files\MySQL\MySQL Server 5.7下的bin文件(同實例1的啓動方式一樣,因爲這裏我只用了一個MySQL版本),重新打開一個命名提示窗口,

鍵入mysqld --defaults-file="E:\MySQL Instances\my.ini",回車後如果出現光標閃爍說明服務器(實例)啓動成功了,如下圖所示,如果出現Uploads文件找不到,則只需要在MySQL Instances文件夾裏新建一個空的Uploads文件夾就好了。

五、MySQL實例鏈接

    如果一切進展順利,上面的兩個MySQL實例都已經成功啓動了,接下來我們看看客戶端是如何鏈接他們的。由於我身邊另有一臺也安裝了MySQL的Linux系統 的電腦,這裏我就用它來作爲遠程鏈接MySQL實例的客戶端(當然,本地通過MySQL client或在bin目錄下通過mysql鏈接也可以)。

遠程鏈接MySQL實例1:

    打開命令窗口鍵入mysql --host=192.168.1.105 --port=3306 -uroot -p

輸入密碼(Linux系統下密碼是看不見的)後回車就會彈出如下圖所示的提示,說明一切順利,遠程用戶可以操作位於C:\ProgramData\MySQL\MySQL Server 5.7\Data裏的數據庫了。這裏host是服務器段的IP地址,port就是之前啓動的實例的端口號,root是用戶名 -p是該用戶對應的密碼,詳細介紹見下文補充說明。

遠程鏈接MySQL實例2:

    打開一個新命令窗口鍵入mysql --host=192.168.1.105 --port=3307 -uroot -p

輸入密碼後回車就會彈出如下圖所示的提示,說明一切順利,遠程用戶可以操作位於E:\MySQL Instances\Data裏的數據庫了

六、總結及補充說明

 總結

    通過上面的介紹可知,兩個MySQL實例的核心是端口號和Data路徑的設置,客戶端訪問實例時需要指定該實例對應的端口號,這樣就可以減少因多個客戶端鏈接同一個服務器(實例)可能帶來的阻塞現象。

    此外,每一個實例都指定了對應的Data路徑,我們知道存放數據的數據庫database就是位於Data路徑裏,像我一樣,把實例2的Data路徑放在E盤裏可以減輕C盤存儲負擔。

    每一個實例對應一個Data路徑,顯然服務器管理員可以給鏈接到這些實例的用戶設置權限(位於Data下的mysql數據庫進行設置)並針對不同的用戶創建不同的數據庫。其實MySQL多實例 的優點遠不止這些。

補充說明

 (1)雖然本章只介紹了一臺機器、一個MySQL版本下創建兩個MySQL實例的過程,但如果您認真思考就會發現像一臺機器下安裝多個MySQL版本並創建多個MySQL服務器或實例的方法都是如出一轍的。

(2)在啓動服務器(實例)時,很可能出現各種問題,希望你別緊張,也別隨便就百度,依據我個人的經驗,在這個環節出現error一般有兩種原因:第一種情況是因爲你輸入的路徑字符串格式不對,比如把“\"寫成了"/";第二種情況是在配置my.ini文件時出現錯誤,比如Data路徑沒有設置正確等等。總之,請認真看看error提示。

(3)本人主要介紹創建多個實例的過程,所以遠程鏈接MySQL實例的用戶名都是默認的root且密碼都一樣,實際上,MySQL服務器管理員可以創建多個用戶名併爲其設置相應的密碼,這樣就可以方便用戶鏈接。此外,兩個實例中Data路徑下的文件都是一樣的(包括數據庫和日誌文件,實際上,爲了充分利用多MySQL實例的優勢,Data路徑下的文件可以按照我們的需求進行任意修改,滿足實際需求。Data路徑下的文件及作用本人將陸續呈現,當然您也可以諮詢我

          這篇文章是本人開通公衆號發佈的第一篇文章,不管是文字描述還是技術介紹都存在不足之處,希望大家批評指正!當然有問題的夥伴可以留言或通過微信公衆號“Python生態智聯”聯繫我

 

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