mysql--❤️‍几种启动和停止服务的风险分析☀️linux生产环境运维必备❤️‍《⭐建议收藏⭐》(代码片段)

吾日三省贾斯汀 吾日三省贾斯汀     2022-12-30     749

关键词:

您好,我是贾斯汀,欢迎进来学习的小伙伴~

【学习背景】

本文对Linux下启动和停止mysql服务最常用的几种方式进行讲解:
(1)mysqld
(2)mysqld_safe
(3)mysql.server
(4)mysqladmin
关于这几种文件和命令对mysql服务的启动和停止的使用,本文会分别进行介绍,还有一些关键的事项,比如生产环境对于MySQL服务的启动和停止是非常谨慎的一件事,不是每一种方式都适合生产使用的,需要搞清楚再使用,这里分享出来,希望对有需要的小伙伴有帮助~

进入正文之前,这里先说明一下,实际的生产环境安全的启动一般都使用mysqld_safe来启动mysql服务,使用mysqladmin安全停止mysql服务,具体进入正文进行说明~

建议除了Linux终端用户root,还应建一个普通用户mysql安装和运维数据库~

进入正文~


一、mysqld

1.1 命令介绍

(1)mysqld是mysql的守护进程,直接使用这种方式启动,会加载MySQL配置(如:/etc/my.cnf)中的[mysqld]和[server]组下的参数内容~
(2)一般通过手动调用mysqld来启动mysql服务,这种方式只有一个mysqld进程,没有守护进程,如果mysql服务挂了,没有检查重启的机制,生产环境不会使用这种方式启动mysql服务~

1.2 命令使用

1.2.1 启动

进入到mysql的bin目录下执行:

cd /opt/mysql/mysql-5.7.29/bin
mysqld --defaults-file=/data/mysqldata/my.cnf --user=mysql &

或者通过配置软链接后再执行:

ln -s /opt/mysql/mysql-5.7.29/bin/mysqld /usr/bin/mysqld
mysqld --defaults-file=/data/mysqldata/my.cnf --user=mysql &


如果连接不成功,请查看错误日志看具体启动mysql服务的报错原因~

查看配置my.cnf错误日志路径,示例:

[mysqld]
log-error=/data/mysqllog/client-error.log

查看mysql记录错误日志:

tail -f /data/mysqllog/client-error.log

如果前面mysqld启动mysql服务失败,client-error.log会打印出具体报错原因~
例如,我把配置my.cnf安全路径配置secure_file_priv前面加个p,会报错如下:

1.2.1 停止

停止的方式也有好几种,开发环境方便调试可以按实际需要使用,确保生产环境使用mysqladmin就行~

(1)直接杀掉进程号

ps -ef|grep mysqld
kill -9 进程号

(2)mysqladmin命令停止(建议)
执行命令:

/opt/mysql/mysql-5.7.29/bin/mysqladmin -uroot -p -S /data/mysqldata/mysql.sock shutdown

成功提示:

注意:命令中的root用户是mysql.user表中的数据库用户,mysql.sock路径,通过查看配置my.cnf获取,示例:

[mysqld]
socket=/data/mysqldata/mysql.sock

二、mysqld_safe

2.1 命令介绍

(1)打开mysqld_safe,可以看到其实是一个Shell脚本,这种方式启动除了会加载MySQL配置(如:/etc/my.cnf)中的[mysqld]和[server]组下的参数内容之外,为了兼容老版本,还会加载[safe_mysqld]组下的内容~
(2)执行脚本mysqld_safe时,脚本中会去调用mysqld启动mysqld和monitor mysqld两个进程,monitor即监视的意思,这样如果mysql服务挂了,那么mysqld_safe会重新启动mysqld进程~

通过mysqld_safe启动mysql服务这种方式是生产运维建议使用的启动方式~

2.2 命令使用

2.2.1 启动

进入到mysql的bin目录下执行:

cd /opt/mysql/mysql-5.7.29/bin
/opt/mysql/mysql-5.7.29/bin/mysqld_safe --defaults-file=/data/mysqldata/my.cnf --user=mysql >/data/mysqllog/mysqld_safe.log 2>&1 &

启动成功:

可以发现mysqld_safe方式启动,确实会有两个进程~
当我kill -9 mysqld进程(模拟mysql服务挂掉),发现监视进程会自动给我重新启动好mysqld的进程,不影响mysql服务正常运行~

2.2.2 停止

(1)直接杀掉进程号

ps -ef|grep mysqld
kill -9 进程号

这种方式慎用!!!

(2)mysqladmin命令停止(建议)
执行命令:

/opt/mysql/mysql-5.7.29/bin/mysqladmin -uroot -p -S /data/mysqldata/mysql.sock shutdown

成功提示:

注意:命令中的root用户是mysql.user表中的数据库用户,mysql.sock路径,通过查看配置my.cnf获取,示例:

[mysqld]
socket=/data/mysqldata/mysql.sock

三、mysql.server

3.1 命令介绍

(1)脚本mysql.server是mysql安装目录support-files下的一个文件,也是一个启动Shell脚本,脚本中会去调用mysqld_safe脚本
(2)主要通过拷贝mysql.server脚本刀片/etc/init.d/目录下,并命名为mysql,实现便捷启动和停止~
(3)启动service mysql start、停止service mysql start,非常适合开发环境的运维~

3.2 命令使用

3.2.1 修改脚本

修改脚本mysql.server中的相关目录信息(按实际修改):
安装目录: basedir=/data/mysql/mysql-5.7.29
数据目录: datadir=/data/mysqldata/3306
socket目录: lockdir='/data/mysqldata'

这里修改mysql.server中的my.cnf有一个小问题,默认是/etc/my.cnf,我修改路径成我自己的/data/mysqldata/my.cnf,后面也复制mysql.server/etc/init.d/目录并重命名为mysql了了,但是一直不生效,不知道为啥,有知道的小伙伴可以留言,这里先留个TODO,先使用默认的/etc/my.cnf吧,需要把我的配置内容拷贝到/etc/my.cnf里面~


TODO补充
修改support-files/mysql.server中默认my.cnf自定义配置路径不生效问题~

      #这里才是mysql.server调用mysqld_safe启动MySQL服务的入口
      #原来这里默认mysqld_safe执行只是指定了datadir数据目录
      #$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
      #重写mysqld_safe指定为my.cnf具体路径,my.cnf中已经配置好数据目录,不再需要指定参数
      $bindir/mysqld_safe --defaults-file=/data/mysqldata/my.cnf $other_args >/dev/null &

详情如下图说明:


将脚本mysql.server拷贝到/etc/init.d/初始化服务目录下,并命名~

cp /opt/mysql/mysql-5.7.29/support-files/mysql.server /etc/init.d/mysql
cp /opt/mysql/mysql-5.7.29/support-files/mysql.server /etc/init.d/mysqld

3.2.2 开机自启动

不需要设置开机自启动,可忽略此步~
添加自启动命令:

chkconfig --add mysql
chkconfig --add mysqld

删除自启动命令:

chkconfig --del mysql
chkconfig --del mysqld

查看自启动列表命令:

chkconfig --list


PS:如上图,2/3/4/5都是on开的话则成功,默认级别是2/3/4/5~

3.2.3 启动服务

命令: service mysql start

启动成功,提示如下:

3.2.1 停止服务

(1)直接杀掉进程号

ps -ef|grep mysqld
kill -9 进程号

这种方式慎用!!!

(2)service命令停止

service mysql stop

(2)mysqladmin命令停止(建议)
执行命令:

/opt/mysql/mysql-5.7.29/bin/mysqladmin -uroot -p -S /data/mysqldata/mysql.sock shutdown

成功提示:

注意:命令中的root用户是mysql.user表中的数据库用户,mysql.sock路径,通过查看配置my.cnf获取,示例:

[mysqld]
socket=/data/mysqldata/mysql.sock

其他命令: service mysql start|stop|restart|reload|force-reload|status

注意:最后再提一下,kill直接杀掉进程方式慎用!!实际的生产环境建议规范使用mysqld_safe来启动mysql服务,使用mysqladmin停止mysql服务~

附录

Windows下启动和停止方式比较简单~

启动MySQL服务命令:net start mysql

关闭MySQL服务命令:net stop mysql


原创不易,觉得有用的小伙伴来个一键三连(点赞+收藏+评论 )+关注支持一下,非常感谢~

mysql服务停止和启动的基本操作

一、启动和停止MySQL服务1.1命令行方式:在WIndows下使用CMD控制台,然后使用命令行进行管理(CMD控制台要使用管理员方式运行)开启服务:netstartmysql关闭服务:netstopmysql1.2系统服务方式1,进入服务ÿ... 查看详情

mysql8.0.12服务启动后停止,求大神赐解!

...装的2个服务名称“mysql”、“mysql80”;2.刚开始装好后能启动和关闭,试了几次后就无法启动了,提示“服务启动后停止”;3.按照网上方法我先把“mysql”,“mysql80"这两个用C:\ProgramFiles\MySQL\MySQLServer8.0>mysqld-removemys... 查看详情

mysql服务停止,apach启动后自动停止是怎么回事?

MYSQL5所有任务都变成灰色,状态为停止,请问该怎么启动!我是用的Apache+PHP+MySQL+ZendOptimizer在本地调试论坛,使用几天后就出现不稳定情况,后来在计算机管理-服务里面看到Apache和MySQL启动后自己停止,接着MYSQL的所有任务就出... 查看详情

如何启动/停止/重启mysql

...序-〉服务下找到MySQL服务,在该项上右键就可以选者==〉启动/停止/重启MySQL参考技术A如果是在windows下面的话,可以在服务中启动,停止,重启mysql服务用命令的话:关闭mysql:mysqladmin-uroot-pshutdown启动mysql:mysqld-nt--installnetstartmys... 查看详情

win10启动mysql出1053错误怎么办

...也会英文显示成功)第三步:打开服务>禁用MYSQL>再启动MYSQL 参考技术B右键点击左下角Windows标志,选择“计算机管理”。win10/win7如何停止/启动MySQL服务2点击左侧“服务好和应用程序”,此时右侧会出现“服务”。win10/win7如... 查看详情

springboot优雅停止服务的几种方法

...保证系统的高可用是非常有必要的。那么咱么就来看一下几种停 查看详情

springboot优雅停止服务的几种方法

...保证系统的高可用是非常有必要的。那么咱么就来看一下几种停 查看详情

求助,本地计算机上的mysql服务启动后停止

  MySQL安装和启动服务,以及遇到的问题  MySQL版本:mysql-5.7.13-winx64.zip(免安装,解压放到程序文件夹即可,比如C:\\ProgramFiles\\mysql-5.7.13-winx64)下载地址:http//dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.13-winx64.zip遇到的问题:  1.My... 查看详情

mysql笔记01:mysql入门_1.3mysql启动停止与登录

 1.3MySQL启动停止与登录1.3.1MySQL启动与停止MySQL数据库分为客户端和服务器端,只有服务器端服务开启以后,才可以通过客户端登录MySQL服务端。首先,以管理员身份运行“命令提示符”:(1)启动MySQL服务:netstart 服务名... 查看详情

如何ubuntu下启动/停止/重启mysql

在ubuntu下启动/停止/重启mysql可以借助于service命令来操作。1、启动mysqlsudo service mysql start说明:sudo用于提升权限,启动、停止、重启服务是需要root权限的。service是服务管理脚本程序,mysql是mysql的服务名,start是启动。‍2、停... 查看详情

本地计算机上的 MySQL57 服务启动然后停止

】本地计算机上的MySQL57服务启动然后停止【英文标题】:MySQL57serviceonLocalComputerstartedandthenstopped【发布时间】:2017-08-3100:14:29【问题描述】:我在使用mySql时遇到问题。它已停止,当我尝试启动它时,我得到以下信息:“本地计... 查看详情

求助,本地计算机上的mysql服务启动后停止

参考技术A解决问题:其实这几个问题都是因为mysql的初始化ini文件不正确导致,请注意以下几点1.不能使用原有的初始化文件my-default.ini直接修改,那个只是给我们参考,在当前文件夹复制创建一个新的my.ini文件,填写好basedir和d... 查看详情

服务器mysql数据库老自动停止,请问怎么回事

...份功能可能导致数据库在备份的时候先关闭服务,而在此启动的时候服务器不响应,开始-运行-services.msc,打开windows服务找到mysql的服务并双击,点击恢复选项卡,第一次失败:默认是“不操作”,改成”重新启动服务”。在下方... 查看详情

JVisualVM 如何启动和停止 CPU 分析?

】JVisualVM如何启动和停止CPU分析?【英文标题】:HowdoesJVisualVMstartandstopCPUprofiling?【发布时间】:2015-09-1818:25:10【问题描述】:我想在我的应用程序中添加一个选项,最终用户可以启动CPU分析、重现性能问题、停止CPU分析,然后... 查看详情

mysql主从不一致的几种故障总结分析解决和预防

(1).主从不一致故障,从库宕机,从库启动后重复写入数据报错解决与预防:relay_log_info_repository=TABLE(InnoDB)参数解释说明:若relay_log_info_repository为FILE,当设置为0,交由OS刷新磁盘,受参数sync_relay_log_info的影响,默认为10000次刷新到... 查看详情

mysql服务的启动与停止(通过命令行的方式)

通过命令行的方式去启动MySQL服务步骤:以管理员的身份打开命令行提示符启动服务:停止服务: 查看详情

springboot优雅停止服务的几种方法(代码片段)

在使用Springboot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill-9直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。我们很多时... 查看详情

springboot优雅停止服务的几种方法(代码片段)

在使用Springboot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill-9直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。我们很多时... 查看详情