top
Loading...
5.1.5.mysqld_multi:管理多個MySQL服務器的程序
5.1.5. mysqld_multi:管理多個MySQL服務器的程序

mysqld_multi可以管理多個幀聽不同Unix套接字文件和TCP/IP端口的連接的mysqld 進程。它可以啟動或停止服務器,或報告它們的當前狀態。

程序尋找my.cnf中的[mysqldN](--config-file選項指定的文件)N 可以為任何正整數。在下面的討論中該數字指選項組號,或GNR。組號區別各選項組,并用作mysqld_multi的參數來指定想要啟動、停止哪個服務器或獲取哪個服務器的狀態報告。這些組中的選項與將用來啟動mysqld[mysqld]組中的相同。(例如,參見2.9.2.2節,“自動啟動和停止MySQL”)但是,當使用多個服務器時,需要每個服務器使用自己的選項值,例如Unix套接字文件和TCP/IP端口號。關于在多服務器環境中,每個服務器對應唯一選項的詳細信息,參見5.12節,“在同一臺機器上運行多個MySQL服務器”。

要想調用mysqld_multi,使用下面的語法:

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

startstopreport表示你想要執行的操作。你可以在單個服務器或多個服務器上執行指定的操作,取決于選項名后面的GNR 列。如果沒有該列,mysqld_multi為選項文件中的所有服務器執行該操作。

每個GNR值代表一個選項組號或組號范圍。GNR值應為選項文件中組名末尾的號。例如,組[mysqld17]GNR17。要想指定組號的范圍,用破折號間隔開第1個和最后1個號。GNR10-13代表組[mysqld10][mysqld13]。可以在命令行中指定多個組或組范圍,用逗號間隔開。GNR列不能有空格字符(空格或tab);空格字符后面的內容將被忽略掉。

該命令使用選項組[mysqld17]啟動單個服務器:

shell> mysqld_multi start 17

該命令停止多個服務器,使用選項組[mysql8][mysqld10][mysqld13]

shell> mysqld_multi stop 8,10-13

使用該命令列出設置選項文件的示例:

shell> mysqld_multi --example

mysqld_multi支持下面的選項:

·         --config-file=name

指定選項文件名。這關系到mysqld_multi從哪里尋找[mysqldN]選項組。沒有該選項,從通用my.cnf文件讀所有選項。選項不影響 mysqld_multi從哪里讀取自己的選項,總是從通用my.cnf文件的[mysqld_multi]組讀取。

·         --example

顯示示例選項文件。

·         --help

顯示幫助消息并退出。

·         --log=name

指定日志文件名。如果該文件存在,后面為日志輸出。

·         --mysqladmin=prog_name

用來停止服務器的mysqladmin二進制。

·         --mysqld=prog_name

可用的mysqld二進制。請注意你還可以將該選項的值指定為mysqld_safe。選項被傳遞給 mysqld確保在PATH環境變量設定值或mysqld_safe中有mysqld所在目錄。

·         --no-log

按照標準輸出打印日志信息,不要寫入日志文件。默認情況下,輸出寫入日志文件。

·         --password=password

調用mysqladmin時使用的MySQL賬戶的密碼。請注意該密碼值不是可選項,不象其它MySQL程序。

·         --silent

禁用警告。

·         --tcp-ip

通過TCP/IP端口而不是Unix套接字文件來連接每個MySQL服務器。(如果找不到套接字文件, 服務器仍然可以運行,但只能通過 TCP/IP端口訪問)默認情況下,使用Unix套接字文件進行連接。該選項影響stopreport操作。

·         --user=user_name

調用mysqladmin時使用的MySQL賬戶的用戶名。

·         --verbose

更詳細。

·         --version

顯示版本信息并退出。

關于mysqld_multi的一些注解:

·         確保停止mysqld服務器(mysqladmin程序)MySQL賬戶在各個服務器中的用戶名和密碼相同。并且應確保賬戶具有SHUTDOWN權限。如果你想要管理的服務器的管理賬戶有許多不同的用戶名或密碼,你需要在每個服務器上創建一個賬戶,并具有相同的用戶名和密碼。例如,你可以執行下面的命令為每個服務器設置一個普通multi_admin賬戶:

·                shell> mysql -u root -S /tmp/mysql.sock -proot_password
·                mysql> GRANT SHUTDOWN ON *.*
·                    -> TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'

參見5.7.2節,“權限系統工作原理”。你必須為每個mysqld服務器執行該操作。當連接時適當更改連接參數。請注意賬戶名的主機部分必須允許你用multi_admin從你想要運行mysqld_multi的主機進行連接。

·         如果你使用mysqld_safe來啟動mysqld(例如,--mysqld=mysqld_safe)--pid-file選項很重要。每個mysqld應有自己的進程ID文件。使用mysqld_safe而不使用mysqld的好處是mysqld_safe守護”其mysqld進程,如果用kill 9發送的信號或由于其它原因(例如分段故障)進程終止,則重啟進程。請注意mysqld_safe腳本需要你從某個位置啟動它。這說明運行mysqld_multi前你必須進入某個目錄。如果啟動時有問題,請參見mysqld_safe腳本。特別是要檢查下列行:

·                ----------------------------------------------------------------
·                MY_PWD=`pwd`
·                # Check if we are starting this relative (for the binary release)
·                if test -d $MY_PWD/data/mysql -a -f ./share/mysql/english/errmsg.sys -a 
·                -x ./bin/mysqld
·                ----------------------------------------------------------------

參見5.1.3節,“mysqld_safe:MySQL服務器啟動腳本”。上述行執行的測試應成功,否則你可能遇到了問題。

·         每個mysqldUnix套接字文件和TCP/IP端口號必須不同。

·         你可能想要為mysqld使用--user選項,但為此你需要用Unix root用戶運行mysqld_multi腳本。選項文件中有選項不要緊;如果你不是超級用戶,并且你用自己的Unix賬戶重啟mysqld進程,你只會得到警告。

·         重要:確保mysqld進程啟動所用Unix賬戶可以完全訪問數據目錄。不要使用Unix root賬戶,除非你知道你在做什么。

·         非常重要:使用mysqld_multi前,確保理解傳遞給mysqld服務器的選項的含義以及你為什么想要獨立的mysqld進程。應清楚 在相同的數據目錄下使用多個mysqld服務器的危險。使用單獨的數據目錄,除非你知道你在做什么。在線程系統中,在相同的數據目錄下啟動多個服務器不會得到超性能。參見5.12節,“在同一臺機器上運行多個MySQL服務器”。

下面的示例顯示了你如何設置選項文件來使用mysqld_multi。專門省去第1個和第5[mysqldN]組來說明你的選項文件可以稍有不同。這樣給你更大的靈活性。mysqld程序重啟或停止的順序由它們在選項文件中的順序決定。

# This file should probably be in your home dir (~/.my.cnf)
# or /etc/my.cnf
# Version 2.1 by Jani Tolonen
 
[mysqld_multi]
mysqld     = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user       = multi_admin
password   = multipass
 
[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /usr/local/mysql/var2/hostname.pid2
datadir    = /usr/local/mysql/var2
language   = /usr/local/share/mysql/english
user       = john
 
[mysqld3]
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /usr/local/mysql/var3/hostname.pid3
datadir    = /usr/local/mysql/var3
language   = /usr/local/share/mysql/swedish
user       = monty
 
[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /usr/local/mysql/var4/hostname.pid4
datadir    = /usr/local/mysql/var4
language   = /usr/local/share/mysql/estonia
user       = tonu
 
[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /usr/local/mysql/var6/hostname.pid6
datadir    = /usr/local/mysql/var6
language   = /usr/local/share/mysql/japanese
user       = jani

參見4.3.2節,“使用選項文件”。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html
北斗有巢氏 有巢氏北斗