詳解MySQL單實例和多實例啟動腳本
已知MySQL多實例啟動命令為:
mysqld_safe --defaults-file=/data/3306/my.cnf &
停止命令為:
mysqladmin -uroot -pchang123 -S /data/3306/mysql.sock shutdown
請完成mysql多實例的啟動腳本的編寫:
問題分析:
要想寫出腳本,必須對MySQL服務(wù)很熟悉。
1)單實例:
# Mysql啟動 mysqld_safe & # Mysql停止 mysqld_admin -u root -p Chang123 shutdown
# 設(shè)置root密碼 [root@vm1 scripts]# mysqladmin -uroot password "Chang123" # 先將mariadb停止 [root@vm1 scripts]# mysqladmin -uroot -pChang123 shutdown # 檢查進(jìn)程是否停止 [root@vm1 scripts]# netstat -atunlp |grep 3306 # 再啟動mysql [root@vm1 scripts]# mysqld_safe --user=mysql & [1] 11535 [root@vm1 scripts]# 230802 21:49:37 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'. 230802 21:49:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql # 再檢查mysql進(jìn)程是否已啟動 [root@vm1 scripts]# netstat -atunlp |grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 11681/mysqld
先是單實例的啟動腳本的編寫:
[root@vm1 scripts]# cat start_db.sh
#!/bin/bash
#
[ -f /etc/init.d/functions ] && . /etc/init.d/functions || echo 1
usage(){
echo “USAGE: $0 {start|stop|restart}
exit 1
}
if [ $# -ne 1 ]
then
usage
fi
start() {
mysqld_safe --user=mysql >/dev/null 2>&1 &
if [ $? -eq 0 ]
then
action "start mysql" /bin/true
else
action "start mysql" /bin/false
fi
}
stop() {
mysqladmin -uroot -pChang123 shutdown >/dev/null 2>&1
if [ $? -eq 0 ]
then
action "stop mysql" /bin/true
else
action "stop mysql" /bin/false
fi
}
restart() {
stop
sleep 2
start
}
if [ "$1" == "start" ]
then
start
elif [ "$1" == "stop" ]
then
stop
elif [ "$1" == "restart" ]
then
restart
else
usage
fi
執(zhí)行結(jié)果:
[root@vm1 scripts]# netstat -atunlp |grep 3306
[root@vm1 scripts]#
[root@vm1 scripts]# sh start_db.sh start
start mysql [ OK ]
[root@vm1 scripts]# 230802 22:17:56 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
230802 22:17:56 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
[root@vm1 scripts]# sh start_db.sh restart
stop mysql [ OK ]
start mysql [ OK ]
[root@vm1 scripts]# 230802 22:18:19 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
230802 22:18:19 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
[root@vm1 scripts]#
將一些信息都不顯示出來:
[root@vm1 scripts]# sh start_db.sh start start mysql [ OK ] [root@vm1 scripts]# sh start_db.sh stop stop mysql [ OK ] [root@vm1 scripts]# sh start_db.sh restart stop mysql [ OK ] start mysql [ OK ] [root@vm1 scripts]# netstat -atunlp |grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 13173/mysqld
多實例啟動腳本:
[root@vm1 scripts]# cat mysql_manage.sh
#!/bin/bash
#
Port=3306
MysqlUser="root"
MysqlPassword="Chang123"
CmdPath="/usr/local/mysql/bin"
#start function
start() {
if [ `netstat -auntlp |grep "$Port" | wc -l` -eq 0 ]
then
echo "Starting MySQL..."
/bin/sh ${CmdPath}/mysqld_safe --defaults-fle=/data/${Port}/my.cnf 2>&1 >/dev/null &
else
echo "MySQL is running..."
}
#stop function
stop(){
if [ `netstat -atunlp |grep "$Port" | wc -l` -eq 0 ]
then
echo "Stopping MySQL..."
${CMDPath}/mysqladmin -u ${MysqlUser} -p {$MysqlPassword} -S /data/${Port}/mysql.sock shutdown
else
echo "MySQL is stopped..."
fi
}
#restart function
restart(){
echo "Restarting MySQL..."
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "USAGE: $0 {start|stop|restart}"
esac代碼說明:
1)其中使用了case語句。
把這個腳本放到/etc/init.d/目錄中,實現(xiàn)/etc/init.d/mysqld01 start 啟動,并通過chkconfig對其設(shè)置開機自啟動和關(guān)閉。
如果自己寫腳本,也就是放到/etc/init.d目錄中,作為啟動腳本。
在腳本中添加這塊內(nèi)容,設(shè)置mysql的開機自啟動。
# chkconfig: 2345 20 80 # description: Start mysql and stop mysql script.
man chkconfig,看看chkconfig的幫助文檔。

2345是運行的級別。
20:啟動優(yōu)先級
80: 停止優(yōu)先級
你應(yīng)該能指出descripion的內(nèi)容。\ 反斜線是換行繼續(xù)。忽略掉在行前面的空格。
多看man幫助文檔。
看看/etc/init.d/rpcbind



需要注意的是:數(shù)字可設(shè)置成不一樣的,但是要確保啟動優(yōu)先級在rc.d的子目錄中不要有沖突。切記。
企業(yè)面試題:
怎么把自己寫的腳本添加到服務(wù)里面,即可以使用service命令來調(diào)用?
# chkconfig 2345 21 60
# description: Save and restores system entropy pool for \
到此這篇關(guān)于MySQL單實例和多實例啟動腳本的文章就介紹到這了,更多相關(guān)MySQL單實例和多實例啟動腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)備份之mysqldump的使用詳解
下面小編就為大家?guī)硪黄狹ySQL數(shù)據(jù)備份之mysqldump的使用詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
MySQL 5.5.x my.cnf參數(shù)配置優(yōu)化詳解
今天正好看到一篇有關(guān)my.cnf優(yōu)化的總結(jié),雖然還沒經(jīng)過我自己的實踐檢驗,但從文章內(nèi)容來說已經(jīng)寫的很詳細(xì)了(當(dāng)然,事實上下面這篇文章很多地方只是翻譯了my.cnf原始配置文件的說明,呵呵),所以特地轉(zhuǎn)載收藏一下2015-08-08
通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的全流程
.ibd 文件是 InnoDB 存儲引擎的核心數(shù)據(jù)文件,存儲表的行數(shù)據(jù)、索引及元信息,本文主要為大家介紹了通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的全流程,需要的朋友可以參考下2025-11-11
從基礎(chǔ)到進(jìn)階詳解MySQL高效查詢表數(shù)據(jù)量的優(yōu)化指南
這篇文章主要為大家詳細(xì)介紹了多種MySQL中高效查詢MySQL表數(shù)據(jù)量的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-02-02
Win10系統(tǒng)下MySQL8.0.16 壓縮版下載與安裝教程圖解
這篇文章主要介紹了Win10系統(tǒng)下MySQL8.0.16 壓縮版下載與安裝教程圖解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考解決價值,需要的朋友可以參考下2019-06-06

