老鸟带你开发专业规范的MySQL启动脚本

每一个合格的Linux运维人员都应该做到熟练或精通Shell脚本编程,因为Shell脚本语言差不多是所有编程语言里最简单的语言,如果Shell脚本不行,意味着运维之路可能还没开始就将要终结。——老男孩老师

#!/bin/bash
# chkconfig: 2345 64 36 #配置系统自启动
# description: A very fast and reliable SQL database engine.
##############################################################
# File Name: mysqld
# Version: V1.0
# Author: oldboy
# Organization: www.oldboyedu.com
# Created Time : 2018-06-05 08:58:19
##############################################################
#引入系统函数库
. /etc/init.d/functions

#基础路径定义
basedir=/application/mysql
bindir=/application/mysql/bin
lockdir='/var/lock/subsys'                                       
lock_file_path="$lockdir/mysql"
mysqld_pid_file_path=$basedir/data/`uname -n`.pid

#成功提示函数
log_success_msg(){
    #action为特殊的提示函数,[email protected]为所有参数。
    action "SUCCESS! [email protected]" /bin/true
}
#失败提示函数
log_failure_msg(){
    action  "ERROR! [email protected]" /bin/false
  }
  
#mysql启动函数
start(){
    echo $"Starting MySQL"
    #测试mysqld_safe是否可执行
    if test -x $bindir/mysqld_safe
    then
        #后台执行启动mysql命令
        $bindir/mysqld_safe &>/dev/null &
        #获取返回值
        retval=$?
        #判断返回值是否为0
        if [ $retval -eq 0 ]
        then
            #调用成功提示函数。
            log_success_msg "mysql Startup"
            if test -w "$lockdir" #判断锁目录是否可写。
            then
                touch "$lock_file_path" #创建锁文件。
            fi
            return $retval #给返回值是专业的表现。
        else
            log_failure_msg "MySQL Startup" #调用失败函数提示。
            return $retval
        fi
    else
        log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"
    fi
}
#停止MySQL函数。
stop(){
    #判断mysql pid file大小是否为0。
    if test -s "$mysqld_pid_file_path"
    then
        #读取pidfile
        mysqld_pid=`cat "$mysqld_pid_file_path"`
        #判断mysql pid对应的进程是否存在。
        if (kill -0 $mysqld_pid 2>/dev/null)
        then
            echo $"Shutting down MySQL"
            kill $mysqld_pid #停止MySQL命令。
            retval=$?
            if [ $retval -eq 0 ]
            then
                log_success_msg "MySQL Stop" #调用停止成功函数。
                if test -f "$lock_file_path"
                then
                    rm -f "$lock_file_path"  #删除锁文件。
                fi
                return $retval
            else
                log_failure_msg "MySQL Stop."
                return $retval
            fi
        else
            log_failure_msg "MySQL server process mysqld_pid is not running!"
            rm "$mysqld_pid_file_path"
        fi  
    else
        log_failure_msg "MySQL server PID file is null or not exist!"
    fi
}
#接收传参判断并执行相应函数。
case "$1" in
    start)
        start
        retval=$?
        ;;
    stop)
        stop
        retval=$?
        ;;
    restart)
        stop
        sleep 2 #这里很重要,要休息一下。
        start
        retval=$?
        ;;
    *)
        echo $"Usage:$0 {start|stop|restart}"
        exit 2
esac
exit $retval    #执行脚本后,有返回值才更专业。
国内最佳Shell编程实战图书,《跟老男孩学习Linux运维:Shell编程实战》,京东有售。

原文地址:http://blog.51cto.com/oldboy/2124950

时间: 2024-11-08 19:27:37

老鸟带你开发专业规范的MySQL启动脚本的相关文章

企业级通过shell脚本开发MySQL启动脚本 案例

企业Shell面试题10:开发MySQL启动脚本说明MySQL启动命令为:/bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &停止命令为:mysqld_pid=`cat "$mysqld_pid_file_path"`if (kill -0 $mysqld_pid 2>/dev/null)  then    kill $mysqld_pid    sleep 2f

多实例MySQL启动脚本

开发mysql多实例启动脚本: 已知mysql多实例启动命令为:mysqld_safe–defaults-file=/data/3306/my.cnf & 停止命令为:mysqladmin -u root -p123456 -S /data/3306/mysql.sock shutdown 要求:用函数,case语句.if语句等实现. #!/bin/sh [ -f /etc/init.d/functions ]&&. /etc/init.d/functions||exit #Def

MySQL启动脚本

今天在公司,上午搞了一个小时,MySQL单实例启动脚本搞定. [[email protected] scripts]# cat test3.sh  #!/bin/bash RETVAL=0 . /etc/init.d/functions basedir=/application/mysql-5.5.32/bin datadir=/application/mysql-5.5.32/data PSD=123.com   hostname=`hostname` menu(){ cat <<END =

mysql启动脚本详解

1 #!/bin/sh 2 # Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB 3 # This file is public domain and comes with NO WARRANTY of any kind 4 5 # MySQL daemon start/stop script. 6 7 # Usually this is put in /etc/init.d (at lea

专业规范的mysql启停脚本

#!/bin/sh########################################################ShellName:mysql启停脚本 ##Author:zkg ##Created Time:2019-08-23 ##Blog Address:https://blog.51cto.com/1009516 ######################################################## #调用系统函数库. /etc/init.d/f

通过Shell开发企业级标准服务启动脚本案例(MySQL)

老男孩教育Linux高端运维班Shell课后必会考试题: 企业Shell面试题10:开发企业级MySQL启动脚本 说明: MySQL启动命令为: /bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 >/dev/null & 停止命令逻辑脚本为: mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/n

mysql,mairadb启动脚本

# mysql 启动脚本,一直使用mariadb,data目录一直不对,启动一直出错,自己编写的一个小脚本 # 适用于el6 systemd脚本  如果用ansible 使用service启动会报错,可以将service定义成脚本然后再使用ansible启动服务 #!/bin/bash # MySQL daemon start/stop script. #   Name:mysql 启动脚本 #   Version Number:1.0.5 #   Type:检测服务状态 #   Languag

linux下mysql启动与停止

mysql.启动与停止   1.启动   MySQL安装完成后启动文件mysql在/etc/init.d目录下,   在需要启动时运行下面命令即可.   [[email protected] init.d]# /etc/init.d/mysql start   2.停止 /usr/bin/mysqladmin -u root -p shutdown   3.自动启动   1)察看mysql是否在自动启动列表中   [[email protected] local]# /sbin/chkconfi

MySQL数据库自带备份与恢复工具:MySQLdump.exe与mysql.exe

数据库的备份工作是保护数据库正常运行的关键,以下的文章主要讲述的是MySQL数据库备份的一些小妙招,我们大家都知道使用MySQL dump备份数据库的用户所需要的权限相对而言还是比较小的,只需要select与lock table的权限就足够了. 所以可以创建一个备份数据库的用户,专门用于备份数据库,这样可以避免数据库受到意外的破坏. MySQLdump是备份MySQL数据库的一种好工具.它相对于用phpmyadmin等备份工具更加快速,又避免受php.ini等的限制,在windows系统下还可以