MySQL服務(wù)器序厉,即mysqld矫户,是在MySQL安裝中負(fù)責(zé)大部分工作的主程序离斩。服務(wù)器隨附了幾個(gè)相關(guān)腳本,當(dāng)你安裝MySQL時(shí)它們可以執(zhí)行設(shè)置操作抽高,或者是幫助你啟動(dòng)和停止服務(wù)器的幫助程序判耕。
本篇文章提供了服務(wù)器和相關(guān)程序的概述,以及服務(wù)器啟動(dòng)腳本相關(guān)信息翘骂。
服務(wù)器端腳本和實(shí)用工具概述
MySQL程序采用各種不同的選項(xiàng)壁熄。但每個(gè)MySQL程序提供一個(gè)--help選項(xiàng),你可以用來(lái)查閱程序選項(xiàng)相關(guān)說(shuō)明帚豪。例如,你可以試試mysqld --help草丧。
你可以在命令行中或在選項(xiàng)文件中指定選項(xiàng)來(lái)替換所有標(biāo)準(zhǔn)程序中的默認(rèn)選項(xiàng)志鞍。
下面簡(jiǎn)單描述了MySQL服務(wù)器和服務(wù)器相關(guān)程序:
- mysqld
SQL后臺(tái)程序(即MySQL服務(wù)器)。要想使用客戶(hù)端程序方仿,該程序必須運(yùn)行固棚,因?yàn)榭蛻?hù)端通過(guò)連接服務(wù)器來(lái)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。
mysqld-max
包括更多特性的一個(gè)服務(wù)器版本仙蚜。
mysqld_safe
服務(wù)器啟動(dòng)腳本此洲。如果mysqld-max存在,mysqld_safe試圖啟動(dòng)它,否則啟動(dòng)mysqld委粉。
mysql.server
服務(wù)器啟動(dòng)腳本呜师。該腳本用于使用包含為特定級(jí)別的運(yùn)行啟動(dòng)服務(wù)的腳本的運(yùn)行目錄的系統(tǒng)。它調(diào)用mysqld_safe來(lái)啟動(dòng)MySQL服務(wù)器贾节。
mysqld_multi
服務(wù)器啟動(dòng)腳本汁汗,可以啟動(dòng)或停止系統(tǒng)上安裝的多個(gè)服務(wù)器。
mysql_install_db
該腳本用默認(rèn)權(quán)限創(chuàng)建MySQL授權(quán)表栗涂。通常只是在系統(tǒng)上首次安裝MySQL時(shí)執(zhí)行一次
mysql_fix_ privilege_tables
在升級(jí)安裝后知牌,如果新版本MySQL中的 授權(quán)表有更改,則使用該腳本來(lái)更改授權(quán)表斤程。
服務(wù)器主機(jī)上還運(yùn)行其它幾個(gè)程序:
myisamchk
用來(lái)描述角寸、檢查、優(yōu)化和維護(hù)MyISAM表的實(shí)用工具
make_binary_distribution
該程序可以生成編譯過(guò)的MySQL的二進(jìn)制版本忿墅”馀海可以通過(guò)FTP上傳到ftp.mysql.com的/pub/mysql/upload/,供其它MySQL用戶(hù)使用疚脐。
mysqlbug
MySQL 缺陷報(bào)告腳本亿柑。它可以用來(lái)向MySQL郵件系統(tǒng)發(fā)送缺陷報(bào)告。
mysqld-max擴(kuò)展MySQL服務(wù)器
MySQL-Max服務(wù)器是mysqld MySQL服務(wù)器的一個(gè)版本棍弄,包含了更多的特性望薄。
該分發(fā)版的使用取決于你的平臺(tái):
對(duì)于Windows,MySQL二進(jìn)制分發(fā)版包括標(biāo)準(zhǔn)服務(wù)器 (mysqld.exe)和MySQL-Max服務(wù)器(mysqld-max.exe)照卦,因此你不再需要專(zhuān)用分發(fā)版式矫。
對(duì)于Linux乡摹,如果你使用RPM分發(fā)版安裝MySQL役耕,首先使用常規(guī)MySQL-server RPM來(lái)安裝標(biāo)準(zhǔn)mysqld服務(wù)器。然后使用MySQL-Max RPM來(lái)安裝mysqld-max服務(wù)器聪廉。MySQL-Max RPM假定你已經(jīng)安裝了常規(guī)服務(wù)器RPM瞬痘。
MySQL AB使用下面的configure選項(xiàng)構(gòu)建MySQL-Max服務(wù)器:
· --with-server-suffix=-max
該選項(xiàng)為mysqld版本字符串添加一個(gè)-max后綴故慈。
· --with-innodb
該選項(xiàng)啟用InnoDB存儲(chǔ)引擎支持。MySQL-Max服務(wù)器包括InnoDB支持框全。在MySQL 4.0及以上版本中察绷,默認(rèn)InnoDB包括在所有二進(jìn)制分發(fā)版中,因此你不需要用MySQL-Max服務(wù)器只是用來(lái)獲取InnoDB支持津辩。
· --with-bdb
該選項(xiàng)啟用Berkeley DB (BDB)存儲(chǔ)引擎支持拆撼。
· --with-blackhole-storage-engine
該選項(xiàng)啟用BLACKHOLE存儲(chǔ)引擎支持。
· USE_SYMDIR
啟用該定義來(lái)為Windows打開(kāi)數(shù)據(jù)庫(kù)符號(hào)鏈接支持喘沿。符號(hào)鏈接支持適用于所有Windows服務(wù)器闸度,因此Max服務(wù)器不需要支持該特性。
· --with-ndbcluster
該選項(xiàng)啟用NDB Cluster存儲(chǔ)引擎支持蚜印。目前(5.1.2-alpha)只有Linux莺禁、Solaris和Mac OS X支持Cluster。已有一些用戶(hù)報(bào)告在BSD 操作系統(tǒng)上成功使用了從源碼構(gòu)建的MySQL Cluster窄赋,但目前還沒(méi)有得到官方支持哟冬。
MySQL-Max二進(jìn)制分發(fā)版對(duì)于想要安裝預(yù)編譯程序的用戶(hù)很方便。如果你使用源碼分發(fā)版構(gòu)建MySQL忆绰,你可以通過(guò)在配置時(shí)啟用MySQL-Max二進(jìn)制分發(fā)版構(gòu)建所用的相同的特性來(lái)構(gòu)建你自己的Max-like服務(wù)器浩峡。
MySQL-Max服務(wù)器包括BerkeleyDB (BDB)存儲(chǔ)引擎,但并非所有平臺(tái)支持BDB错敢。
Solaris红符、Mac OS X和Linux(在大多數(shù)平臺(tái)上)的MySQL-Max服務(wù)器包括NDB CLUSTER存儲(chǔ)引擎支持。請(qǐng)注意必須用ndbcluster選項(xiàng)啟動(dòng)服務(wù)器伐债,以便使服務(wù)器做為MySQL Cluster的一部分來(lái)運(yùn)行预侯。
下面的表顯示了MySQL-Max二進(jìn)制在哪個(gè)平臺(tái)上包括BDB和/或NDB CLUSTER支持:
系統(tǒng) | BDB支持 | NDB支持 |
---|---|---|
AIX 4.3 | N | N |
HP-UX 11.0 | N | N |
Linux-Alpha | N | Y |
Linux-IA-64 | N | N |
Linux-Intel | Y | Y |
Mac OS X | N | N |
NetWare | N | N |
SCO OSR5 | Y | N |
Solaris-SPARC | Y | Y |
Solaris-Intel | N | Y |
UnixWare | Y | N |
Windows NT/2000/XP | Y | N |
- 要想找出你的服務(wù)器支持哪個(gè)存儲(chǔ)引擎,執(zhí)行下面的語(yǔ)句:
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set
- 你還可以使用下面的語(yǔ)句代替SHOW ENGINES峰锁,并檢查你感興趣的存儲(chǔ)引擎的變量值:
mysql> SHOW VARIABLES LIKE 'have%';
+----------------------+----------+
| Variable_name | Value |
+----------------------+----------+
| have_compress | YES |
| have_crypt | YES |
| have_dynamic_loading | YES |
| have_geometry | YES |
| have_openssl | DISABLED |
| have_profiling | YES |
| have_query_cache | YES |
| have_rtree_keys | YES |
| have_ssl | DISABLED |
| have_symlink | YES |
+----------------------+----------+
10 rows in set
- SHOW命令的精確輸出隨使用的MySQL版本(和啟用的特性)的不同而有變化萎馅。第2列的值表示各特性支持的服務(wù)器級(jí)別,如下所示:
值 | 含義 |
---|---|
YES | 支持該特性并已經(jīng)激活虹蒋。 |
NO | 不支持該特性糜芳。 |
DISABLED | 支持該特性但被禁用。 |
NO值表示編譯的服務(wù)器不支持該特性魄衅,因此在運(yùn)行時(shí)不能激活峭竣。
出現(xiàn)DISABLED值是因?yàn)榉?wù)器啟動(dòng)時(shí)該特性被禁用,或沒(méi)有給出啟用它的所有選項(xiàng)晃虫。在后一種情況皆撩,host_名.err錯(cuò)誤日志文件應(yīng)包含該選項(xiàng)被禁用的原因。
如果服務(wù)器支持InnoDB或BDB存儲(chǔ)引擎,你還可以看見(jiàn)DISABLED扛吞,但在運(yùn)行啟動(dòng)時(shí)使用了--skip-innodb或--skip-bdb選項(xiàng)呻惕。對(duì)于NDB CLUSTER存儲(chǔ)引擎,DISABLED表示服務(wù)器支持MySQL Cluster滥比,但啟動(dòng)時(shí)未啟用--ndb-cluster選項(xiàng)亚脆。
所有MySQL服務(wù)器支持MyISAM表,因?yàn)镸yISAM是 默認(rèn)存儲(chǔ)引擎盲泛。
mysqld_safe:MySQL服務(wù)器啟動(dòng)腳本
在Unix和NetWare中推薦使用mysqld_safe來(lái)啟動(dòng)mysqld服務(wù)器濒持。mysqld_safe增加了一些安全特性,例如當(dāng)出現(xiàn)錯(cuò)誤時(shí)重啟服務(wù)器并向錯(cuò)誤日志文件寫(xiě)入運(yùn)行時(shí)間信息寺滚。本節(jié)后面列出了NetWare的特定行為弥喉。
注釋?zhuān)簽榱吮3滞f版本MySQL的向后兼容性,MySQL二進(jìn)制分發(fā)版仍然包括safe_mysqld作為mysqld_safe的符號(hào)鏈接玛迄。但是由境,你不應(yīng)再依賴(lài)它,因?yàn)樵賹?lái)將刪掉它蓖议。
默認(rèn)情況下虏杰,mysqld_safe嘗試啟動(dòng)可執(zhí)行mysqld-max(如果存在),否則啟動(dòng)mysqld勒虾。該行為的含義是:
在Linux中纺阔,MySQL-Max RPM依賴(lài)該mysqld_safe的行為。RPM安裝可執(zhí)行mysqld-max修然,使mysqld_safe從該點(diǎn)起自動(dòng)使用可執(zhí)行命令笛钝。
如果你安裝包括mysqld-max服務(wù)器的MySQL-Max分發(fā)版,后面升級(jí)到非-Max的MySQL版本愕宋,mysqld_safe仍然試圖運(yùn)行舊的 mysqld-max服務(wù)器玻靡。升級(jí)時(shí),你應(yīng)手動(dòng)刪除舊的mysqld-max服務(wù)器以確保mysqld_safe運(yùn)行新的mysqld服務(wù)器中贝。
要想越過(guò)默認(rèn)行為并顯式指定你想要運(yùn)行哪個(gè)服務(wù)器囤捻,為mysqld_safe指定--mysqld或--mysqld-version選項(xiàng)。
mysqld_safe的許多選項(xiàng)與mysqld的相同的邻寿。
所有在命令行中為mysqld_safe指定的選項(xiàng)被傳遞給mysqld蝎土。如果你想要使用mysqld不支持的mysqld_safe的選項(xiàng),不要在命令行中指定绣否。相反誊涯,在選項(xiàng)文件的[mysqld_safe]組內(nèi)將它們列出來(lái)
mysqld_safe從選項(xiàng)文件的[mysqld]、[server]和[mysqld_safe]部分讀取所有選項(xiàng)蒜撮。為了保證向后兼容性暴构,它還讀取 [safe_mysqld]部分,盡管在MySQL 5.1安裝中你應(yīng)將這部分重新命名為[mysqld_safe]。
mysqld_safe支持下面的選項(xiàng):
· --help
顯示幫助消息并退出丹壕。
· --autoclose
(只在NetWare中)在NetWare中,mysqld_safe可以保持窗口薇溃。當(dāng)你關(guān)掉mysqld_safe NLM時(shí)菌赖,窗口不按默認(rèn)設(shè)置消失。相反沐序,它提示用戶(hù)輸入:
<NLM has terminated; Press any key to close the screen>
如果你想讓NetWare自動(dòng)關(guān)閉窗口琉用,在mysqld_safe中使用--autoclose選項(xiàng)。
· --basedir=path
MySQL安裝目錄的路徑策幼。
· --core-file-size=size
mysqld能夠創(chuàng)建的內(nèi)核文件的大小邑时。選項(xiàng)值傳遞給ulimit -c。
· --datadir=path
數(shù)據(jù)目錄的路徑特姐。
· --defaults-extra-file=path
除了通用選項(xiàng)文件所讀取的選項(xiàng)文件名晶丘。如果給出,必須首選該選項(xiàng)唐含。
· --defaults-file=path
讀取的代替通用選項(xiàng)文件的選項(xiàng)文件名浅浮。如果給出,必須首選該選項(xiàng)捷枯。
· --ledir=path
包含mysqld程序的目錄的路徑滚秩。使用該選項(xiàng)來(lái)顯式表示服務(wù)器位置。
· --log-error=path
將錯(cuò)誤日志寫(xiě)入給定的文件淮捆。
· --mysqld=prog_name
想要啟動(dòng)的服務(wù)器程序名(在ledir目錄)郁油。如果你使用MySQL二進(jìn)制分發(fā)版但有二進(jìn)制分發(fā)版之外的數(shù)據(jù)目錄需要該選項(xiàng)。
· --mysqld-version =suffix
該選項(xiàng)類(lèi)似--mysqld選項(xiàng)攀痊,但你只指定服務(wù)器程序名的后綴桐腌。基本名假定為mysqld苟径。例如哩掺,如果你使用--mysqld-version =max,mysqld_safe啟動(dòng)ledir目錄中的mysqld-max程序涩笤。如果--mysqld-version的參數(shù)為空嚼吞,mysqld_safe使用目錄中的mysqld。
· --nice=priority
使用nice程序根據(jù)給定值來(lái)設(shè)置服務(wù)器的調(diào)度優(yōu)先級(jí)蹬碧。
· --no-defaults
不要讀任何選項(xiàng)文件舱禽。如果給出,必須首選該選項(xiàng)恩沽。
· --open-files-limit=count
mysqld能夠打開(kāi)的文件的數(shù)量誊稚。選項(xiàng)值傳遞給 ulimit -n。請(qǐng)注意你需要用root啟動(dòng)mysqld_safe來(lái)保證正確工作!
· --pid-file=path
進(jìn)程ID文件的路徑里伯。
· --port=port_num
用來(lái)幀聽(tīng)TCP/IP連接的端口號(hào)城瞎。端口號(hào)必須為1024或更大值,除非MySQL以root系統(tǒng)用戶(hù)運(yùn)行疾瓮。
· --skip-character-set-client-handshake
忽略客戶(hù)端發(fā)送的字符集信息脖镀,使用服務(wù)器的默認(rèn)字符集。(選擇該選項(xiàng)狼电,MySQL的動(dòng)作與MySQL 4.0相同)蜒灰。
· --socket=path
用于本地連接的Unix套接字文件。
· --timezone=zone
為給定的選項(xiàng)值設(shè)置TZ時(shí)區(qū)環(huán)境變量肩碟。從操作系統(tǒng)文檔查閱合法的時(shí)區(qū)規(guī)定格式强窖。
· --user={user_name | user_id}
以用戶(hù)名user_name或數(shù)字用戶(hù)ID user_id運(yùn)行mysqld服務(wù)器。(本文中的“用戶(hù)”指系統(tǒng)登錄賬戶(hù)削祈,而不是 授權(quán)表中的MySQL用戶(hù))翅溺。
執(zhí)行mysqld_safe時(shí),必須先給出--defaults-file或--defaults-extra-option髓抑,或不使用選項(xiàng)文件未巫。例如,該命令將不使用選項(xiàng)文件:
mysqld_safe --port=port_num --defaults-file=file_name
相反启昧,使用下面的命令:
mysqld_safe --defaults-file=file_name --port=port_num
一般情況mysqld_safe腳本可以啟動(dòng)從源碼或二進(jìn)制MySQL分發(fā)版安裝的服務(wù)器叙凡,即使這些分發(fā)版將服務(wù)器安裝到稍微不同的位置。 mysqld_safe期望下面的其中一個(gè)條件是真的:
· 可以根據(jù)調(diào)用mysqld_safe的目錄找到服務(wù)器和數(shù)據(jù)庫(kù)密末。在二進(jìn)制分發(fā)版中握爷,mysqld_safe看上去在bin和data目錄的工作目錄下。對(duì)于源碼分發(fā)版严里,為libexec和var目錄新啼。如果你從MySQL安裝目錄執(zhí)行mysqld_safe應(yīng)滿(mǎn)足該條件(例如,二進(jìn)制分發(fā)版為/usr/local/mysql)刹碾。
· 如果不能根據(jù)工作目錄找到服務(wù)器和數(shù)據(jù)庫(kù)燥撞,mysqld_safe試圖通過(guò)絕對(duì)路徑對(duì)它們定位。典型位置為/usr/local/libexec和/usr/local/var迷帜。實(shí)際位置由構(gòu)建分發(fā)版時(shí)配置的值確定如果MySQL安裝到配置時(shí)指定的位置物舒,它們應(yīng)該是正確的。
因?yàn)閙ysqld_safe試圖通過(guò)工作目錄找到服務(wù)器和數(shù)據(jù)庫(kù)戏锹,只要你從MySQL安裝目錄運(yùn)行mysqld_safe冠胯,可以將MySQL二進(jìn)制分發(fā)版安裝到其它位置:
shell> cd mysql_installation_directory
shell> bin/mysqld_safe &
如果mysqld_safe失敗,即使從MySQL安裝目錄調(diào)用仍然失敗锦针,你可以指定--ledir和--datadir選項(xiàng)來(lái)指示服務(wù)器和數(shù)據(jù)庫(kù)在你的系統(tǒng)中的安裝目錄荠察。
一般情況置蜀,你不應(yīng)編輯mysqld_safe腳本。相反悉盆,應(yīng)使用命令行選項(xiàng)或my.cnf選項(xiàng)文件的[mysqld_safe]部分的選項(xiàng)來(lái)配置mysqld_safe盯荤。一般不需要編輯mysqld_safe來(lái)正確啟動(dòng)服務(wù)器。但是焕盟,如果你編輯秋秤,將來(lái)升級(jí)MySQL后會(huì)覆蓋你修改的mysqld_safe版本,因此你應(yīng)對(duì)你修改的版本進(jìn)行備份以便將來(lái)重裝京髓。
在NetWare中航缀,mysqld_safe是一個(gè)NetWare Loadable Module (NLM)商架,從原Unix shell腳本移植堰怨。它執(zhí)行:
檢查系統(tǒng)和選項(xiàng)。
檢查MyISAM表蛇摸。
保持MySQL服務(wù)器窗口备图。
啟動(dòng)并監(jiān)視mysqld,如果因錯(cuò)誤終止則重啟赶袄。
將mysqld的錯(cuò)誤消息發(fā)送到數(shù)據(jù)目錄中的host_name.err 文件揽涮。
將mysqld_safe的屏幕輸出發(fā)送到數(shù)據(jù)目錄中的host_name.safe文件。
MySQL服務(wù)器啟動(dòng)腳本
在Unix中的MySQL分發(fā)版包括mysql.server腳本饿肺。它可以用于使用System V-style運(yùn)行目錄來(lái)啟動(dòng)和停止系統(tǒng)服務(wù)的系統(tǒng)蒋困,例如Linux和Solaris。它還用于MySQL的Mac OS X Startup Item敬辣。
mysql.server位于MySQL源碼樹(shù)MySQL安裝目錄下的support-files目錄中雪标。
如果你使用Linux 服務(wù)器RPM軟件包(MySQL-server-VERSION.rpm),mysql.server腳本將安裝到/etc/init.d目錄下溉跃,名為mysql村刨。你不需要 手動(dòng)安裝。
一些賣(mài)方提供的RPM軟件包安裝的啟動(dòng)腳本用其它名撰茎,例如mysqld嵌牺。
如果你從不自動(dòng)安裝mysql.server的源碼分發(fā)版或二進(jìn)制分發(fā)版格式安裝MySQL,也可以手動(dòng)安裝龄糊。
mysql.server從 [mysql.server]和選項(xiàng)文件的[mysqld]部分讀取選項(xiàng)逆粹。(為了保證向后兼容性,它還讀取 [safe_mysqld]部分炫惩,盡管在MySQL 5.1安裝中你應(yīng)將這部分重新命名為[mysqld_safe])枯饿。
mysqld_multi:管理多個(gè)MySQL服務(wù)器的程序
mysqld_multi可以管理多個(gè)幀聽(tīng)不同Unix套接字文件和TCP/IP端口的連接的mysqld 進(jìn)程。它可以啟動(dòng)或停止服務(wù)器诡必,或報(bào)告它們的當(dāng)前狀態(tài)奢方。
程序?qū)ふ襪y.cnf中的[mysqldN]組(或--config-file選項(xiàng)指定的文件)搔扁。N 可以為任何正整數(shù)。在下面的討論中該數(shù)字指選項(xiàng)組號(hào)蟋字,或GNR稿蹲。組號(hào)區(qū)別各選項(xiàng)組,并用作mysqld_multi的參數(shù)來(lái)指定想要啟動(dòng)鹊奖、停止哪個(gè)服務(wù)器或獲取哪個(gè)服務(wù)器的狀態(tài)報(bào)告苛聘。這些組中的選項(xiàng)與將用來(lái)啟動(dòng)mysqld的[mysqld]組中的相同。但是忠聚,當(dāng)使用多個(gè)服務(wù)器時(shí)设哗,需要每個(gè)服務(wù)器使用自己的選項(xiàng)值,例如Unix套接字文件和TCP/IP端口號(hào)两蟀。
要想調(diào)用mysqld_multi网梢,使用下面的語(yǔ)法:
shell> mysqld_multi [options] {start|stop|report} [GNR[,GNR] ...]
start、stop和report表示你想要執(zhí)行的操作赂毯。你可以在單個(gè)服務(wù)器或多個(gè)服務(wù)器上執(zhí)行指定的操作战虏,取決于選項(xiàng)名后面的GNR 列。如果沒(méi)有該列党涕,mysqld_multi為選項(xiàng)文件中的所有服務(wù)器執(zhí)行該操作烦感。
每個(gè)GNR值代表一個(gè)選項(xiàng)組號(hào)或組號(hào)范圍。GNR值應(yīng)為選項(xiàng)文件中組名末尾的號(hào)膛堤。例如手趣,組[mysqld17]的GNR為17。要想指定組號(hào)的范圍肥荔,用破折號(hào)間隔開(kāi)第1個(gè)和最后1個(gè)號(hào)绿渣。GNR值10-13代表組[mysqld10]到[mysqld13]〈纹螅可以在命令行中指定多個(gè)組或組范圍怯晕,用逗號(hào)間隔開(kāi)。GNR列不能有空格字符(空格或tab)缸棵;空格字符后面的內(nèi)容將被忽略掉舟茶。
該命令使用選項(xiàng)組[mysqld17]啟動(dòng)單個(gè)服務(wù)器:
shell> mysqld_multi start 17
該命令停止多個(gè)服務(wù)器,使用選項(xiàng)組[mysql8]和[mysqld10]至[mysqld13]:
shell> mysqld_multi stop 8,10-13
使用該命令列出設(shè)置選項(xiàng)文件的示例:
shell> mysqld_multi --example
mysqld_multi支持下面的選項(xiàng):
· --config-file=name
指定選項(xiàng)文件名堵第。這關(guān)系到mysqld_multi從哪里尋找[mysqldN]選項(xiàng)組吧凉。沒(méi)有該選項(xiàng),從通用my.cnf文件讀所有選項(xiàng)踏志。選項(xiàng)不影響 mysqld_multi從哪里讀取自己的選項(xiàng)阀捅,總是從通用my.cnf文件的[mysqld_multi]組讀取。
· --example
顯示示例選項(xiàng)文件针余。
· --help
顯示幫助消息并退出饲鄙。
· --log=name
指定日志文件名凄诞。如果該文件存在,后面為日志輸出忍级。
· --mysqladmin=prog_name
用來(lái)停止服務(wù)器的mysqladmin二進(jìn)制帆谍。
· --mysqld=prog_name
可用的mysqld二進(jìn)制。請(qǐng)注意你還可以將該選項(xiàng)的值指定為mysqld_safe轴咱。選項(xiàng)被傳遞給 mysqld汛蝙。確保在PATH環(huán)境變量設(shè)定值或mysqld_safe中有mysqld所在目錄。
· --no-log
按照標(biāo)準(zhǔn)輸出打印日志信息朴肺,不要寫(xiě)入日志文件窖剑。默認(rèn)情況下,輸出寫(xiě)入日志文件戈稿。
· --password=password
調(diào)用mysqladmin時(shí)使用的MySQL賬戶(hù)的密碼西土。請(qǐng)注意該密碼值不是可選項(xiàng),不象其它MySQL程序。
· --silent
禁用警告窍荧。
· --tcp-ip
通過(guò)TCP/IP端口而不是Unix套接字文件來(lái)連接每個(gè)MySQL服務(wù)器。(如果找不到套接字文件, 服務(wù)器仍然可以運(yùn)行快耿,但只能通過(guò) TCP/IP端口訪(fǎng)問(wèn))。默認(rèn)情況下猪半,使用Unix套接字文件進(jìn)行連接色冀。該選項(xiàng)影響stop和report操作。
· --user=user_name
調(diào)用mysqladmin時(shí)使用的MySQL賬戶(hù)的用戶(hù)名挪略。
· --verbose
更詳細(xì)历帚。
· --version
顯示版本信息并退出。
關(guān)于mysqld_multi的一些注解:
確保停止mysqld服務(wù)器(用mysqladmin程序)的MySQL賬戶(hù)在各個(gè)服務(wù)器中的用戶(hù)名和密碼相同杠娱。并且應(yīng)確保賬戶(hù)具有SHUTDOWN權(quán)限挽牢。如果你想要管理的服務(wù)器的管理賬戶(hù)有許多不同的用戶(hù)名或密碼,你需要在每個(gè)服務(wù)器上創(chuàng)建一個(gè)賬戶(hù)摊求,并具有相同的用戶(hù)名和密碼禽拔。例如,你可以執(zhí)行下面的命令為每個(gè)服務(wù)器設(shè)置一個(gè)普通multi_admin賬戶(hù):
shell> mysql -u root -S /tmp/mysql.sock -proot_password
mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'室叉;
你必須為每個(gè)mysqld服務(wù)器執(zhí)行該操作睹栖。當(dāng)連接時(shí)適當(dāng)更改連接參數(shù)。請(qǐng)注意賬戶(hù)名的主機(jī)部分必須允許你用multi_admin從你想要運(yùn)行mysqld_multi的主機(jī)進(jìn)行連接茧痕。
如果你使用mysqld_safe來(lái)啟動(dòng)mysqld(例如野来,--mysqld=mysqld_safe),--pid-file選項(xiàng)很重要踪旷。每個(gè)mysqld應(yīng)有自己的進(jìn)程ID文件曼氛。使用mysqld_safe而不使用mysqld的好處是mysqld_safe“守護(hù)”其mysqld進(jìn)程豁辉,如果用kill –9發(fā)送的信號(hào)或由于其它原因(例如分段故障)進(jìn)程終止,則重啟進(jìn)程舀患。請(qǐng)注意mysqld_safe腳本需要你從某個(gè)位置啟動(dòng)它秋忙。這說(shuō)明運(yùn)行mysqld_multi前你必須進(jìn)入某個(gè)目錄。如果啟動(dòng)時(shí)有問(wèn)題构舟,請(qǐng)參見(jiàn)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
· ----------------------------------------------------------------
上述行執(zhí)行的測(cè)試應(yīng)成功,否則你可能遇到了問(wèn)題狗超。
每個(gè)mysqld的Unix套接字文件和TCP/IP端口號(hào)必須不同弹澎。
你可能想要為mysqld使用--user選項(xiàng),但為此你需要用Unix root用戶(hù)運(yùn)行mysqld_multi腳本努咐。選項(xiàng)文件中有選項(xiàng)不要緊苦蒿;如果你不是超級(jí)用戶(hù),并且你用自己的Unix賬戶(hù)重啟mysqld進(jìn)程渗稍,你只會(huì)得到警告佩迟。
重要:確保mysqld進(jìn)程啟動(dòng)所用Unix賬戶(hù)可以完全訪(fǎng)問(wèn)數(shù)據(jù)目錄。不要使用Unix root賬戶(hù)竿屹,除非你知道你在做什么报强。
非常重要:使用mysqld_multi前,確保理解傳遞給mysqld服務(wù)器的選項(xiàng)的含義以及你為什么想要獨(dú)立的mysqld進(jìn)程拱燃。應(yīng)清楚 在相同的數(shù)據(jù)目錄下使用多個(gè)mysqld服務(wù)器的危險(xiǎn)秉溉。使用單獨(dú)的數(shù)據(jù)目錄,除非你知道你在做什么碗誉。在線(xiàn)程系統(tǒng)中召嘶,在相同的數(shù)據(jù)目錄下啟動(dòng)多個(gè)服務(wù)器不會(huì)得到超性能。
下面的示例顯示了你如何設(shè)置選項(xiàng)文件來(lái)使用mysqld_multi哮缺。專(zhuān)門(mén)省去第1個(gè)和第5個(gè)[mysqldN]組來(lái)說(shuō)明你的選項(xiàng)文件可以稍有不同弄跌。這樣給你更大的靈活性。mysqld程序重啟或停止的順序由它們?cè)谶x項(xiàng)文件中的順序決定尝苇。
# 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