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

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

mysql隨Linux開機自動啟動

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

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

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

  1. Linux開機自動啟動腳本放在哪兒?

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

  2. Linux如何運行這些腳本?

  既然已經(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í)行時Linux會給它傳遞一個start參數(shù)(如果以字母K開頭,則會傳遞stop參數(shù));S后面接個數(shù)字,表示了這個腳本的啟動順序,如果目錄rc3.d下還有S98*那么它會在S99之前運行。(看到這兒,你可以猜測一下前面我們?yōu)槭裁匆獎?chuàng)建軟連接了)

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

  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在關閉主機的時候自動關閉,那么stop參數(shù)就可以起作用了:

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

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

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

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

關鍵詞標簽:mysql,Linux

相關閱讀

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

熱門文章 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦MySQL常用維護管理工具MySQL常用維護管理工具Linux VPS/服務器上輕松導入、導出MySQL數(shù)據(jù)Linux VPS/服務器上輕松導入、導出MySQL數(shù)據(jù)MySQL復制的概述、安裝、故障、技巧、工具MySQL復制的概述、安裝、故障、技巧、工具

相關下載

人氣排行 MySQL數(shù)據(jù)庫啟動失敗1067進程意外終止的解決辦法總結Mysql 1045錯誤解決辦法10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦MySQL服務器進程CPU占用100%解決辦法MySQL導出導入命令的用例MySQL無法啟動、無法停止各種解決方法總結三種常用的MySQL建表語句Mysql清空表的實現(xiàn)方法