目錄
- MySQL讀取my.cnf的順序
- 一、mysql.server啟動方式
- 二、mysqld_safe啟動方式
- 三、關(guān)于mysqld和my_print_defaults讀取my.cnf順序
MySQL讀取my.cnf的順序
一、mysql.server啟動方式
basedir=/opt/mysql/mysql3315
datadir=/opt/mysql/mysql3315/data
進行查找,在解析參數(shù)文件的時候會帶入 -e進行解析
/opt/mysql/mysql3315/bin/my_print_defaults -e /opt/mysql/mysql3315/my.cnf mysqld server mysql_server mysql.server
也就是—defaults-extra-file,獲取的目錄包含basedir、datadir、pid-file,但是pid-file參數(shù)可能不存在
使用如下
if test -z "$mysqld_pid_file_path"
then
mysqld_pid_file_path=$datadir/`hostname`.pid
else
case "$mysqld_pid_file_path" in
/* ) ;;
* ) mysqld_pid_file_path="$datadir/$mysqld_pid_file_path" ;;
esac
fi
換算出位置和文件名。最終調(diào)入的參數(shù)如下:
/opt/mysql/mysql3315/bin/mysqld_safe --datadir=/opt/mysql/mysql3315/data/ --pid-file=/opt/mysql/mysql3315/data//mgr4.pid
二、mysqld_safe啟動方式
- 通過mysqld_safe位置進行反推,反推能夠得到basedir目錄,并且會設(shè)置MYSQL_HOME為basedir
- 然后解析參數(shù)文件需要獲取的參數(shù)比較多,不進行列舉
/opt/mysql/mysql3315/bin/my_print_defaults mysqld server mysql_server mysql.server
注意:這里沒有設(shè)置-e因為設(shè)置了MYSQL_HOME目錄會自行解析其下面的參數(shù)文件,解析位置見最后。
nohup /opt/mysql/mysql3315/bin/mysqld --basedir=/opt/mysql/mysql3315 --datadir=/opt/mysql/mysql3315/data
--plugin-dir=/opt/mysql/mysql3315/lib/plugin --user=mysql
--log-error=/opt/mysql/mysql3315/logs/mysql3315.err --pid-file=/opt/mysql/mysql3315/data//mgr4.pid
--socket=/opt/mysql/mysql3315/data/mysql3315.sock --port=3315
注意:有open_files_limits的情況下這里會帶上open_file_limits而覆蓋mysqld使用的參數(shù)文件中的配置
啟動后會進行如下的循環(huán),會通過eval命令堵塞在mysqld的調(diào)用,如果進程退出則返回,進行循環(huán)判斷,最后會根據(jù)pid是否存在判斷是否是正常的關(guān)閉mysqld判斷方式是kill -0 pid進行判斷mysqld進程是否存在。不存在則拉起來。
while true
do
echo 1
start_time=`date +%M%S`
eval_log_error "$cmd"
if [ -n "$mysqld_ld_library_path" ]; then
new_text="$mysqld_ld_library_path"
[ -n "$LD_LIBRARY_PATH" ] new_text="$new_text:$LD_LIBRARY_PATH"
text="${text}LD_LIBRARY_PATH="`shell_quote_string "$new_text"`' '
fi
```
/home/work/ssd1/mysql/install/bin/mysqld_safe —defaults-file=/home/work/ssd1/mysql/etc/3307/my.cnf —socket=/home/work/ssd1/mysql/sock/3307/mysql.sock —datadir=/home/work/ssd1/mysql/data/3307 —user=mysql
如果這樣啟動my_print_defaults 會帶上 —defaults-file
/opt/mysql/mysql3320/install/bin/my_print_defaults —defaults-file=/home/work/ssd1/mysql/etc/3307/my.cnf —loose-verbose mysqld server
三、關(guān)于mysqld和my_print_defaults讀取my.cnf順序
實際上這個函數(shù)init_default_directories函數(shù)中
其中順序為:
—defaults-file最先讀取,并且為只讀取這個配置文件,并且為第一個選項>
- /etc/my.cnf
- /etc/mysql/my.cnf
- DEFAULT_SYSCONFDIR 編譯時配置下的my.cnf
- MYSQL_HOME 設(shè)置。mysqld_safe會設(shè)置MYSQL_HOME,就會讀取下面的my.cnf。
- —defaults-extra-file的設(shè)置,my_print_defaults和mysqld均由這個設(shè)置。
- ~/.my.cnf
- 從解析的順序來看最后會加載命令行參數(shù)。
解析完成后全部參數(shù)羅列,多個同名參數(shù)以最后一個生效
到此這篇關(guān)于MySQL讀取my.cnf的順序問題詳情的文章就介紹到這了,更多相關(guān)MySQL讀取my.cnf的順序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 通過shell腳本對mysql的增刪改查及my.cnf的配置
- 解決Linux安裝mysql 在/etc下沒有my.cnf的問題
- mysql 5.7 的 /etc/my.cnf 參數(shù)介紹
- MySQL中配置文件my.cnf因權(quán)限問題導致無法啟動的解決方法
- mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說明詳解(16G內(nèi)存)
- MySQL修改my.cnf配置不生效的解決方法
- MySQL 5.5.x my.cnf參數(shù)配置優(yōu)化詳解
- MySQL配置文件my.cnf優(yōu)化詳解(mysql5.5)
- MySQL性能優(yōu)化之路---修改配置文件my.cnf
- MariaDB(Mysql分支)my.cnf配置文件中文注釋版
- MySQL配置文件my.cnf參數(shù)優(yōu)化和中文詳解
- MySQL配置文件my.cnf中文詳解附mysql性能優(yōu)化方法分享
- MySQL配置文件my.cnf中文版對照
- 對MySQL配置參數(shù) my.ini/my.cnf的詳細解析