ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL Tools 之 mysql.server 脚本运用--转发

2021-08-04 14:35:12  阅读:213  来源: 互联网

标签:-- MySQL server datadir mysqld file mysql my


目录


正文

MySQL distributions on Unix and Unix-like system include a script named mysql.server, which starts the MySQL server using mysqld_safe. It can be used on systems such as Linux and Solaris that use System V-style run directories to start and stop system services. It is also used by the macOS Startup Item for MySQL.

mysql.server是官方针对Unix和类Unix系统二进制版本安装包当中包含的脚本,它是一个SHELL脚本,被用来启动、查看和停止mysqld进程服务。mysql.server其实上调用的是mysqld_safe命令。

更详细的关于mysql.server的说明可以参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/mysql-server.html

本文使用的MySQL版本为5.7.21

# mysqld -V
mysqld  Ver 5.7.21 for linux-glibc2.12 on x86_64 (MySQL Community Server (GPL))
  • 如果使用RPM包的安装方式进行安装MySQL后,mysql.server这个脚本会被放在/etc/init.d/下面,并且命名为mysqld或者mysql
  • 如果是二进制包的安装方式,则mysql.server放在二进制安装目录下support-files的目录下面。
回到顶部

主要用法

  • 1、启动mysqld服务
# mysql.server start      
  • 2、查看mysqld状态
# mysql.server status
  • 3、停止mysqld服务
# mysql.server stop
  • 4、重启mysqld服务
# mysql.server restart
  • 5、平滑重启mysqld服务
# mysql.server reload
回到顶部

自定义

mysql.server是一个SHELL脚本,其中有一些选项在没有明确指定的时候是有默认值,比如basedir默认路径为/usr/local/mysql等。通常以二进制包进行安装的时候,有些路径需要自定义,否则mysql.server无法找到相应的路径,也就无法完成mysqld进程服务的管理。

可以通过VIM等编辑器对mysql.server脚本进行编辑与修改。

主要修改选项路径如下:

回到顶部

1、添加basedir、datadir和config配置

大概在mysql.server脚本的43行处。

43 # If you change base dir, you must also change datadir. These may get                                                  
44 # overwritten by settings in the MySQL configuration files.                                                            
45                                                                                                                        
46 basedir=     #二进制包安装的目录                                                                                       
47 datadir=     #数据文件所在的目录
48 config=      #此处为新增选项,配置需要使用的参数文件路径 

此处可以修改为:

basedir=/usr/local/mysql5.7
datadir=/data/mysql/data
config=/data/mysql/3306/my.cnf

回到顶部

2、指定mysqld的PID文件

 61 # The following variables are only set for letting mysql.server find things.
 62 
 63 # Set some defaults
 64 mysqld_pid_file_path=

此处可以修改为:

61 # The following variables are only set for letting mysql.server find things.
62 
63 # Set some defaults
64 mysqld_pid_file_path=/data/mysql/3306/mysql.pid
回到顶部

3、注释解析默认参数文件方法

mysqld启动时,默认寻找的参数文件路径如下:

/etc/my.cnf ---> /etc/mysql/my.cnf ---> /usr/local/mysql/etc/my.cnf ---> ~/.my.cnf

mysql.server脚本默认会按照这个顺序去解析(通过my_print_defaults这个命令实现)这几个参数文件,而为了防止mysql.server去解析这几个参数文件当中的参数选项,这时还是通过修改mysql.server脚本选项来实现,以便于使用自定义的参数文件。

大概在mysql.server脚本的240行处。

229 #
230 # Read defaults file from 'basedir'.   If there is no defaults file there
231 # check if it's in the old (depricated) place (datadir) and read it from there
232 #
233 
234 extra_args=""
235 if test -r "$basedir/my.cnf"
236 then
237   extra_args="-e $basedir/my.cnf"
238 fi
239 
240 parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`

可以注释240行,如下:

…………省略…………
237   extra_args="-e $basedir/my.cnf"
238 fi
239 
240 # 注释这行
240 # parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`

这样当通过mysql.server来启动mysqld时就不会去解析默认路径下的参数文件

回到顶部

4、修改mysqld_safe启动时的参数文件

默认情况下mysqld_safe启动时是没有选项--defaults-file指定参数的。可以添加这个选项指定所需的参数路径。

大概在mysql.server脚本的264行处。

264 # Give extra arguments to mysqld with the my.cnf file. This script
265 # may be overwritten at next upgrade.
266 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
267 wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
268 

可以添加conf配置:

# 此处配置的参数文件为前面新增选项的参数文件
266 $bindir/mysqld_safe --defaults-file="$config" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

至此,现在可以通过mysql.server来管理mysqld进程服务的状态了,也可以放在/etc/init.d/下当作系统服务进行管理,当然前提是这个脚本必须具备可执行权限。

回到顶部

参考

☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆

标签:--,MySQL,server,datadir,mysqld,file,mysql,my
来源: https://www.cnblogs.com/xiaoyaojinzhazhadehangcheng/p/15098718.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有