IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫MYSQL → mysql隨Linux開機(jī)自動啟動

mysql隨Linux開機(jī)自動啟動

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  在MySQL的管理過程中,偶爾會遇到一些PC Server宕機(jī)或者重啟,這時(shí)我需要在主機(jī)啟動后再將MySQL服務(wù)啟動。一般情況下,這項(xiàng)工作都是簡單的。但是,當(dāng)面臨上百臺或者更多的MySQL主機(jī)的時(shí)候,這種"偶爾"可能會很多,這種"偶爾"還會在半夜或者凌晨發(fā)生,如果每次都手動操作,這是很繁瑣的。更重要的是,如果因此而打斷了凌晨的美夢是不值得的。

  要實(shí)現(xiàn)隨開啟自動啟動mysqld,我們需要搞定如下幾個問題:

  1. Linux開機(jī)自動啟動腳本放在哪兒?

  一般的,作為服務(wù)器使用的Linux一般會以"完全多用戶模式(Multi-User Mode with Networking)"級別來啟動,這種情況下Linux在啟動時(shí)會運(yùn)行/etc/rc.d/rc3.d/下的全部腳本。例如我們在這個目錄下會看到腳本"/etc/rc.d/rc3.d/S90crond",意味著開機(jī)啟動時(shí)會運(yùn)行S90crond腳本。

  2. Linux如何運(yùn)行這些腳本?

  既然已經(jīng)知道自動啟動腳本該放在哪兒了,一切就好辦。我們只需要將一個啟動MySQL的腳本放過去就好了。下面是我們的一個簡單的啟動腳本v0.1 mysqldauto

  $vi mysqldauto

  #!/bin/sh

  # Version: 0.1 by [email protected]

  /opt/mysql/bin/mysqld_safe --user=mysql &????? #這里需要修改為你的mysqld_safe目錄

  $chmod +x mysqldauto

  $mv mysqldauto /etc/rc.d/init.d/

  $ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc3.d/S99mysqld

  這樣我們就把創(chuàng)建的mysqldauto腳本放到了/etc/rc.d/rc3.d/下面(注意這里使用了link的方式),mysqld可以自動啟動了。

  這有兩個問題需要解釋:

  * * * * * 為什么不直接在目錄/etc/rc.d/rc3.d/下創(chuàng)建文件,而要創(chuàng)建一個軟連接?這并不是必須的。但是這樣做是有很多好處的(后面會解釋),不過這樣做至少會看起來更加專業(yè)。

  * * * * * 為什么文件名要用S99mysqld?這是規(guī)則,在rc3.d下面的腳本如果以字母S開頭,那么執(zhí)行時(shí)Linux會給它傳遞一個start參數(shù)(如果以字母K開頭,則會傳遞stop參數(shù));S后面接個數(shù)字,表示了這個腳本的啟動順序,如果目錄rc3.d下還有S98*那么它會在S99之前運(yùn)行。(看到這兒,你可以猜測一下前面我們?yōu)槭裁匆獎?chuàng)建軟連接了)

  好了,自此你的mysqld就已經(jīng)可以隨Linux開機(jī)自動啟動了。

  3. 怎樣做更專業(yè)些?

  上面這樣做,已經(jīng)可以解決問題了,不過寫法多少有些"山寨",下面我們看看怎樣改造一下。

  * * * * * 改造1:處理參數(shù)start。既然前面提到以字母S開頭的腳本會自動傳遞一個參數(shù)start,K則會傳遞stop。那么我再做如下修改:

  $vi mysqldauto

  #!/bin/sh

  # Version: 0.2 by [email protected]

  MYSQLHOME=/opt/mysql #這里需要修改為你的mysql安裝目錄

  if [ $# -ge 1 ];then

  mysqldProc=`ps -ef|grep -E "mysqld.+safe"|grep -v "grep"|wc -l`

  if [ $1 = "stop" ] ;then

  if [ $mysqldProc -eq 1 ];then

  $MYSQLHOME/bin/mysqladmin -uroot shutdown

  fi

  elif [ $1 = "start" ];then

  if [ $mysqldProc -eq 0 ];then

  $MYSQLHOME/bin/mysqld_safe --user=mysql &

  fi

  fi

  fi

  做了如此改造后,我們腳本需要接收兩個參數(shù)start stop了。如果你想讓你mysqld在關(guān)閉主機(jī)的時(shí)候自動關(guān)閉,那么stop參數(shù)就可以起作用了:

  $ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc0.d/K20mysqld

  這里做軟連接好處就體現(xiàn)出來了,啟動和關(guān)閉只需要用一個腳本就可以了。

  * * * * * 改造2:當(dāng)你面臨幾十上百臺主機(jī)的時(shí)候,MySQL的啟動參數(shù)可能會不一樣,例如備庫啟動時(shí)可能需要mysqld_safe –user=mysql –read_olny=1 &,這種情況怎么辦呢?這里提供一個解決思路。

  在主機(jī)上運(yùn)行一個腳本,探測當(dāng)前mysqld的啟動參數(shù),然后寫到一個指定的文件里。最后,在你的啟動腳本中,讀取這個文件里面的啟動參數(shù)來啟動mysqld。It works。

關(guān)鍵詞標(biāo)簽:mysql,Linux

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 Xbox Game Pass Xbox Game Pass 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦 MySQL常用維護(hù)管理工具 MySQL常用維護(hù)管理工具 MySQL數(shù)據(jù)庫啟動失敗1067進(jìn)程意外終止的解決辦法總結(jié) MySQL數(shù)據(jù)庫啟動失敗1067進(jìn)程意外終止的解決辦法總結(jié)

相關(guān)下載

    人氣排行 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦 MySQL數(shù)據(jù)庫啟動失敗1067進(jìn)程意外終止的解決辦法總結(jié) Mysql 1045錯誤解決辦法 MySQL服務(wù)器進(jìn)程CPU占用100%解決辦法 MySQL導(dǎo)出導(dǎo)入命令的用例 MySQL連接字符串的實(shí)際操作步驟匯總 MySQL無法啟動、無法停止各種解決方法總結(jié) 三種常用的MySQL建表語句