编写mysql多实例启动脚本
脚本原理:
启动MySQL动作:
mysqld_safe来执行启动
停止MySQL动作:
使用mysqladmin来执行停止动作
重启的MySQL动作:
原理就是先停止,然后再启动
但是要注意:简单的sleep来等待停止和启动过程极可能出现在短时间内重复运行重启,mysqld_safe报错提示已经启动了一个实例的问题
这里可以参考MySQL提供的默认启动脚本mysqld.service中的wait_for_pid()这个函数。
以下是启动脚本,效果如图:

脚本:
1 #!/bin/sh
2 #init
3 port=3306
4 mysql_user="root"
5 mysql_pwd="test"
6 CmdPath="/usr/local/mysql-5.5.62/bin/"
7 mysql_sock="/data/${port}/mysqld.sock"
8 pid_file="/data/${port}/mysqld.pid"
9 service_startup_timeout=900
10 PATH=/sbin:/usr/sbin:/bin:/usr/bin:$CmdPath:$PATH
11 export PATH
12 #print success
13 echo_info_ok(){
14 echo -e "[\e[0;32;1m success \e[0;32;0m]"
15 }
16
17 #print faild
18 echo_info_false(){
19 echo -e "[\e[0;31;1m failed \e[0;31;0m]"
20 }
21 #wait for pid
22 wait_for_pid(){
23 verb="$1" # created | removed
24 pid="$2" # process ID of the program operating on the pid-file
25 pid_file_path="$3" # path to the PID file.
26 i=0
27 flag="by checking again"
28 while test $i -ne $service_startup_timeout;do
29 case "$verb" in
30 'created')
31 # wait for a PID-file to pop into existence.
32 test -s "$pid_file_path" && i='' && break
33 ;;
34 'removed')
35 # wait for this PID-file to disappear
36 test ! -s "$pid_file_path" && i='' && break
37 ;;
38 *)
39 echo "wait_for_pid () usage: wait_for_pid created|removed pid pid_file_path"
40 exit 1
41 ;;
42 esac
43
44 # if server isn't running, then pid-file will never be updated
45 if test -n "$pid"; then
46 if kill -0 "$pid" 2>/dev/null; then
47 : # the server still runs
48 else
49 # The server may have exited between the last pid-file check and now.
50 if test -n "$avoid_race_condition"; then
51 flag=""
52 continue # Check again.
53 fi
54 return 1 # not waiting any more.
55 fi
56 fi
57 sleep 1
58 done
59 }
60
61 #startup function
62 function_start_mysql(){
63 if [ ! -e "$mysql_sock" ];then
64 printf "Starting MySQL..."
65 /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
66 wait_for_pid created "$!" "$pid_file"
67 if [ $? -eq 0 ];then
68 echo_info_ok
69 else
70 echo_info_false
71 fi
72 else
73 printf "MySQL is running...\n"
74 exit
75 fi
76 }
77
78 #stop function
79 function_stop_mysql(){
80 if [ ! -e "$mysql_sock" ];then
81 printf "MySQL is stopped...\n"
82 exit
83 else
84 printf "Stoping MySQL..."
85 ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
86 wait_for_pid removed "$!" "$pid_file"
87 if [ $? -eq 0 ];then
88 echo_info_ok
89 else
90 echo_info_false
91 fi
92 fi
93 }
94
95 #restart function
96 function_restart_mysql(){
97 if [ ! -e $mysql_sock ];then
98 printf "Restarting MySQL..\n"
99 function_start_mysql
100 else
101 printf "Restarting MySQL...\n"
102 function_stop_mysql
103 if [ $? -eq 0 ];then
104 function_start_mysql
105 else
106 printf "Starting MySQL"
107 echo_info_false
108 fi
109 done
110 fi
111 }
112
113 #main
114 case $1 in
115 start)
116 function_start_mysql
117 ;;
118 stop)
119 function_stop_mysql
120 ;;
121 restart)
122 function_restart_mysql
123 ;;
124 *)
125 printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
126 esac
编写mysql多实例启动脚本的更多相关文章
- MySQL 多实例启动和关闭脚本
DB: 5.5.14 OS:CentOS 6.3 在MySQL多实例中,一个一个启动灰常麻烦,因此写个简单的启动和关闭脚本 启动脚本:start.sh #!/bin/bash for port in ...
- mysql 5.7 启动脚本
最近这段时间,在看mysql,安装了,也应用过,对于生产环境中,一般都选择使用source code安装,在安装的时候可以自定义相关路径和内容,对于生产环境来说更有效.相对于mysql 5.5的安装, ...
- mysql多实例启动过程
单机多实例,是基本的测试环境 01.myslq提供单机管理多节点 02.启动mysql多实例 03.观察进程
- mysql多实例启动、关闭
启动(指定参数文件): [root@mysql01 ~]# mysqld_safe --defaults-file=/data/3306/my.cnf & [root@mysql01 ~]# ...
- MySQL多实例启动停止
原文地址:http://wolfword.blog.51cto.com/4892126/1241304/ 说明:本实验以MySQL 5.1为例来实验. 1.安装MySQL 5.1 yum instal ...
- mysql多实例安装脚本
#! /bin/bash # v.mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz # only install master mysql # time:2016-0 ...
- Mariadb多实例启动脚本
#!/bin/bash port=3306 mysql_user="root" mysql_pwd="centos" cmd_path="/app/m ...
- mysql多实例(个人的情况,不是大众的)里面有配置好的脚本+主从复制
[root@DB-S ~]# ll /usr/local/|grep mysql lrwxrwxrwx. 1 root root 21 Jun 14 01:52 mysql -> /alidat ...
- Mysql多实例 安装以及配置
MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...
随机推荐
- 使用ElementTree解析,操作xml
一.最近在实际工作中需要对一部分接口进行测试,接口的入参与出参都是xml格式的数据,所以用到了python内部模块ElementTree对xml进行解析,并根据实际需求操作xml数据 二.代码示例 # ...
- WordPress安装篇(3):用宝塔面板在Linux上安装WordPress
前面的文章已经介绍了如何在Windows环境安装WordPress,这篇文章来介绍在Linux环境怎样快速安装WordPress.大家都知道,Linux系统相对于Windows系统而言占用资源更少.更 ...
- nvm安装管理nodejs
安装nodejs运行环境 相关连接 步骤 下载nvm-window并安装: https://github.com/coreybutler/nvm-windows/releases 下载完成后直接解压安 ...
- 【题解】poj 3254 Corn Fields
题目描述 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的玉米,供 ...
- 使用Spring Data JPA 访问 Mysql 数据库-配置项
jpa操作数据库 注意:数据库采用的是本机数据库,下面是建表语句及初始化数据: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------- ...
- 精尽Spring Boot源码分析 - 文章导读
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- Linux下Rsyslog日志远程集中式管理
Rsyslog简介 Rsyslog的全称是 rocket-fast system for log,它提供了高性能,高安全功能和模块化设计.rsyslog能够接受从各种各样的来源,将其输入,输出的结果到 ...
- 8、inotify和resync的优缺点
只有对外提供访问的服务需要有端口号,本地服务无端口号: 8.1.inotify的优缺点: 1.优点: 监控文件系统事件变化,通过同步工具实现实时的数据同步 2.缺点: 并发如果大于200个文件(10- ...
- 《汇编语言程序设计》(Professional Assembly Language)学习笔记(二)
挖坑:学习笔记(一)讲述如何在 Windows Vmware 上安装 Ubuntu 20.04 实践环境 本文是基于Ubuntu 20.04平台进行实验,下文中的解决方法都基于此前提 问题记录 问题一 ...
- Nginx:Nginx动静分离
1.什么是动静分离 将动态请求和静态请求区分访问 2.为什么要做动静分离 tomcat本身处理静态效率不高,还会带来资源开销.所以使用动静分离,将静态由Nginx处理, 动态由PHP处理或Tomcat ...