利用Shell开发MySQL的启动脚本

随声附和 提交于 2020-03-08 04:24:41



1.1 MySQL实例的部署情况

01:MySQL程序的安装目录为:/mysql/apps/mysql
02:MySQL实例3306的配置文件为:/mysql/data/3306/my.cnf
03:MySQL实例3306的PID文件为:/mysql/data/3306/mysql.pid
04:MySQL实例3306的socket文件为:/mysql/data/3306/mysql.sock

1.2 MySQL实例的启动方式

启动方式:mysqld_safe --defaults-file=/mysql/data/3306/my.cnf >/dev/null 2>&1 &
关闭方式:mysqladmin -uroot -p密码 -S /mysql/data/3306/mysql.sock shutdown

1.3 MySQL启动脚本的内容

脚本中有root@localhost用户的密码,请脚本权限设置成700,该脚本只能在操作系统的root用户下执行(脚本进行了限制)

#!/bin/bash
#
#
# Define variables
RETVAL=0
Port=3306
User=root
Pass=chenliang
Pid=/mysql/data/$Port/mysql.pid
Sock=/mysql/data/$Port/mysql.sock
My=/mysql/data/$Port/my.cnf
Path=/mysql/apps/mysql/bin
 
# Determine the user to execute
if [ $UID -ne $RETVAL ];then
    echo "Must be root to run scripts"
    exit 1
fi
 
# Load the local functions
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
 
# Define functions
start(){
        if [ ! -f "$Pid" ];then
           $Path/mysqld_safe --defaults-file=$My >/dev/null 2>&1 &
           RETVAL=$?
           if [ $RETVAL -eq 0 ];then
              action "Start MySQL [$Port]" /bin/true
             else
              action "Start MySQL [$Port]" /bin/false
           fi
          else
           echo "MySQL $Port is running"
           exit 1
       fi
       return $RETVAL
}
 
stop(){
        if [ -f "$Pid" ];then
           $Path/mysqladmin -u$User -p$Pass -S $Sock shutdown
           RETVAL=$?
           if [ $RETVAL -eq 0 ];then
              action "Stop MySQL[$Port]" /bin/true
             else
              action "Stop MySQL[$Port]" /bin/false
           fi
         else
           echo "MySQL [$Port] is not running"
           exit 1
        fi
        return $RETVAL
}
 
status(){
        if [ -f "$Pid" ];then
            echo "MySQL [$Port] is running"
           else
            echo "MySQL [$Port] is not running"
        fi
        return $RETVAL
}
 
# Case call functions
case "$1" in
  start)
        start
        RETVAL=$?
        ;;
  stop)
        stop
        RETVAL=$?
        ;;
  restart)
        stop
        sleep 5
        start
        RETVAL=$?
        ;;
  status)
        status
        RETVAL=$?
        ;;
  *)
        echo "USAGE:$0{start|stop|restart|status}"
        exit 1
esac
 
# Scripts return values
exit $RETVAL
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!