天天看點

【Mysql 學習】mysqld_safe:MySQL伺服器啟動腳本

      在unix和netware中推薦使用mysqld_safe來啟動mysqld伺服器。mysqld_safe增加了一些安全特性,例如當出現錯誤時重新開機伺服器并向錯誤日志檔案寫入運作時間資訊。

注釋:為了保持同舊版本mysql的向後相容性,mysql二進制分發版仍然包括safe_mysqld作為mysqld_safe的符号連結。但是,你不應再依賴它,因為再将來将删掉它。

預設情況下,mysqld_safe嘗試啟動可執行mysqld-max(如果存在),否則啟動mysqld。

該行為的含義是:

·在linux中,mysql-max rpm依賴該mysqld_safe的行為。rpm安裝可執行mysqld-max,使mysqld_safe從該點起自動使用可執行指令。

·如果你安裝包括mysqld-max伺服器的mysql-max分發版,後面更新到非-max的mysql版本,mysqld_safe仍然試圖運作舊的 mysqld-max伺服器。更新時,你應手動删除舊的mysqld-max伺服器以確定mysqld_safe運作新的mysqld伺服器。

要想越過預設行為并顯式指定你想要運作哪個伺服器,為mysqld_safe指定--mysqld或--mysqld-version選項。

mysqld_safe的許多選項與mysqld的相同的。所有在指令行中為mysqld_safe指定的選項被傳遞給mysqld。如果你想要使用mysqld不支援的mysqld_safe的選項,不要在指令行中指定。相反,在選項檔案的[mysqld_safe]組内将它們列出來。

mysqld_safe從選項檔案的[mysqld]、[server]和[mysqld_safe]部分讀取所有選項。為了保證向後相容性,它還讀取 [safe_mysqld]部分,盡管在mysql 5.1安裝中你應将這部分重新命名為[mysqld_safe]。

mysqld_safe支援下面的選項:

·--help

顯示幫助消息并退出。

·--autoclose

(隻在netware中)在netware中,mysqld_safe可以保持視窗。當你關掉mysqld_safe nlm時,視窗不按預設設定消失。相反,它提示使用者輸入:

**

如果你想讓netware自動關閉視窗,在mysqld_safe中使用--autoclose選項。

· --basedir=path

mysql安裝目錄的路徑。

·--core-file-size=size

mysqld能夠建立的核心檔案的大小。選項值傳遞給ulimit -c。

·--datadir=path

資料目錄的路徑。

·--defaults-extra-file=path

除了通用選項檔案所讀取的選項檔案名。如果給出,必須首選該選項。

·--defaults-file=path

讀取的代替通用選項檔案的選項檔案名。如果給出,必須首選該選項。

·--ledir=path

包含mysqld程式的目錄的路徑。使用該選項來顯式表示伺服器位置。

·--log-error=path

将錯誤日志寫入給定的檔案。參見5.11.1節,“錯誤日志”。

·--mysqld=prog_name

想要啟動的伺服器程式名(在ledir目錄)。如果你使用mysql二進制分發版但有二進制分發版之外的資料目錄需要該選項。

· --mysqld-version =suffix

該選項類似--mysqld選項,但你隻指定伺服器程式名的字尾。基本名假定為mysqld。例如,如果你使用--mysqld-version =max,mysqld_safe啟動ledir目錄中的mysqld-max程式。如果--mysqld-version的參數為空,mysqld_safe使用目錄中的mysqld。

·--nice=priority

使用nice程式根據給定值來設定伺服器的排程優先級。

·--no-defaults

不要讀任何選項檔案。如果給出,必須首選該選項。

·--open-files-limit=count

mysqld能夠打開的檔案的數量。選項值傳遞給 ulimit -n。請注意你需要用root啟動mysqld_safe來保證正确工作!

·--pid-file=path

程序id檔案的路徑。

·--port=port_num

 用來幀聽tcp/ip連接配接的端口号。端口号必須為1024或更大值,除非mysql以root系統使用者運作。

·--skip-character-set-client-handshake

忽略用戶端發送的字元集資訊,使用伺服器的預設字元集。(選擇該選項,mysql的動作與mysql 4.0相同)。

·--socket=path

用于本地連接配接的unix套接字檔案。

·--timezone=zone

為給定的選項值設定tz時區環境變量。從作業系統文檔查閱合法的時區規定格式。

·--user={user_name | user_id}

以使用者名user_name或數字使用者id user_id運作mysqld伺服器。(本文中的“使用者”指系統登入賬戶,而不是 授權表中的mysql使用者)。

執行mysqld_safe時,必須先給出--defaults-file或--defaults-extra-option,或不使用選項檔案。例如,該指令将不使用選項檔案:

   mysqld_safe --port=port_num --defaults-file=file_name

相反,使用下面的指令:

   mysqld_safe --defaults-file=file_name --port=port_num

一般情況mysqld_safe腳本可以啟動從源碼或二進制mysql分發版安裝的伺服器,即使這些分發版将伺服器安裝到稍微不同的位置。

mysqld_safe期望下面的其中一個條件是真的:

·可以根據調用mysqld_safe的目錄找到伺服器和資料庫。在二進制分發版中,mysqld_safe看上去在bin和data目錄的工作目錄下。對于源碼分發版,為libexec和var目錄。如果你從mysql安裝目錄執行mysqld_safe應滿足該條件(例如,二進制分發版為/usr/local/mysql)。

·如果不能根據工作目錄找到伺服器和資料庫,mysqld_safe試圖通過絕對路徑對它們定位。典型位置為/usr/local/libexec和/usr/local/var。實際位置由建構分發版時配置的值确定如果mysql安裝到配置時指定的位置,它們應該是正确的。

  因為mysqld_safe試圖通過工作目錄找到伺服器和資料庫,隻要你從mysql安裝目錄運作mysqld_safe,可以将mysql二進制分發版安裝到其它位置:

shell> cd mysql_installation_directory

shell> bin/mysqld_safe &

如果mysqld_safe失敗,即使從mysql安裝目錄調用仍然失敗,你可以指定--ledir和--datadir選項來訓示伺服器和資料庫在你的系統中的安裝目錄。

   一般情況,你不應編輯mysqld_safe腳本。相反,應使用指令行選項或my.cnf選項檔案的[mysqld_safe]部分的選項來配置mysqld_safe。一般不需要編輯mysqld_safe來正确啟動伺服器。但是,如果你編輯,将來更新mysql後會覆寫你修改的mysqld_safe版本,是以你應對你修改的版本進行備份以便将來重裝。

在netware中,mysqld_safe是一個netware loadable module (nlm),從原unix shell腳本移植。它執行:

1.    檢查系統和選項。

2.    檢查myisam表。

3.    保持mysql伺服器視窗。

4.    啟動并監視mysqld,如果因錯誤終止則重新開機。

5.    将mysqld的錯誤消息發送到資料目錄中的host_name.err 檔案。

6.    将mysqld_safe的螢幕輸出發送到資料目錄中的host_name.safe檔案。