MySQL distributions on Unix and Unix like system include a script named mysql.server , which starts the MySQL server using mysqld_safe. It can be used ...
MySQL distributions on Unix and Unix-like system include a script named mysql.server, which starts the MySQL server using mysqld_safe. It can be used on systems such as Linux and Solaris that use System V-style run directories to start and stop system services. It is also used by the macOS Startup Item for MySQL.
mysql.server是官方針對Unix
和類Unix
系統二進位版本安裝包當中包含的腳本,它是一個SHELL
腳本,被用來啟動、查看和停止mysqld
進程服務。mysql.server其實上調用的是mysqld_safe
命令。
更詳細的關於mysql.server的說明可以參考官方文檔:https://dev.mysql.com/doc/refman/5.7/en/mysql-server.html
本文使用的MySQL版本為5.7.21
。
# mysqld -V
mysqld Ver 5.7.21 for linux-glibc2.12 on x86_64 (MySQL Community Server (GPL))
- 如果使用
RPM
包的安裝方式進行安裝MySQL後,mysql.server這個腳本會被放在/etc/init.d/
下麵,並且命名為mysqld
或者mysql
; - 如果是二進位包的安裝方式,則mysql.server放在二進位安裝目錄下
support-files
的目錄下麵。
主要用法
- 1、啟動
mysqld
服務
# mysql.server start
- 2、查看
mysqld
狀態
# mysql.server status
- 3、停止
mysqld
服務
# mysql.server stop
- 4、重啟
mysqld
服務
# mysql.server restart
- 5、平滑重啟
mysqld
服務
# mysql.server reload
自定義
mysql.server是一個SHELL
腳本,其中有一些選項在沒有明確指定的時候是有預設值,比如basedir
預設路徑為/usr/local/mysql
等。通常以二進位包進行安裝的時候,有些路徑需要自定義,否則mysql.server無法找到相應的路徑,也就無法完成mysqld
進程服務的管理。
可以通過VIM
等編輯器對mysql.server腳本進行編輯與修改。
主要修改選項路徑如下:
1、添加basedir、datadir和config配置
大概在mysql.server腳本的43行處。
43 # If you change base dir, you must also change datadir. These may get
44 # overwritten by settings in the MySQL configuration files.
45
46 basedir= #二進位包安裝的目錄
47 datadir= #數據文件所在的目錄
48 config= #此處為新增選項,配置需要使用的參數文件路徑
此處可以修改為:
basedir=/usr/local/mysql5.7
datadir=/data/mysql/data
config=/data/mysql/3306/my.cnf
2、指定mysqld的PID文件
61 # The following variables are only set for letting mysql.server find things.
62
63 # Set some defaults
64 mysqld_pid_file_path=
此處可以修改為:
61 # The following variables are only set for letting mysql.server find things.
62
63 # Set some defaults
64 mysqld_pid_file_path=/data/mysql/3306/mysql.pid
3、註釋解析預設參數文件方法
mysqld
啟動時,預設尋找的參數文件路徑如下:
/etc/my.cnf ---> /etc/mysql/my.cnf ---> /usr/local/mysql/etc/my.cnf ---> ~/.my.cnf
而mysql.server腳本預設會按照這個順序去解析(通過my_print_defaults
這個命令實現)這幾個參數文件,而為了防止mysql.server去解析這幾個參數文件當中的參數選項,這時還是通過修改mysql.server腳本選項來實現,以便於使用自定義的參數文件。
大概在mysql.server腳本的240行處。
229 #
230 # Read defaults file from 'basedir'. If there is no defaults file there
231 # check if it's in the old (depricated) place (datadir) and read it from there
232 #
233
234 extra_args=""
235 if test -r "$basedir/my.cnf"
236 then
237 extra_args="-e $basedir/my.cnf"
238 fi
239
240 parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`
可以註釋240行,如下:
…………省略…………
237 extra_args="-e $basedir/my.cnf"
238 fi
239
240 # 註釋這行
240 # parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`
這樣當通過mysql.server來啟動mysqld
時就不會去解析預設路徑下的參數文件
4、修改mysqld_safe啟動時的參數文件
預設情況下mysqld_safe啟動時是沒有選項--defaults-file
指定參數的。可以添加這個選項指定所需的參數路徑。
大概在mysql.server腳本的264行處。
264 # Give extra arguments to mysqld with the my.cnf file. This script
265 # may be overwritten at next upgrade.
266 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
267 wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
268
可以添加conf
配置:
# 此處配置的參數文件為前面新增選項的參數文件
266 $bindir/mysqld_safe --defaults-file="$config" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
至此,現在可以通過mysql.server來管理mysqld
進程服務的狀態了,也可以放在/etc/init.d/
下當作系統服務進行管理,當然前提是這個腳本必須具備可執行許可權。
參考
☆〖本人水平有限,文中如有錯誤還請留言批評指正!〗☆