詳解MySQL單實(shí)例和多實(shí)例啟動(dòng)腳本
已知MySQL多實(shí)例啟動(dòng)命令為:
mysqld_safe --defaults-file=/data/3306/my.cnf &
停止命令為:
mysqladmin -uroot -pchang123 -S /data/3306/mysql.sock shutdown
請(qǐng)完成mysql多實(shí)例的啟動(dòng)腳本的編寫:
問題分析:
要想寫出腳本,必須對(duì)MySQL服務(wù)很熟悉。
1)單實(shí)例:
# Mysql啟動(dòng) 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 # 再啟動(dòng)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)程是否已啟動(dòng) [root@vm1 scripts]# netstat -atunlp |grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 11681/mysqld
先是單實(shí)例的啟動(dòng)腳本的編寫:
[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
多實(shí)例啟動(dòng)腳本:
[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語句。
把這個(gè)腳本放到/etc/init.d/目錄中,實(shí)現(xiàn)/etc/init.d/mysqld01 start 啟動(dòng),并通過chkconfig對(duì)其設(shè)置開機(jī)自啟動(dòng)和關(guān)閉。
如果自己寫腳本,也就是放到/etc/init.d目錄中,作為啟動(dòng)腳本。
在腳本中添加這塊內(nèi)容,設(shè)置mysql的開機(jī)自啟動(dòng)。
# chkconfig: 2345 20 80 # description: Start mysql and stop mysql script.
man chkconfig,看看chkconfig的幫助文檔。
2345是運(yùn)行的級(jí)別。
20:?jiǎn)?dòng)優(yōu)先級(jí)
80: 停止優(yōu)先級(jí)
你應(yīng)該能指出descripion的內(nèi)容。\ 反斜線是換行繼續(xù)。忽略掉在行前面的空格。
多看man幫助文檔。
看看/etc/init.d/rpcbind
需要注意的是:數(shù)字可設(shè)置成不一樣的,但是要確保啟動(dòng)優(yōu)先級(jí)在rc.d的子目錄中不要有沖突。切記。
企業(yè)面試題:
怎么把自己寫的腳本添加到服務(wù)里面,即可以使用service命令來調(diào)用?
# chkconfig 2345 21 60
# description: Save and restores system entropy pool for \
到此這篇關(guān)于MySQL單實(shí)例和多實(shí)例啟動(dòng)腳本的文章就介紹到這了,更多相關(guān)MySQL單實(shí)例和多實(shí)例啟動(dòng)腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MYSQL updatexml()函數(shù)報(bào)錯(cuò)注入解析
這篇文章主要介紹了MYSQL updatexml()函數(shù)報(bào)錯(cuò)注入解析,并且簡(jiǎn)單介紹了updatexml函數(shù),具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10千萬級(jí)用戶系統(tǒng)SQL調(diào)優(yōu)實(shí)戰(zhàn)分享
這篇文章主要介紹了千萬級(jí)用戶系統(tǒng)SQL調(diào)優(yōu)實(shí)戰(zhàn)分享,用戶日活百萬級(jí),注冊(cè)用戶千萬級(jí),而且若還沒有進(jìn)行分庫分表,則該DB里的用戶表可能就一張,單表上千萬的用戶數(shù)據(jù),下面我們就來學(xué)習(xí)如何讓優(yōu)化,需要的朋友可以參考一下2022-03-03DDL數(shù)據(jù)庫與表的創(chuàng)建和管理深入講解使用教程
這篇文章主要介紹了DDL數(shù)據(jù)庫與表的創(chuàng)建和管理,系統(tǒng)架構(gòu)的層面來看,數(shù)據(jù)庫從大到小依次是數(shù)據(jù)庫服務(wù)器(上面安裝了DBMS和數(shù)據(jù)庫)、數(shù)據(jù)庫(也稱database或者schema)、數(shù)據(jù)表、數(shù)據(jù)表的行與列2023-04-04