详解MySQL单实例和多实例启动脚本

 更新时间:2023年08月04日 15:35:50   作者:CCH2023  
这篇文章主要介绍了MySQL单实例和多实例启动脚本,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

已知MySQL多实例启动命令为:

mysqld_safe --defaults-file=/data/3306/my.cnf &

停止命令为:

mysqladmin -uroot -pchang123 -S /data/3306/mysql.sock shutdown

请完成mysql多实例的启动脚本的编写:

问题分析:

要想写出脚本,必须对MySQL服务很熟悉。

1)单实例:

# Mysql启动
mysqld_safe &
# Mysql停止
mysqld_admin -u root -p Chang123 shutdown
# 设置root密码
[root@vm1 scripts]# mysqladmin -uroot password "Chang123"
# 先将mariadb停止
[root@vm1 scripts]# mysqladmin -uroot -pChang123 shutdown
# 检查进程是否停止
[root@vm1 scripts]# netstat -atunlp |grep 3306
# 再启动mysql
[root@vm1 scripts]# mysqld_safe --user=mysql &
[1] 11535
[root@vm1 scripts]# 230802 21:49:37 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
230802 21:49:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
# 再检查mysql进程是否已启动
[root@vm1 scripts]# netstat -atunlp |grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      11681/mysqld   

先是单实例的启动脚本的编写:

[root@vm1 scripts]# cat start_db.sh
#!/bin/bash
#
[ -f /etc/init.d/functions ] && . /etc/init.d/functions || echo 1
usage(){
  echo “USAGE: $0 {start|stop|restart}
  exit 1
}
if [ $# -ne 1 ]
  then
    usage
fi
start() {
  mysqld_safe --user=mysql >/dev/null 2>&1 &
  if [ $? -eq 0 ]
    then
      action "start mysql" /bin/true
  else
      action "start mysql" /bin/false
  fi
}
stop() {
  mysqladmin -uroot -pChang123 shutdown >/dev/null 2>&1
  if [ $? -eq 0 ]
    then
      action  "stop mysql" /bin/true
  else
      action "stop mysql" /bin/false
  fi
}
restart() {
  stop
  sleep 2
  start
}
if [ "$1" == "start" ]
  then
    start
elif [ "$1" == "stop" ]
  then
    stop
elif [ "$1" == "restart" ]
  then
    restart
else
    usage
fi
 

执行结果:

[root@vm1 scripts]# netstat -atunlp |grep 3306
[root@vm1 scripts]#
[root@vm1 scripts]# sh start_db.sh start
start mysql                                                [  OK  ]
[root@vm1 scripts]# 230802 22:17:56 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
230802 22:17:56 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
[root@vm1 scripts]# sh start_db.sh restart
stop mysql                                                 [  OK  ]
start mysql                                                [  OK  ]
[root@vm1 scripts]# 230802 22:18:19 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
230802 22:18:19 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
[root@vm1 scripts]#

将一些信息都不显示出来: 

[root@vm1 scripts]# sh start_db.sh start
start mysql                                                [  OK  ]
[root@vm1 scripts]# sh start_db.sh stop
stop mysql                                                 [  OK  ]
[root@vm1 scripts]# sh start_db.sh restart
stop mysql                                                 [  OK  ]
start mysql                                                [  OK  ]
[root@vm1 scripts]# netstat -atunlp |grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      13173/mysqld   

多实例启动脚本:

[root@vm1 scripts]# cat mysql_manage.sh
#!/bin/bash
#
Port=3306
MysqlUser="root"
MysqlPassword="Chang123"
CmdPath="/usr/local/mysql/bin"
#start function
start() {
  if [ `netstat -auntlp |grep "$Port" | wc -l` -eq 0 ]
    then
      echo "Starting MySQL..."
      /bin/sh ${CmdPath}/mysqld_safe --defaults-fle=/data/${Port}/my.cnf 2>&1 >/dev/null &
  else
      echo "MySQL is running..."
}
#stop function
stop(){
  if [ `netstat -atunlp |grep "$Port" | wc -l` -eq 0 ]
    then
      echo "Stopping MySQL..."
      ${CMDPath}/mysqladmin -u ${MysqlUser} -p {$MysqlPassword} -S /data/${Port}/mysql.sock shutdown
  else
      echo "MySQL is stopped..."
  fi
}
#restart function
restart(){
  echo "Restarting MySQL..."
  stop
  sleep 2
  start
}
case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    restart
    ;;
*)
   echo "USAGE: $0 {start|stop|restart}"
esac

代码说明:

1)其中使用了case语句。

把这个脚本放到/etc/init.d/目录中,实现/etc/init.d/mysqld01 start 启动,并通过chkconfig对其设置开机自启动和关闭。

如果自己写脚本,也就是放到/etc/init.d目录中,作为启动脚本。

在脚本中添加这块内容,设置mysql的开机自启动。

# chkconfig: 2345 20 80
# description: Start mysql and stop mysql script.

man chkconfig,看看chkconfig的帮助文档。

2345是运行的级别。

20:启动优先级

80: 停止优先级

你应该能指出descripion的内容。\ 反斜线是换行继续。忽略掉在行前面的空格。

多看man帮助文档。

看看/etc/init.d/rpcbind

 需要注意的是:数字可设置成不一样的,但是要确保启动优先级在rc.d的子目录中不要有冲突。切记。

企业面试题:

怎么把自己写的脚本添加到服务里面,即可以使用service命令来调用?

# chkconfig 2345 21 60

# description: Save and restores system entropy pool for \ 

到此这篇关于MySQL单实例和多实例启动脚本的文章就介绍到这了,更多相关MySQL单实例和多实例启动脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用mysql查询显示行号的示例代码

    使用mysql查询显示行号的示例代码

    MySQL变量是一种用于存储和操纵数据的数据类型,通过在SQL查询中使用变量,我们可以创建一个MySQL查询,用于获取每行数据的行号,本文给大家介绍了使用mysql查询显示行号的示例代码,需要的朋友可以参考下
    2024-01-01
  • MySql子查询IN的执行和优化的实现

    MySql子查询IN的执行和优化的实现

    本文主要介绍了MySql子查询IN的执行和优化的实现,详细的介绍了为什么IN这么慢以及如何优化,具有一定的参考价值,感兴趣的可以了解一下
    2021-07-07
  • MySQL数据库优化技术之索引使用技巧总结

    MySQL数据库优化技术之索引使用技巧总结

    这篇文章主要介绍了MySQL数据库优化技术之索引使用方法,结合实例形式总结分析了MySQL表的优化、索引设置、SQL优化等相关技巧,非常具有实用价值,需要的朋友可以参考下
    2016-07-07
  • MySQL中空值Null和空字符‘‘的具体使用

    MySQL中空值Null和空字符‘‘的具体使用

    本文主要介绍了MySQL中空值Null和空字符''的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • MySQL连接器提升应用功能与数据存储能力

    MySQL连接器提升应用功能与数据存储能力

    这篇文章主要为大家介绍了MySQL连接器提升应用功能与数据存储能力,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • mysql同步复制搭建方法指南详细步骤

    mysql同步复制搭建方法指南详细步骤

    MySQL数据同步主要有三种方式: 1.利用MySQL自身的数据库同步功能 2.利用MySQL数据库的特性(数据库存在固顶目录,并且以文件形式存储),进行数据库目录同步以达到数据同步目的 3.利用专用的MySQL数据库同步软件
    2008-04-04
  • MySQL中join查询的深入探究

    MySQL中join查询的深入探究

    数据库中的JOIN称为连接,连接的主要作用是根据两个或多个表中的列之间的关系,获取存在于不同表中的数据,下面这篇文章主要给大家介绍了关于MySQL中join查询的深入探究,需要的朋友可以参考下
    2022-11-11
  • MYSQL设置触发器权限问题的解决方法

    MYSQL设置触发器权限问题的解决方法

    这篇文章主要介绍了MYSQL设置触发器权限问题的解决方法,需要的朋友可以参考下
    2014-09-09
  • MySQL的双写缓冲区Doublewrite Buffer详解

    MySQL的双写缓冲区Doublewrite Buffer详解

    这篇文章主要介绍了MySQL的双写缓冲区Doublewrite Buffer详解,InnoDB是MySQL中一种常用的事务性存储引擎,它具有很多优秀的特性,其中,Doublewrite Buffer是InnoDB的一个重要特性之一,本文将介绍Doublewrite Buffer的原理和应用,需要的朋友可以参考下
    2023-07-07
  • Mysql报错Duplicate entry '值' for key '字段名'的解决方法

    Mysql报错Duplicate entry '值' for key '字段名&

    今天在使用数据库的过程中,发现一直报Duplicate entry '值' for key '字段名'的错误,所以下面这篇文章主要给大家介绍了关于Mysql报错Duplicate entry '值' for key '字段名'的解决方法,需要的朋友可以参考下
    2023-04-04

最新评论