文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式 Letter) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  MySQL 伺服器管理  /  在單一機器上執行多個 MySQL 實例

7.8 在單一機器上執行多個 MySQL 實例

在某些情況下,您可能想要在單一機器上執行多個 MySQL 實例。您可能想要在不干擾現有生產設定的情況下測試新的 MySQL 版本。或者您可能想要讓不同的使用者可以存取他們自己管理的不同 mysqld 伺服器。(例如,您可能是一家網際網路服務提供者,想要為不同的客戶提供獨立的 MySQL 安裝。)

可以為每個實例使用不同的 MySQL 伺服器二進位檔,或者為多個實例使用相同的二進位檔,或者使用這兩種方法的任何組合。例如,您可以從 MySQL 8.4 執行一個伺服器,並從 MySQL 9.0 執行一個伺服器,以了解不同版本如何處理給定的工作負載。或者,您也可以執行目前生產版本的多個實例,每個實例管理不同的資料庫集。

無論您是否使用不同的伺服器二進位檔,您執行的每個實例都必須設定為多個操作參數的唯一值。這消除了實例之間衝突的可能性。參數可以在命令列、選項檔案或透過設定環境變數來設定。請參閱第 6.2.2 節「指定程式選項」。若要查看給定實例使用的值,請連線到該實例並執行 SHOW VARIABLES 陳述式。

MySQL 實例管理的主要資源是資料目錄。每個實例都應該使用不同的資料目錄,其位置是使用 --datadir=目錄名稱 選項指定。有關設定每個實例具有自己的資料目錄的方法,以及未設定時的危險警告,請參閱第 7.8.1 節「設定多個資料目錄」

除了使用不同的資料目錄之外,每個伺服器實例的多個其他選項也必須具有不同的值

  • --port=port_num

    --port 控制 TCP/IP 連線的埠號碼。或者,如果主機有多個網路位址,您可以設定 bind_address 系統變數,使每個伺服器接聽不同的位址。

  • --socket={file_name|pipe_name}

    --socket 控制 Unix 上的 Unix socket 檔案路徑或 Windows 上的具名管道名稱。在 Windows 上,只有設定為允許具名管道連線的伺服器才需要指定不同的管道名稱。

  • --shared-memory-base-name=name

    此選項僅在 Windows 上使用。它指定 Windows 伺服器用來允許用戶端使用共用記憶體進行連線的共用記憶體名稱。只有設定為允許共用記憶體連線的伺服器才需要指定不同的共用記憶體名稱。

  • --pid-file=file_name

    此選項指示伺服器寫入其程序 ID 的檔案路徑名稱。

如果您使用下列日誌檔案選項,它們的值對於每個伺服器都必須不同

如需進一步討論日誌檔案選項,請參閱第 7.4 節「MySQL 伺服器日誌」

為了獲得更佳的效能,您可以為每個伺服器指定不同的以下選項,以分散多個實體磁碟之間的負載

擁有不同的臨時目錄也更容易判斷哪個 MySQL 伺服器建立了任何指定的臨時檔案。

如果您在不同的位置有多個 MySQL 安裝,您可以使用 --basedir=目錄名稱 選項為每個安裝指定基礎目錄。這會導致每個實例自動使用不同的資料目錄、日誌檔案和 PID 檔案,因為每個參數的預設值都相對於基礎目錄。在這種情況下,您唯一需要指定的其他選項是 --socket--port 選項。假設您使用 tar 檔案二進位發行版安裝不同版本的 MySQL。這些會安裝在不同的位置,因此您可以使用其對應基礎目錄下的 bin/mysqld_safe 命令來啟動每個安裝的伺服器。mysqld_safe 確定要傳遞給 mysqld 的正確 --basedir 選項,並且您只需為 mysqld_safe 指定 --socket--port 選項。

如下面的章節中所討論的,可以透過指定適當的命令選項或設定環境變數來啟動額外的伺服器。但是,如果您需要在更永久的基礎上執行多個伺服器,則使用選項檔案為每個伺服器指定其必須唯一的選項值會更方便。--defaults-file 選項對此很有用。