久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中如何實(shí)現(xiàn)service啟動(dòng)腳本

共計(jì) 2833 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。

這篇文章主要介紹了 MySQL 中如何實(shí)現(xiàn) service 啟動(dòng)腳本,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

我們?cè)诖罱?MySQL 環(huán)境的時(shí)候,一般都會(huì)按照建議的標(biāo)準(zhǔn)規(guī)范來(lái)做,比如拷貝 mysql.server 到自啟動(dòng)目錄下。

cp -rf $basedir/support-files/mysql.server /etc/init.d/mysql

然后設(shè)置 MySQL 自啟動(dòng)的服務(wù),配置完成之后就可以運(yùn)行命令 service mysql.server start 來(lái)啟動(dòng) MySQL 了。

/sbin/chkconfig –add mysql
/sbin/chkconfig –level 2345 mysql on

  當(dāng)然這個(gè)是自動(dòng)擋的操作,我們也可以手動(dòng)檔完成。我們來(lái)看看這個(gè)神奇的腳本在做些什么。腳本的內(nèi)容較長(zhǎng),我就列出一部分內(nèi)容來(lái)。

首先這個(gè)文件的名字沒(méi)有直接的影響了,我們可以用 mysql mysql.server 等等,在這個(gè)目錄下注冊(cè)都可以正常識(shí)別。

# service mysql status
 SUCCESS! MySQL (Percona Server) running (15924) 在 /etc/inid.d 這個(gè)目錄下,這個(gè) mysql 命名的腳本文件其實(shí)也不大,大概 10K 的內(nèi)容, 不到 400 行的腳本量。  # ll mysql
-rwxr-xr-x 1 root root 11056 Aug 28  2013 mysql 我們?nèi)〕鲋攸c(diǎn)的部分來(lái)解析。

首先這個(gè)腳本支持 start,stop,restart,reload(或者是 force-reload),status 這個(gè)幾個(gè)選項(xiàng)。

start 的部分核心部分即為:

# may be overwritten at next upgrade.
  $bindir/mysqld_safe –datadir= $datadir –pid-file= $mysqld_pid_file_path $other_args /dev/null 2 1
  wait_for_pid created $! $mysqld_pid_file_path return_value=$?

  其實(shí)這個(gè)選項(xiàng)很容易理解了,就是 mysqld_safe 來(lái)啟動(dòng),需要制定幾個(gè)啟動(dòng)參數(shù),有些參數(shù)雖然為空,但是會(huì)從 /etc/my.cnf 中獲取,也可以支持額外的擴(kuò)展參數(shù)。

  我們修改下腳本,把這幾個(gè)參數(shù)值手工打印出來(lái)。

分別是 $bindir  $datadir  $mysqld_pid_file_path $other_args

# service mysql  start
Starting MySQL (Percona Server)
/usr//bin
/U01/mysql
/U01/mysql/mysql.pid

…… SUCCESS!datadir 會(huì)有一系列校驗(yàn),但是也會(huì)以 /etc/my.cnf 的優(yōu)先

# cat /etc/my.cnf|grep datadir
datadir = /U01/mysql

另外 basedir 也是類(lèi)似,你看 my.cnf 里設(shè)置的如果不夠規(guī)范,也在應(yīng)用的時(shí)候就是 /usr//bin 了。

# cat /etc/my.cnf|grep basedir
basedir = /usr/

接下來(lái) mysqld_safe 的腳本下面會(huì)有較多的校驗(yàn)。

wait_for_pid created $! $mysqld_pid_file_path return_value=$? 啟動(dòng)的過(guò)程中,會(huì)在 /var/lock/subsys 下生成一個(gè)鎖定文件,就是一個(gè)進(jìn)程號(hào)的標(biāo)記。 
# ll /var/lock/subsys/mysql
-rw-r–r– 1 root root 0 May  9 23:03 /var/lock/subsys/mysqlwait_for_pid 這個(gè)函數(shù)會(huì)調(diào)用 created(start 模式),removed(stop 模式)來(lái)處理 pid 文件。

  而 stop 模式的實(shí)現(xiàn)相對(duì)更直接一些, 它是使用 kill - 0 的方式來(lái)檢測(cè)進(jìn)程是否存在,如果存在則使用 kill 的命令來(lái)殺掉 mysqld 進(jìn)程。

 if test -s $mysqld_pid_file_path
  then
  mysqld_pid=`cat $mysqld_pid_file_path `
  if (kill -0 $mysqld_pid 2 /dev/null)
  then
  echo $echo_n Shutting down MySQL (Percona Server)
  kill $mysqld_pid
  # mysqld should remove the pid file when it exits, so wait for it.
  wait_for_pid removed $mysqld_pid $mysqld_pid_file_path return_value=$?
  else
  log_failure_msg MySQL (Percona Server) server process #$mysqld_pid is not running!
  rm $mysqld_pid_file_path
  fi 這個(gè)過(guò)程中,后臺(tái)日志會(huì)逐步輸出,然后釋放鎖定文件。

reload 的過(guò)程使用的相對(duì)和緩, 使用了 kill -HUP 的選項(xiàng), 如果想要更改配置而不需停止并重新啟動(dòng)服務(wù),可以使用這個(gè)選項(xiàng)。

reload | force-reload )
  if test -s $mysqld_pid_file_path then
  read mysqld_pid   $mysqld_pid_file_path
  kill -HUP $mysqld_pid log_success_msg Reloading service MySQL (Percona Server)
  touch $mysqld_pid_file_path
  else
  log_failure_msg MySQL (Percona Server) PID file could not be found!
  exit 1
  fi

 restart 的部分就是間接調(diào)用 stop 和 start 選項(xiàng)。

restart )
  # Stop the service and regardless of whether it was
  # running or not, start it again.
  if $0 stop  $other_args; then
  $0 start $other_args
  else
  log_failure_msg Failed to stop running server, so refusing to try to start.
  exit 1
  fistatus 的部分更簡(jiǎn)單,就是讀取 pid 文件中的進(jìn)程號(hào)信息。

  不要小看這個(gè)腳本,里面涉及不少邏輯校驗(yàn),也可以在這個(gè)基礎(chǔ)上根據(jù)自己的需求來(lái)做一些改變。至少在這一點(diǎn)上,這個(gè)腳本是可以根據(jù)我們的需求來(lái)定制的。

感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“MySQL 中如何實(shí)現(xiàn) service 啟動(dòng)腳本”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-27發(fā)表,共計(jì)2833字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 石狮市| 敦煌市| 靖州| 庐江县| 治多县| 那曲县| 吴旗县| 福海县| 乐亭县| 灌阳县| 沾化县| 新安县| 梁山县| 原平市| 新津县| 汝州市| 潮州市| 肥西县| 剑川县| 阳春市| 武威市| 库伦旗| 苍山县| 湘西| 抚顺县| 阳山县| 三江| 景东| 德令哈市| 临夏市| 甘南县| 周宁县| 广德县| 颍上县| 五莲县| 平和县| 河曲县| 南宫市| 仁布县| 鄂州市| 石楼县|