【MySQL】MySQL多例項開機自動重啟
一 簡介
作為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的數字,其他請參考 文件資料) ,
rc.sysinit根據inittab中的配置順序來執行rcN.d目錄下的指令碼,(注意rcN.d中放置的是init.d中指令碼的軟連結)其命名格式是:
S{number}{name}
K{number}{name}
S開始的檔案向指令碼傳遞start引數
K開始的檔案向指令碼傳遞stop引數
以K開頭的指令碼執行在以S開頭的指令碼之前,number決定相同字母開頭的指令碼執行的順序,S18mysqlatuo 執行順序在S19mysqlatuo之前。
假設預設的執行模式是3,系統就會按上述方式呼叫/etc/rc.d/rc3.d/下的指令碼。所以使用者可以在這個檔案中新增一些需要在系統完成初始化工作之後,使用者登入之前執行的命令或者啟動的服務 比如 MySQL。
三 實踐
根據上述介紹的規則,在rc3.d下面配置MySQL自動啟動的指令碼。本文一開始強調處理單機多例項的開啟自動重啟,在編寫指令碼時注意針對多個例項的處理,考慮到生產環節下 ,資料庫例項可能發生遷移/下線等操作,在指令碼中將埠寫死 的方式是不推薦的。
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()
{
ports_list=$1
for port in $ports_list;
do
SOCKET_FILE=/srv/my${port}/run/mysql.sock
if [[ ! -f "$SOCKET_FILE" ]]; then
$MYSQLD_SAFE --defaults-file=/srv/my${port}/my.cnf --read_only=1 &
sleep 2;
fi
done
}
mysql_stop()
{
ports_list=$1
for port in $ports_list;
do
SOCKET_FILE=/srv/my${port}/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 {start|stop|help} "
esac
四 參考文章
1 Linux中設定服務自啟動的三種方式
2 --蘇普的文章
3
作為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
S{number}{name}
K{number}{name}
S開始的檔案向指令碼傳遞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
#!/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()
{
ports_list=$1
for port in $ports_list;
do
SOCKET_FILE=/srv/my${port}/run/mysql.sock
if [[ ! -f "$SOCKET_FILE" ]]; then
$MYSQLD_SAFE --defaults-file=/srv/my${port}/my.cnf --read_only=1 &
sleep 2;
fi
done
}
mysql_stop()
{
ports_list=$1
for port in $ports_list;
do
SOCKET_FILE=/srv/my${port}/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 {start|stop|help} "
esac
四 參考文章
1 Linux中設定服務自啟動的三種方式
2 --蘇普的文章
3
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-1989261/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MySql】開機自動啟動mysql服務MySql
- MySQL單機多例項配置MySql
- mysql使用mysqld_multi工具啟動多例項MySql
- MySQL 多例項啟動和關閉指令碼MySql指令碼
- mysql多例項部署MySql
- MySQL多例項配置MySql
- mysql多例項安裝MySql
- MySQL5.7 多例項MySql
- MySQL多例項環境部署MySql
- mysql的多例項配置MySql
- Linux下MySQL配置單機多例項LinuxMySql
- MySQL 多例項配置管理:MySql
- mysql 5.7 多例項安裝MySql
- MySQL 5.5.35 單機多例項配置詳解MySql
- centos7.5 設定Mysql開機自啟動CentOSMySql
- redis多例項重啟指令碼薦Redis指令碼
- MySQL 5.6同一物理主機配置多例項MySql
- mysqld_multi搭建MySQL單機多例項服務MySql
- MySQL 多例項刪庫指令碼MySql指令碼
- Mysql之多例項my.cnfMySql
- Linux MySQL 服務設定開機自啟動LinuxMySql
- Mysql:mysql多例項建立、配置檔案講解【四】MySql
- Mysql 通過 Mysql_install_db 建立多例項MySql
- MySQL不停地自動重啟怎麼辦MySql
- 技術乾貨 | 利用systemd管理MySQL單機多例項MySql
- MySQL入門--Mysqld_multi多例項MySql
- mysql-mmm叢集(多例項)薦MySql
- MYSQL Slave開機啟動指令碼MySql指令碼
- MySQL單機多例項安裝並配置主從複製MySql
- canal同步mysql,監聽單例項,多例項配置MySql單例
- MySQL資料庫入門多例項配置MySql資料庫
- MySQL介紹及安裝與多例項MySql
- Linux下MySQL多例項部署記錄LinuxMySql
- 配置單例項自動重啟單例
- MySQL 使用mysqld_multi部署單機多例項詳細過程MySql
- centos7上配置MySQL5.7的開機自啟動方法CentOSMySql
- Linux下原始碼安裝MySQL後設定開機自動啟動Linux原始碼MySql
- Windows環境下Redis啟動多例項WindowsRedis