MySQL篇—启动、关闭、重启linux下MySQL数据库的多种方式

本文详细介绍了MySQL数据库的启动、关闭以及重启的多种方式,包括mysqld_safe、mysqld命令、Linux服务脚本,以及8.0版本新增的restart命令,帮助数据库管理员和开发者更好地管理和维护数据库。
摘要由CSDN通过智能技术生成

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨

💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️

💖💖💖大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注💖💖💖

    各位小伙伴今天与大家分享一个MySQL数据库非常重要的话题——启动、关闭、重启linux下MySQL数据库的多种方式。众所周知MySQL作为一款广泛使用的开源关系性数据库管理系统,已经成为了许多企业和个人在存储和管理数据时的首选工具。然而,正确地启动或者关闭MySQL对于确保系统的稳定运行、数据的完整性和安全性至关重要。

    启动、关闭、重启MySQL看似简单,但实际上涉及到许多细节和注意事项。不同的操作系统、配置和环境可能需要采用不同的方法来启动、关闭、重启MySQL服务。因此,了解并掌握多种方法对于数据库管理员和开发者来说是至关重要的。

   在这篇文章中,将探讨多种启动、关闭、重启MySQL的方法,并解释每种方法的适用场景和注意事项。通过这些方法的学习和实践,我们不仅能够更好地管理和维护数据库,还能够提高工作效率和减少潜在的风险。


                         

                                                  

目录

1、MySQL启动的几种方式

方式一:mysqld命令(在多实例环境中,指定对应实例参数文件就可以启动某个实例)

方式二:mysqld_safe命令(在多实例环境中,指定对应实例参数文件就可以启动某个实例)

方式三:写入linux服务进行启动(在多实例环境中,通过不同的脚本定义不同的mysql_server就可以启动某个实例)

linux7.6版本将MySQL启动写入系统服务:

linux8.3版本将MySQL启动写入系统服务:

2、MySQL关闭的几种方式

方式一:mysqladmin命令(在多实例环境中,指定对应实例socket文件就可以关闭某个实例)

方式二:shutdown命令(8.0版本新增。8.0只新增关闭和重启命令,没有启动的命令)

方式三:写入linux服务进行关闭(在多实例环境中,通过不同的脚本定义不同的mysql_server就可以关闭某个实例)

3、MySQL重启方式(8.0版本新增)

方式一:restart命令

方式二:写入linux服务进行重启(在多实例环境中,通过不同的脚本定义不同的mysql_server就可以重启某个实例)


                    

1、MySQL启动的几种方式

    MySQL数据库启动的第一步同Oracle数据库一样都是先读取参数文件的内容,大家都知道Oracle数据库启动的第一步(nomount状态)就会在$ORACLE_HOME/dbs目录下读取参数文件,并且数据库的设置、配置、优化都是在参数文件中完成的。读取参数文件会按照spfile<SID>.ora --> spfile.ora --> init<SID>.ora(同pfile.ora)的顺序依次寻找,如果按照顺序都没有找到参数文件,那么启动就会报错,当然也可以在启动时指定自定义的参数文件完成数据库的启动【oracle启动时怎么指定自定义的参数文件这里我就不介绍了,有兴趣的小伙伴可以参考👉Oracle篇—参数文件在11gRAC或12cRAC的启动位置介绍_rac参数文件位置-CSDN博客👈】

    在MySQL数据库中,读取参数文件会按照/etc/my.cnf --> /etc/mysql/my.cnf --> /usr/local/mysql/etc/my.cnf --> ~/.my.cnf的顺序依次寻找(读取参数文件的顺序通过mysql --help | grep my.cnf命令查看) ,如果按照顺序都没有找到参数文件,那么启动也就会报错的,除非在启动时指定自定义的参数文件,就可以完成正常的数据库启动了。 如果指定的是自定义的参数文件,记录参数文件的位置是十分重要的,因为在MySQL中没有确定参数文件的参数,所以通过ps -ef | grep mysql确定参数文件的位置尤为重要。

    MySQL启动时,涉及到以下关键的两个程序和一个函数。

  • my_print_defaults 函数:这个函数用于读取 MySQL 的配置文件(通常是 my.cnf),并输出配置文件中指定的参数,输出参数传递给parse_server_arguments。 
  • parse_server_arguments 程序:这个程序接收 my_print_defaults 函数输出的参数。它负责解析这些参数,并将它们分配给 MySQL 启动过程中必要的关键变量,例如 --basedir(MySQL安装目录)、--datadir(MySQL数据存储目录)、--pid-file(MySQL进程ID文件路径)、--server-startup-timeout(MySQL服务器启动超时时间)等。
  • mysqld_safe 程序:这是 MySQL 的安全启动程序,它负责启动和管理实际的数据库服务器进程 mysqld。在启动 mysqld 之前,mysqld_safe 会调用 parse_server_arguments 确保配置参数正确,并设置好运行环境。

    这些组件共同协作,确保 MySQL 在启动过程中能够正确读取配置、设置环境变量,并以安全和可靠的方式启动数据库服务器。


                                                       

方式一:mysqld命令(在多实例环境中,指定对应实例参数文件就可以启动某个实例)

    mysqld 是 MySQL 数据库管理系统中的主要服务器进程 。它负责处理客户端的连接请求,并执行数据库操作,如查询、更新、插入和删除数据。mysqld 是多线程的,可以同时处理多个客户端连接,支持事务处理和多种存储引擎,如 InnoDB、MyISAM 等。它还负责管理数据库的日志和缓存,如事务日志和查询缓存,以优化数据库的性能和可靠性。

mysqld --verbose --help选项:

参数选项描述
--defaults-file=#指定参数文件
-u, --user=name指定操作系统的用户名,指定为mysql用户。

                 

mysqld命令启动数据库:

[root@mysql2 bin]# nohup mysqld --defaults-file=/mysql/data/3306/my.cnf --user=mysql &
###mysqld数据库后台进程,只是显示了指定的参数,为了方便管理使用mysqld_safe或者指定多个参数

             

方式二:mysqld_safe命令(在多实例环境中,指定对应实例参数文件就可以启动某个实例)

    mysqld_safe由shell脚本编写,是 MySQL的守护进程启动工具 ,负责启动和监控mysqld进程,并在需要时进行自动重启。

    当MySQL的mysqld进程宕机时,mysqld_safe作为它的守护进程启动工具发挥着关键作用。它负责监控并自动重启mysqld,确保数据库的持续运行。如果仅mysqld进程宕机而mysqld_safe仍在运行,数据库可以继续工作。然而,如果mysqld_safe和mysqld两者同时宕机,数据库将停止运行。

mysqld_safe --help选项:

参数选项描述
--defaults-file=FILE指定参数文件

                      

mysqld_safe命令启动数据库:

[root@mysql2 bin]# nohup mysqld_safe --defaults-file=/mysql/data/3306/my.cnf &   
###mysqld_safe带动mysqld数据库后台进程

                      

方式三:写入linux服务进行启动(在多实例环境中,通过不同的脚本定义不同的mysql_server就可以启动某个实例)

    通过将MySQL的mysql.server脚本添加到LINUX系统服务中进行启动操作。

    linux版本8之前服务的启动文件定义在/etc/init.d中,并且通过service命令进行管理。

    到了linux版本8之后服务的启动文件定义在/usr/lib/systemd/system中了,通过systemctl命令进行管理。当然版本8之后的系统还兼容service命令,同样的/etc/init.d下,但是linux版本8建议使用systemctl命令替代。小提示💥:下面案例中的mysql数据库系统服务名为mysqld,这里是可以按照业务自定义命令的哦

                    

linux7.6版本将MySQL启动写入系统服务:

一、编辑mysql.server脚本,并将mysql.server脚本添加到linux服务

[root@mysql2 bin]# cd /mysql/app/mysql/support-files      ###MySQL的目录,这里以实际安装的目录为准哦
[root@mysql2 bin]# cp mysql.server mysql.server.bk
[root@mysql2 bin]# vi mysql.server  
###作用就是为了方便启动和关闭mysql服务,这个脚本中调用mysqld_safe来启动mysqld。以下是mysql.server需要修改的内容

修改一:目录和数据存储目录

  

 修改二:相关目录和数据存储目录 

修改三:通过mysqld_safe带动mysqld进程的启动,--defaults-file参数为指定自定义的参数文件,默认读取参数文件会按照/etc/my.cnf --> /etc/mysql/my.cnf --> /usr/local/mysql/etc/my.cnf --> ~/.my.cnf的顺序依次寻找(读取参数文件的顺序通过mysql --help | grep my.cnf命令查看)

               

[root@mysql2 bin]# cp  /mysql/app/mysql/support-files/mysql.server  /etc/init.d/mysqld   
###将启动脚本放到系统服务管理中并命名为mysqld
    
[root@mysql2 bin]# chmod 755  /etc/init.d/mysqld
[root@mysql2 bin]# chkconfig --add mysqld      ###将mysqld加入到服务中

[root@mysql2 bin]# service  mysqld  start
[root@mysql2 bin]# chkconfig  mysqld  on       ###开机启动mysqld服务

[root@mysql2 bin]# service mysqld status

service mysqld status查询服务的PID,并且通过ps -ef | grep mysql查看MySQL数据库的PID是否一致

           

linux8.3版本将MySQL启动写入系统服务:

 一、编辑mysql.server脚本,并将mysql.server脚本添加到linux服务

[root@mysql2 bin]# cd /mysql/app/mysql/support-files      ###MySQL的目录,这里以实际安装的目录为准哦
[root@mysql2 bin]# cp mysql.server mysql.server.bk
[root@mysql2 bin]# vi mysql.server  
###作用就是为了方便启动和关闭mysql服务,这个脚本中调用mysqld_safe来启动mysqld。以下是mysql.server需要修改的内容

修改一:目录和数据存储目录

 修改二:相关目录和数据存储目录 

修改三:通过mysqld_safe带动mysqld进程的启动,--defaults-file参数为指定自定义的参数文件,默认读取参数文件会按照/etc/my.cnf --> /etc/mysql/my.cnf --> /usr/local/mysql/etc/my.cnf --> ~/.my.cnf的顺序依次寻找(读取参数文件的顺序通过mysql --help | grep my.cnf命令查看)

           

[root@mysql2 bin]# cd /usr/lib/systemd/system
[root@mysql2 bin]# vi mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
  
[Install]
WantedBy=multi-user.target
  
[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=0
   
# Execute pre and post scripts as root
PermissionsStartOnly=true

# Start main service
ExecStart=/mysql/app/mysql/support-files/mysql.server start    ###调用mysql目录下的mysql.server脚本进行启动
    
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 65536
LimitNPROC = 65536 

Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
   
[root@mysql2 bin]# systemctl daemon-reload
[root@mysql2 bin]# systemctl start mysqld.service
[root@mysql2 bin]# systemctl enable mysqld.service  
[root@mysql2 bin]# systemctl status mysqld.service

systemctl status mysqld.service查询服务的PID,并且通过ps -ef | grep mysql查看MySQL数据库的PID是否一致

                          

              

2、MySQL关闭的几种方式

    在MySQL数据库中,读取参数文件会按照/etc/my.cnf --> /etc/mysql/my.cnf --> /usr/local/mysql/etc/my.cnf --> ~/.my.cnf的顺序依次寻找(读取参数文件的顺序通过mysql --help | grep my.cnf命令查看) ,如果按照顺序都没有找到参数文件,那么启动也就会报错的,除非在启动时指定自定义的参数文件,就可以完成正常的数据库启动了。 如果指定的是自定义的参数文件,那么关闭MySQL前记录参数文件的位置是十分重要的,因为在MySQL中没有确定参数文件的参数,所以通过ps -ef | grep mysql确定参数文件的位置尤为重要。关闭前记录参数文件位置,然后启动的时候指定即可。

                               

方式一:mysqladmin命令(在多实例环境中,指定对应实例socket文件就可以关闭某个实例)

    mysqladmin 是 MySQL 数据库管理系统中一个重要的命令行工具,用于执行管理和监控数据库的各种任务。它可以通过执行不同的子命令来管理数据库服务器,如创建和删除数据库、管理用户权限、监控服务器状态等。

mysqladmin --help选项:

参数选项描述
-u, --user=name用于登录的用户名(如果不是当前用户)
-S, --socket=name指定用于连接的套接字文件的名称(socket套接字就是ip+端口,包括本地ip:port, 远程ip:port)。如果系统上有多个实例,通过连接socket可以连接相应的实例,socket可以用户连接到那个实例
-p, --password[=name]连接到服务器时使用的密码

                    

mysqladmin命令关闭数据库:         

[root@mysql2 bin]# mysqladmin -uroot -p shutdown -S /mysql/data/3306/mysql.sock
[root@mysql2 bin]# tail -100f error.log    ###查看错误文件,观察关闭信息

                    

方式二:shutdown命令(8.0版本新增。8.0只新增关闭和重启命令,没有启动的命令)

    此语句将停止MySQL服务器。它需要SHUTDOWN特权。

    SHUTDOWN控件提供具有相同功能的sql级接口。mysqladmin停工命令或mysql_shutdown()C API函数成功SHUTDOWN序列包括检查特权、验证参数和向客户端发送OK数据包。然后服务器就关闭了。

                

分两种情况进行模拟:

1)情况一:mysql的后台进程通过mysqld_safe进行调用

[root@mysql2 bin]# mysql -uroot -p123456
mysql> shutdown;
[root@mysql2 bin]# tail -100f error.log    ###查看错误文件,观察关闭信息

                     

2)情况二:mysql的后台进程没有通过mysqld_safe调用

[root@mysql2 bin]# mysql -uroot -p123456
mysql> shutdown;
[root@mysql2 bin]# tail -100f error.log    ###查看错误文件,观察关闭信息

                

 总结:不管有没有通过mysqld_safe启动调用mysqld这个进程,都可以使用shudown关闭数据库命令。 

          

方式三:写入linux服务进行关闭(在多实例环境中,通过不同的脚本定义不同的mysql_server就可以关闭某个实例)

    通过将MySQL的mysql.server脚本添加到LINUX系统服务中进行关闭操作。添加过程参考MySQL启动方式的方式三即可。

         

                

3、MySQL重启方式(8.0版本新增)

    在MySQL数据库中,读取参数文件会按照/etc/my.cnf --> /etc/mysql/my.cnf --> /usr/local/mysql/etc/my.cnf --> ~/.my.cnf的顺序依次寻找(读取参数文件的顺序通过mysql --help | grep my.cnf命令查看) ,如果按照顺序都没有找到参数文件,那么启动也就会报错的,除非在启动时指定自定义的参数文件,就可以完成正常的数据库启动了。 如果指定的是自定义的参数文件,那么重启MySQL前记录参数文件的位置可有可无,因为重启是先关闭然后再启动,启动时就会按照已经指定好的参数文件进行启动了,可以通过ps -ef | grep mysql确定参数文件。

              

方式一:restart命令

    Mysql在8.0版本中引入restart命令,实现远程重启mysqld进程的功能。能够在不登录操做系统的状况下,执行重启操做,对于运管上来讲也是一个很棒的功能。mysql执行restart命令须要数据库帐号具有SHUTDOWN权限,而且mysqld必须通过mysqld_safe守护进程下启动的才能执行restart命令。

    restart命令的原理是mysqld_safe检测mysqld退出时的返回值,若是16,则进行重启。bash shell以下。

              

分两种情况进行模拟:

1)情况一:mysql的后台进程通过mysqld_safe进行调用

[root@mysql2 bin]# mysql -uroot -p123456
mysql> restart;      
[root@mysql2 bin]# tail -100f error.log    ###查看错误文件,观察重启信息

                 

2)情况二:mysql的后台进程没有通过mysqld_safe调用

[root@mysql2 bin]# mysql -uroot -p123456
mysql> restart;      ###重启服务器失败(mysqld没有被管理进程管理)
ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).

                       

总结:只有通过mysqld_safe启动mysqld这个进程才能使用restart命令进行重启;如果只有mysqld进程,没有通过mysqld_safe带动,则不能使用restart命令,报ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).

                  

方式二:写入linux服务进行重启(在多实例环境中,通过不同的脚本定义不同的mysql_server就可以重启某个实例)

    通过将MySQL的mysql.server脚本添加到LINUX系统服务中进行重启操作。添加过程参考MySQL启动方式的方式三即可。


    呼,终于写完了,这篇文章整合了linux下MySQL数据库的启动、关闭、重启的多种方式,希望对各位小伙伴在以后的MySQL运维工作中有借鉴意义!!!

  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
LINUX重启MYSQL的命令 . 分类: Linux 2010-06-25 10:21 6367人阅读 评论(0) 收藏 举报 如何启动/停止/重启MySQL 一、启动方式 1、使用 service 启动:service mysqld start 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start 3、使用 safe_mysqld 启动:safe_mysqld& 二、停止 1、使用 service 启动:service mysqld stop 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop 3、 mysqladmin shutdown 三、重启 1、使用 service 启动:service mysqld restart 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart 提问 编辑摘要 如何启动/停止/重启MySQL 一、启动方式 1、使用 service 启动:service mysqld start 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start 3、使用 safe_mysqld 启动:safe_mysqld& 二、停止 1、使用 service 启动:service mysqld stop 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop 3、 mysqladmin shutdown 三、重启 1、使用 service 启动:service mysqld restart 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart 刚开始学 mysql时都是用redhat自带的。启动是什么 /rc.d/init.d/ start 这很简单,但是后来越学越多,系统自带的 mysql,有的是版本太低,有的是与 自己想要装的web服务需要的低版本的mysql 后来自己学着以tar的方式安装 mysql,我的mysql装在/usr/local/mysql目录下启 动碰到过很多问题。最常见的是: ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) 解决办法: [root@test mysql]# /usr/local/mysql/bin/mysqladmin -u root / > -S /var/lib/mysql/mysql.sock password 'your.passwd' 或者做个连接 ln -s /var/lib/mysql/mysql.sock /tmp 其实提示找不到 /tmp/mysql.sock有时也并不是/tmp目录下没这个文件,是启动 命令不对,我碰到过 常见的几种启动方式,自己也不是记得很清楚,如果你确定tmp下有mysql.sock这 个文件不妨试试另外的几个命令 /usr/local/mysql/bin/mysql -u root -p /usr/local/mysql/bin/mysqld --user=mysql& /usr/local/mysql/bin/mysqld --user=root& /usr/local/mysql/bin/mysqld_safe --user=root& /usr/local/mysql/bin/mysqld_safe --user=mysql& /usr/local/mysql/bin/safe_mysqld--uer=root&(注意 safe_mysqld与mysqld_safe是不同的,&表示mysql在后台运行)我的就会报错了 STOPPING server from pid file /usr/local/mysql/data/localhost.localdomain.pid 060304 11:46:21 mysqld ended 这是权限问题,我的mysql目录属于root用户,也属于root群组,改用 mysqld_safe启动就没问题了, 大家只要注意这几个 mysql,safe_mysqld,mysqld_safe,mysqld,mysqladmin.多试 几次 其实有时mysql已经正常启动了,查看mysql是否启动命令 ps -aux | grep mysqld 会看到如下类似内容 mysql 6394 0.0 1.5 10528 992 pts/3 S 16:16 0:00 /usr/local/mysql/ mysql 6395 0.0 1.5 10528 992 pts/3 S 16:16 0:00 /usr/local/mysql/ mysql 6396 0.0 1.5 10528 992 pts/3 S 16:16 0:00 /usr/local/mysql/ root 6422 0.0 1.1 2408 732 pts/3 S 16:20 0:00 grep mysql 查看mysql是否在监听端口命令 netstat -tl | grep mysql 会看到如下类似内容 tcp 0 0 *:mysql *:* LISTEN
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奈斯DB

打赏到账,我飘啦~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值