文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁 (TGZ) - 258.5Kb
手冊頁 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  mysqld_multi — 管理多個 MySQL 伺服器

6.3.4 mysqld_multi — 管理多個 MySQL 伺服器

mysqld_multi 旨在管理多個 mysqld 處理程序,這些處理程序監聽不同 Unix socket 檔案和 TCP/IP 連接埠上的連線。它可以啟動或停止伺服器,或報告其目前狀態。

注意

對於某些 Linux 平台,從 RPM 或 Debian 套件安裝 MySQL 包含 systemd 支援,以管理 MySQL 伺服器的啟動和關閉。在這些平台上,不會安裝 mysqld_multi,因為它是不必要的。有關使用 systemd 處理多個 MySQL 執行個體的資訊,請參閱 第 2.5.9 節,〈使用 systemd 管理 MySQL 伺服器〉

mysqld_multimy.cnf 中(或在 --defaults-file 選項所命名的檔案中)搜尋名為 [mysqldN] 的群組。N 可以是任何正整數。以下討論中,此數字稱為選項群組編號或 GNR。群組編號彼此區分選項群組,並用作 mysqld_multi 的引數,以指定您要啟動、停止或取得狀態報告的伺服器。這些群組中列出的選項與您在用於啟動 mysqld[mysqld] 群組中使用的選項相同。(例如,請參閱 第 2.9.5 節,〈自動啟動和停止 MySQL〉。)但是,當使用多個伺服器時,每個伺服器都必須對 Unix socket 檔案和 TCP/IP 連接埠號碼等選項使用自己的值。有關在多伺服器環境中哪些選項必須每個伺服器都獨特的詳細資訊,請參閱 第 7.8 節,〈在一台機器上執行多個 MySQL 執行個體〉

若要呼叫 mysqld_multi,請使用下列語法

mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]

startstopreload(停止並重新啟動)和 report 表示要執行的作業。您可以為單一伺服器或多個伺服器執行指定的作業,具體取決於選項名稱後面的 GNR 清單。如果沒有清單,mysqld_multi 會對選項檔案中的所有伺服器執行該作業。

每個 GNR 值都代表一個選項群組編號或群組編號範圍。該值應為選項檔案中群組名稱結尾的數字。例如,名為 [mysqld17] 的群組的 GNR17。若要指定數字範圍,請使用破折號分隔第一個和最後一個數字。GNR10-13 代表群組 [mysqld10][mysqld13]。可以在命令列上指定多個群組或群組範圍,並以逗號分隔。GNR 清單中不得有空白字元(空格或 Tab 鍵);空白字元之後的所有內容都會被忽略。

此命令使用選項群組 [mysqld17] 啟動單一伺服器

mysqld_multi start 17

此命令使用選項群組 [mysqld8][mysqld10][mysqld13] 停止多個伺服器

mysqld_multi stop 8,10-13

如需如何設定選項檔案的範例,請使用此命令

mysqld_multi --example

mysqld_multi 會依下列方式搜尋選項檔案

  • 使用 --no-defaults,不會讀取任何選項檔案。

    命令列格式 --no-defaults
    類型 布林值
    預設值 false
  • 使用 --defaults-file=file_name,只會讀取指定的檔案。

    命令列格式 --defaults-file=filename
    類型 檔案名稱
    預設值 [無]
  • 否則,會讀取標準位置清單中的選項檔案,包括由 --defaults-extra-file=file_name 選項指定的任何檔案(如果有的話)。(如果多次指定此選項,則會使用最後一個值。)

    命令列格式 --defaults-extra-file=filename
    類型 檔案名稱
    預設值 [無]

有關這些和其他選項檔案選項的更多資訊,請參閱 第 6.2.2.3 節,「影響選項檔案處理的命令列選項」

會搜尋讀取的選項檔案中是否有 [mysqld_multi][mysqldN] 選項群組。 [mysqld_multi] 群組可用於 mysqld_multi 本身 的選項。 [mysqldN] 群組可用於傳遞給特定 mysqld 執行個體的選項。

[mysqld][mysqld_safe] 群組可用於所有 mysqldmysqld_safe 執行個體讀取的通用選項。您可以指定 --defaults-file=file_name 選項,以便為該執行個體使用不同的組態檔案,在這種情況下,將會使用該檔案中的 [mysqld][mysqld_safe] 群組作為該執行個體的設定。

mysqld_multi 支援下列選項。

  • --help

    命令列格式 --help
    類型 布林值
    預設值 false

    顯示說明訊息並結束。

  • --example

    命令列格式 --example
    類型 布林值
    預設值 false

    顯示範例選項檔案。

  • --log=file_name

    命令列格式 --log=路徑
    類型 檔案名稱
    預設值 /var/log/mysqld_multi.log

    指定日誌檔案的名稱。如果檔案存在,則日誌輸出會附加到其中。

  • --mysqladmin=prog_name

    命令列格式 --mysqladmin=檔案
    類型 檔案名稱
    預設值 [無]

    用於停止伺服器的 mysqladmin 二進位檔。

  • --mysqld=prog_name

    命令列格式 --mysqld=檔案
    類型 檔案名稱
    預設值 [無]

    要使用的 mysqld 二進位檔。 請注意,您也可以將 mysqld_safe 指定為此選項的值。如果您使用 mysqld_safe 啟動伺服器,則可以在對應的 [mysqldN] 選項群組中包含 mysqldledir 選項。這些選項指示 mysqld_safe 應啟動的伺服器名稱,以及伺服器所在目錄的路徑名稱。(請參閱 第 6.3.2 節,「mysqld_safe — MySQL 伺服器啟動指令碼」中對這些選項的描述。)範例

    [mysqld38]
    mysqld = mysqld-debug
    ledir  = /opt/local/mysql/libexec
  • --no-log

    命令列格式 --no-log
    類型 布林值
    預設值 false

    將日誌資訊列印到 stdout 而不是日誌檔案。預設情況下,輸出會傳送到日誌檔案。

  • --password=password

    命令列格式 --password=字串
    類型 字串
    預設值 [無]

    在叫用 mysqladmin 時要使用的 MySQL 帳戶密碼。請注意,此選項的密碼值不是可選的,這與其他 MySQL 程式不同。

  • --silent

    命令列格式 --silent
    類型 布林值
    預設值 false

    靜音模式;停用警告。

  • --tcp-ip

    命令列格式 --tcp-ip
    類型 布林值
    預設值 false

    透過 TCP/IP 連接埠而不是 Unix Socket 檔案連線至每個 MySQL 伺服器。(如果遺失了 Socket 檔案,伺服器可能仍在執行,但只能透過 TCP/IP 連接埠存取。)預設情況下,連線是使用 Unix Socket 檔案進行。此選項會影響 stopreport 操作。

  • --user=user_name

    命令列格式 --user=名稱
    類型 字串
    預設值 root

    在叫用 mysqladmin 時要使用的 MySQL 帳戶使用者名稱。

  • --verbose

    命令列格式 --verbose
    類型 布林值
    預設值 false

    更詳細。

  • --version

    命令列格式 --version
    類型 布林值
    預設值 false

    顯示版本資訊並結束。

關於 mysqld_multi 的一些注意事項

  • 最重要:在使用 mysqld_multi 之前,請務必了解傳遞給 mysqld 伺服器的選項的含義,以及您想要擁有獨立 mysqld 處理程序的原因。請注意使用相同資料目錄的多個 mysqld 伺服器的風險。請使用個別的資料目錄,除非您知道您在做什麼。在已執行緒化的系統中,使用相同的資料目錄啟動多個伺服器不會為您帶來額外的效能。請參閱 第 7.8 節,「在一部電腦上執行多個 MySQL 執行個體」

    重要事項

    請確保每個伺服器的資料目錄完全可供啟動特定 mysqld 處理程序的 Unix 帳戶存取。請勿將 Unix root 帳戶用於此操作,除非您知道自己在做什麼。請參閱 第 8.1.5 節,「如何以一般使用者身分執行 MySQL」

  • 請確保用於停止 mysqld 伺服器(使用 mysqladmin 程式)的 MySQL 帳戶,對每個伺服器都具有相同的使用者名稱和密碼。此外,請確保該帳戶具有 SHUTDOWN 權限。如果您想要管理的伺服器,其管理帳戶的使用者名稱或密碼不同,您可能需要在每個伺服器上建立具有相同使用者名稱和密碼的帳戶。例如,您可以為每個伺服器執行以下命令來設定通用的 multi_admin 帳戶

    $> mysql -u root -S /tmp/mysql.sock -p
    Enter password:
    mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
    mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';

    請參閱 第 8.2 節,「存取控制和帳戶管理」。您必須對每個 mysqld 伺服器執行此操作。連線至每個伺服器時,請適當變更連線參數。請注意,帳戶名稱的主機名稱部分必須允許您從您想要執行 mysqld_multi 的主機以 multi_admin 身分連線。

  • 每個 mysqld 的 Unix Socket 檔案和 TCP/IP 連接埠號碼必須不同。(或者,如果主機有多個網路位址,您可以設定 bind_address 系統變數,以使不同的伺服器監聽不同的介面。)

  • 如果您使用 mysqld_safe 來啟動 mysqld(例如,--mysqld=mysqld_safe),則 --pid-file 選項非常重要。每個 mysqld 都應該有自己的處理程序 ID 檔案。使用 mysqld_safe 而不是 mysqld 的優點是,mysqld_safe 會監視其 mysqld 處理程序,並在該處理程序因使用 kill -9 或其他原因(例如分段錯誤)傳送的訊號而終止時,重新啟動該處理程序。

  • 您可能想要使用 mysqld--user 選項,但要執行此操作,您需要以 Unix 超級使用者 (root) 身分執行 mysqld_multi 指令碼。選項是否在選項檔案中並不重要;如果您不是超級使用者,且 mysqld 處理程序是以您自己的 Unix 帳戶啟動,您只會收到警告。

以下範例說明如何設定選項檔案,以搭配 mysqld_multi 使用。 mysqld 程式的啟動或停止順序取決於它們在選項檔案中出現的順序。群組編號不需要形成連續的序列。範例中刻意省略了第一個和第五個 [mysqldN] 群組,以說明選項檔案中可以存在間隙。這能提供您更大的彈性。

# This is an example of a my.cnf file for mysqld_multi.
# Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = my_password

[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /usr/local/mysql/data2/hostname.pid2
datadir    = /usr/local/mysql/data2
language   = /usr/local/mysql/share/mysql/english
user       = unix_user1

[mysqld3]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /usr/local/mysql/data3/hostname.pid3
datadir    = /usr/local/mysql/data3
language   = /usr/local/mysql/share/mysql/swedish
user       = unix_user2

[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /usr/local/mysql/data4/hostname.pid4
datadir    = /usr/local/mysql/data4
language   = /usr/local/mysql/share/mysql/estonia
user       = unix_user3

[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /usr/local/mysql/data6/hostname.pid6
datadir    = /usr/local/mysql/data6
language   = /usr/local/mysql/share/mysql/japanese
user       = unix_user4

請參閱第 6.2.2.2 節,「使用選項檔案」