一、MySQL单实例服务脚本
在编写启动脚本之前需要知道MySQL服务的启动与停止命令:
- 启动 mysqld_safe
- 停止 mysqladmin
#!/bin/sh . /etc/init.d/functions path="/application/mysql/bin" user="root" pass="123456" # 传递参数错误执行的函数 function usage(){ echo "$0 {start|stop|restart}" } # 启动服务的函数 function start(){ $path/mysqld_safe --user=mysql > /dev/null 2>&1 & if [ $? -eq 0 ] then action "start mysql" /bin/true else action "start mysql" /bin/false fi } # 停止服务的函数 function stop(){ mysqladmin --user$user -p$pass shuntdown > /dev/null 2>&1 if [ $? -eq 0 ] then action "stop mysql" /bin/true else action "stop mysql" /bin/false fi } case $1 in start) start ;; stop) stop ;; restart) stop sleep 2 start ;; *) usage ;; esac
二、MySQL多实例服务脚本
该脚本通过MySQL的sock文件进行判断服务的秦东与否,启动与停止的命令:
- 启动 mysqld_safe
- 停止 mysqladmin
#!/bin/sh port=3306 user="root" pass=123456 path="/application/mysql/bin" sock_path="data/$port/mysql.sock" function usage(){ printf "Usage:/data/$port/mysql {start|stop|restart} " } # start function start(){ if [ ! -e "$sock_path" ] then printf "Starting MySQL... " $path/mysqld_safe --defaults-file=/data/$port/my.cnf > /dev/null 2>&1 & else printf "MySQL is running... " exit fi } # stop function stop(){ if [ ! -e "$sock_path" ] then printf "MySQL is stoped... " exit else printf "Stoping MySQL... " $path/mysqladmin -u$user -p$pass -S /data/$port/mysql.sock shutdown fi } # restart function restart(){ printf "Restart MySQL... " stop sleep 2 start } case $1 in start) start ;; stop) stop ;; restart) restart ;; *) usage ;; esac
如果想将上述服务加入开机启动项中,就使用chkconfig命令进行管理:
- 将上述服务脚本放到/etc/init.d的目录下
- chkconfig --add multiple_mysql(脚本名称)
- chkconfig multiple_mysql on
- chkconfig --list multiple_mysql
上述过程实际上就是将启动服务放入到/etc/rc.d/rc3.d目录下。