MySQL MySQL多例項開機自動重啟

2021-09-22 19:01:52 字數 2454 閱讀 7713

一 簡介

作為mysql dba ,在維護資料庫的過程中,偶爾會遇到伺服器異常crash/重啟情況,dba需要在機器重啟之後將mysql資料庫重啟(當然也有可能其他的資料庫本文重點介紹mysql)。如果是一台機器重啟或者少數幾個例項還好方便維護,當例項個數成百上千時,遇到硬體更換,需要批量重啟伺服器時,乙個個人肉重啟資料庫例項未免太過麻煩。我們需要一種隨伺服器開機自動重啟的機制。

二 linux 伺服器啟動 知識點

redhat的啟動方式和執行次序是: 

1 載入核心

2 執行init程式

3 /etc/rc.d/rc.sysinit   # 由init執行的第乙個指令碼

4 /etc/rc.d/rc $runlevel # $runlevel為預設的執行模式,linux 共有7種執行模式,後續會介紹。

5 /etc/rc.d/rc.local     # 相應級別服務啟動之後、在執行該檔案(其實也可以把需要執行的命令寫到該檔案中)

6 /sbin/mingetty         # 等待使用者登入

這裡我們重點介紹/etc/rc.d/下的rcn.d目錄(n是0~6的數字,其他請參考 文件資料) ,

root@rac3:

/etc/rc.d# >ls

init.d rc rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.

local rc.sysinit

rc.sysinit根據inittab中的配置順序來執行rcn.d目錄下的指令碼,(注意rcn.d中放置的是init.d中指令碼的軟鏈結)其命名格式是: s

ks開始的檔案向指令碼傳遞start引數

k開始的檔案向指令碼傳遞stop引數

以k開頭的指令碼執行在以s開頭的指令碼之前,number決定相同字母開頭的指令碼執行的順序,s18mysqlatuo 執行順序在s19mysqlatuo之前。

假設預設的執行模式是3,系統就會按上述方式呼叫/etc/rc.d/rc3.d/下的指令碼。所以使用者可以在這個檔案中新增一些需要在系統完成初始化工作之後,使用者登入之前執行的命令或者啟動的服務 比如 mysql。

三 實踐

根據上述介紹的規則,在rc3.d下面配置mysql自動啟動的指令碼。本文一開始強調處理單機多例項的開啟自動重啟,在編寫指令碼時注意針對多個例項的處理,考慮到生產環節下 ,資料庫例項可能發生遷移/下線等操作,在指令碼中將埠寫死 的方式是不推薦的。

chmod +x mysqldauto

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

處理啟動命令

ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc3.d/s99mysqld

處理關閉命令

ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc0.d/k20mysqld

mysqlauto 指令碼的內容如下:

#!/bin/bash

#獲取 資料目錄下的所有埠 mysql_ports

#author :yangyi

#date  : 2016-02-15

mysql_admin=`which mysqladmin`

mysqld_safe=`which mysqld_safe`

mysql_ports=`ls /srv/ | grep -e "my[0-9][0-9]*" | sed 's#my# #g' | tr -d '\n' | sed 's#^ ##g'`

mysql_start()

/run/mysql.sock

if [[  ! -f "$socket_file" ]]; then

$mysqld_safe --defaults-file=/srv/my$/my.cnf  --read_only=1 &

sleep 2; fi

done }

mysql_stop()

/run/mysql.sock

if [[ -e $socket_file ]]; then      

$mysql_admin  -uroot -s $socket_file  shutdown 

sleep 2; fi

done }

case "$1" in 

start) 

mysql_start $mysql_ports

;; stop) 

mysql_stop  $mysql_ports

;; *) echo "usage: $0 " 

esac

四 參考文章

1 linux中設定服務自啟動的三種方式

2 隨linux開機自動啟動mysql  --蘇普的文章 3

linux系統指令碼的常見啟動順序

linux oracle多例項開機自動啟動

修改 etc oratab檔案,將需要啟動的例項名稱後面的n修改為y,如果要全部都啟動,則使用 g n s y g將全部n修改為y 然後編寫個shell指令碼 cd etc init.d vi oraclestart bin bash chkconfig 35 95 1 description sc...

MySQL MySQL單錶索引優化例項

1.引入 由上節課,我們把mysql效能分析的內容較為詳細的講了一下,那麼這一節課,我們就使用實際的查詢例子進行mysql資料庫的查詢索的效能調優。2.索引單錶優化 建立資料庫表內容,並新增資料記錄 table structure for book drop table if exists book...

mysql多例項命令 mysql多例項安裝

1 編輯my.cnf檔案增加相關引數如下 mysqld multi user root pass 123 mysqld usr local mysql bin mysqld safe mysqladmin usr local mysql bin mysqladmin log usr local my...