時間: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
相關閱讀
熱門文章 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦MySQL常用維護管理工具Linux VPS/服務器上輕松導入、導出MySQL數(shù)據(jù)MySQL復制的概述、安裝、故障、技巧、工具
人氣排行 MySQL數(shù)據(jù)庫啟動失敗1067進程意外終止的解決辦法總結Mysql 1045錯誤解決辦法10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦MySQL服務器進程CPU占用100%解決辦法MySQL導出導入命令的用例MySQL無法啟動、無法停止各種解決方法總結三種常用的MySQL建表語句Mysql清空表的實現(xiàn)方法