mysqld_safe詳解

4.3.2mysqld_safe-伺服器啟動腳本
    ++++++++++++++++++++
    Unix上建議使用的去啟動mysqld伺服器的方法;mysqld_safe增加瞭一些安全特性,例如當出現錯誤時重啟伺服器並向錯誤日志文件寫入運行時間信息;
    對於mysql5.7.6來說,如果使用rpm安裝,伺服器的啟動和關閉是操作系統管理的(systemd);這樣,mysqld_safe就不安裝,因為沒用;
    mysqld_safe會從配置文件的[mysqld] [server] [mysqld_safe]區域讀取配置選項;
    為瞭向後兼容,mysqld_safe也會讀取[safe_mysqld]區域的配置選項,但是現在,應該使用[mysqld_safe]:
    mysqld_safe有很多選項:......
    mysqld_safe的許多選項和mysqld一樣;
    如果mysqld_safe不能理解命令行中指定的選項,那麼這些選項將會發送給mysqld;
    如果[mysqld_safe]組下邊的選項不能被mysqld_safe理解,那麼會被忽略;

    mysqld_safe tries to start an executable named mysqld. To override the default behavior and specify explicitly the name of the server you want to run,
    specify a --mysqld or --mysqld-version option to mysqld_safe. You can also use --ledir to indicate the directory where mysqld_safe should look for the server

    選項:
    --help 顯示幫助信息並退出;
    --basedir=dirname mysql的安裝目錄的路徑;
    --core-file-size=size mysqld能夠創建的核心文件的大小;這個選項的值被傳遞給瞭ulimit -c 
    --datadir=dirname 數據文件的路徑;
    --defaults-extra-file=file_name 常用的配置文件之外的被讀取的配置文件;在命令行中使用的話,它必須是第一個選項;如果指定的文件不存在或不能訪問,伺服器將退出並報錯;
    --defaults-file=file_name 被讀取的代替常用配置文件的文件;在命令行中使用的話,它必須是第一個選項,不然,該選項無效;
    --ledir=dirname 如果mysqld_safe 找不到伺服器,使用這個選項去指定伺服器的位置;
    --log-error=file_name 將錯誤日志寫到指定文件;
    --mysqld-safe-log-timestamps 控制mysqld_safe輸出日志文件裡的時間戳的格式
        UTC,utc 這是默認的 (same as --log_timestamps=UTC for the server);
        SYSTEM,system 本地格式 (same as --log_timestamps=SYSTEM for the server);
        HYPHEN,hyphen (YY-MM-DD hh:mm:ss)
        LEGACY,legacy (YYMMDD hh:mm:ss)
    --malloc-lib=[lib_name] The name of the library to use for memory allocation instead of the system malloc() library
    --mysqld=prog_name 想要啟動的mysql伺服器程式(在ledir下)
    --mysqld-version=suffix 這個選項和--mysqld相似,但是隻需要指定後綴就可以;mysql假定程式的基名是mysqld;
        例如:如果你使用的是--mysqld-version=debug,那麼mysqld_safe將會啟動ledir目錄下的mysqld-debug程式;
                如果--mysqld-version選項的值是空,那麼mysqld_safe將會啟動ledir目錄下的mysqld程式;
    --nice=priority 使用nice程式設置優先級;
    --no-defaults 不要讀取任何配置文件;如果在命令行中指定瞭這個選項,那麼它必須是第一個選項;
    --open-files-limit=count mysqld能夠打開的文件的的數量,這個選項的值被傳遞給ulimit -n;
    --pid-file=file_name 進程ID文件的路徑名
        In MySQL 5.7.2 and later, mysqld_safe creates a PID file named mysqld_safe.pid in the MySQL data directory when starting up (Bug #16776528).
    --plugin-dir=dir_name 插件路徑;
    --port=port_num 使用TCP/IP連接的時候伺服器使用的端口號;端口號必須不小於1024,除非使用root系統用戶;
    --skip-kill-mysqld 啟動的時候不要殺死stray(無主的,跑偏的)mysqld進程;隻在Linux系統中有效;
    --socket=path 監聽本地連接的時候mysql伺服器使用的套接字文件;
    --syslog,--skip-syslog 前者將錯誤信息發送的syslog日志;後者則限制使用syslog,錯誤信息寫到錯誤日志文件;
    --syslog-tag=tag 如果使用syslog記錄日志的話,mysqld_safe和mysqld產生的消息將分別使用mysqld_safe和mysqld作為標識符;
        為瞭給標識符指定一個後綴,可以使用這個選項;那麼,標識符就成瞭mysqld_safe-tag和mysqld-tag;
        mysql5.7.5不贊成使用這個選項來記錄日志,相反,建議使用log_syslog_tag系統變量;
    --timezone=timezone Set the TZ time zone environment variable to the given option value. Consult your operating system documentation for legal time zone specification formats.
    --user={user_name|user_id} 
        Run the mysqld server as the user having the name user_name or the numeric user ID user_id.
        (“User” in this context refers to a system login account, not a MySQL user listed in the grant tables.)

    The mysqld_safe script is written so that it normally can start a server that was installed from either
    a source or a binary distribution of MySQL, even though these types of distributions typically install the
    server in slightly different locations. (See Section 2.1.4, “Installation Layouts”.) mysqld_safe expects
    one of the following conditions to be true:
    1、可以找到相對於工作目錄的服務和資料庫(工作目錄:  mysqld_safe被調用的目錄)
        對於二進制安裝來說,mysqld_safe在工作目錄下找bin和data目錄;
        對於源碼安裝來說,mysqld_safe在工作目錄下找libexec和var目錄;   
        如果你從mysql的安裝目錄執行mysqld_safe的話,上面的條件應該被滿足;
    2、如果在工作目錄的相對目錄裡邊找不到服務和資料庫,mysqld_safe將試圖使用絕對路徑;
        典型的路徑是/usr/local/libexec和/usr/local/var; 實際的位置是編譯的時候指定的;

    因為mysqld_safe試圖在它自己的工作目錄的相對目錄下找服務和資料庫,所以可以將二進制的mysql安裝到任何地方,隻要你在安裝目錄下運行mysqld_safe
        shell> cd mysql_installaion_direction
        shell> bin/mysqld_safe &

    如果在安裝目錄下運行mysqld_safe也失敗瞭,那麼請使用--ledir和--datadir選項指定服務和資料庫所在的目錄;

    mysqld_safe tries to use the sleep and date system utilities to determine how many times per
    second it has attempted to start. If these utilities are present and the attempted starts per second is
    greater than 5, mysqld_safe waits 1 full second before starting again. This is intended to prevent
    excessive CPU usage in the event of repeated failures. (Bug #11761530, Bug #54035)

    當使用mysqld_safe啟動mysqld的時候,mysqld_safe將它自己和mysqld的錯誤日志放到同一個地方;
        有幾個控制日志的選項 :--syslog,--skip-syslog,--log-error=file_name

You May Also Like