本篇内容介绍了“怎么理解并掌握MySQL Server Startup Script”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在Unix和类似于Unix的系统中的MySQL发布版本包含一个名叫mysql.server的脚本,它将调用mysqld_safe来启动MySQL服务器。它也可以用于像Linux和Solaris系统上使用System V-style来运行指令来启动和停止系统服务。也可以被macOS启动项目来启动MySQL。

mysql.server是MySQL源码树中的脚本名称。其安装后的名称可能不一样,例如,mysqld或mysql。下面将会介绍将mysql.server脚本调整成适合于你系统的名称。注意对于某些Linux平台,使用RPM或Debian包安装的MySQL包含用来管理MySQL服务器启动和关闭的systemd的支持。在这些平台上,mysql.server和mysqld_safe不需要安装因为不需要它们。

为了使用mysql.server来手动启动或停止MySQL服务,可以从命令调用它并使用start或stop参数:

[root@localhostsupport-files]#./mysql.serverstopShuttingdownMySQL..SUCCESS![root@localhostsupport-files]#./mysql.serverstartStartingMySQL..SUCCESS!

相关日志信息如下:

2019-08-22T13:29:13.429419Z0[Note]Giving0clientthreadsachancetodiegracefully2019-08-22T13:29:13.429508Z0[Note]Shuttingdownslavethreads2019-08-22T13:29:13.429535Z0[Note]Forcefullydisconnecting0remainingclients2019-08-22T13:29:13.429553Z0[Note]EventScheduler:Purgingthequeue.0events2019-08-22T13:29:13.429630Z0[Note]Binlogend2019-08-22T13:29:13.460102Z0[Note]Shuttingdownplugin'ngram'2019-08-22T13:29:13.460187Z0[Note]Shuttingdownplugin'partition'2019-08-22T13:29:13.460214Z0[Note]Shuttingdownplugin'BLACKHOLE'2019-08-22T13:29:13.460235Z0[Note]Shuttingdownplugin'ARCHIVE'2019-08-22T13:29:13.460277Z0[Note]Shuttingdownplugin'PERFORMANCE_SCHEMA'2019-08-22T13:29:13.460405Z0[Note]Shuttingdownplugin'MRG_MYISAM'2019-08-22T13:29:13.460446Z0[Note]Shuttingdownplugin'MyISAM'2019-08-22T13:29:13.460553Z0[Note]Shuttingdownplugin'INNODB_SYS_VIRTUAL'2019-08-22T13:29:13.460599Z0[Note]Shuttingdownplugin'INNODB_SYS_DATAFILES'2019-08-22T13:29:13.460619Z0[Note]Shuttingdownplugin'INNODB_SYS_TABLESPACES'2019-08-22T13:29:13.460637Z0[Note]Shuttingdownplugin'INNODB_SYS_FOREIGN_COLS'2019-08-22T13:29:13.460681Z0[Note]Shuttingdownplugin'INNODB_SYS_FOREIGN'2019-08-22T13:29:13.460736Z0[Note]Shuttingdownplugin'INNODB_SYS_FIELDS'2019-08-22T13:29:13.460776Z0[Note]Shuttingdownplugin'INNODB_SYS_COLUMNS'2019-08-22T13:29:13.460898Z0[Note]Shuttingdownplugin'INNODB_SYS_INDEXES'2019-08-22T13:29:13.460920Z0[Note]Shuttingdownplugin'INNODB_SYS_TABLESTATS'2019-08-22T13:29:13.460938Z0[Note]Shuttingdownplugin'INNODB_SYS_TABLES'2019-08-22T13:29:13.460956Z0[Note]Shuttingdownplugin'INNODB_FT_INDEX_TABLE'2019-08-22T13:29:13.460973Z0[Note]Shuttingdownplugin'INNODB_FT_INDEX_CACHE'2019-08-22T13:29:13.460991Z0[Note]Shuttingdownplugin'INNODB_FT_CONFIG'2019-08-22T13:29:13.461008Z0[Note]Shuttingdownplugin'INNODB_FT_BEING_DELETED'2019-08-22T13:29:13.461026Z0[Note]Shuttingdownplugin'INNODB_FT_DELETED'2019-08-22T13:29:13.461044Z0[Note]Shuttingdownplugin'INNODB_FT_DEFAULT_STOPWORD'2019-08-22T13:29:13.461089Z0[Note]Shuttingdownplugin'INNODB_METRICS'2019-08-22T13:29:13.461140Z0[Note]Shuttingdownplugin'INNODB_TEMP_TABLE_INFO'2019-08-22T13:29:13.461161Z0[Note]Shuttingdownplugin'INNODB_BUFFER_POOL_STATS'2019-08-22T13:29:13.461180Z0[Note]Shuttingdownplugin'INNODB_BUFFER_PAGE_LRU'2019-08-22T13:29:13.461220Z0[Note]Shuttingdownplugin'INNODB_BUFFER_PAGE'2019-08-22T13:29:13.461286Z0[Note]Shuttingdownplugin'INNODB_CMP_PER_INDEX_RESET'2019-08-22T13:29:13.461306Z0[Note]Shuttingdownplugin'INNODB_CMP_PER_INDEX'2019-08-22T13:29:13.461325Z0[Note]Shuttingdownplugin'INNODB_CMPMEM_RESET'2019-08-22T13:29:13.461343Z0[Note]Shuttingdownplugin'INNODB_CMPMEM'2019-08-22T13:29:13.461361Z0[Note]Shuttingdownplugin'INNODB_CMP_RESET'2019-08-22T13:29:13.461378Z0[Note]Shuttingdownplugin'INNODB_CMP'2019-08-22T13:29:13.461396Z0[Note]Shuttingdownplugin'INNODB_LOCK_WAITS'2019-08-22T13:29:13.461414Z0[Note]Shuttingdownplugin'INNODB_LOCKS'2019-08-22T13:29:13.461431Z0[Note]Shuttingdownplugin'INNODB_TRX'2019-08-22T13:29:13.461450Z0[Note]Shuttingdownplugin'InnoDB'2019-08-22T13:29:13.461776Z0[Note]InnoDB:FTSoptimizethreadexiting.2019-08-22T13:29:13.462092Z0[Note]InnoDB:Startingshutdown...2019-08-22T13:29:13.562479Z0[Note]InnoDB:Dumpingbufferpool(s)to/mysqldata/mysql/ib_buffer_pool2019-08-22T13:29:13.563934Z0[Note]InnoDB:Bufferpool(s)dumpcompletedat19082221:29:132019-08-22T13:29:14.807857Z0[Note]InnoDB:Shutdowncompleted;logsequencenumber25302292019-08-22T13:29:14.810644Z0[Note]InnoDB:Removedtemporarytablespacedatafile:"ibtmp1"2019-08-22T13:29:14.810690Z0[Note]Shuttingdownplugin'MEMORY'2019-08-22T13:29:14.810707Z0[Note]Shuttingdownplugin'CSV'2019-08-22T13:29:14.810721Z0[Note]Shuttingdownplugin'sha256_password'2019-08-22T13:29:14.810731Z0[Note]Shuttingdownplugin'mysql_native_password'2019-08-22T13:29:14.810961Z0[Note]Shuttingdownplugin'binlog'2019-08-22T13:29:14.811432Z0[Note]/mysqlsoft/mysql/bin/mysqld:Shutdowncomplete2019-08-22T13:30:24.969246Z0[Note]--secure-file-privissettoNULL.Operationsrelatedtoimportingandexportingdataaredisabled2019-08-22T13:30:24.969441Z0[Note]/mysqlsoft/mysql/bin/mysqld(mysqld5.7.26)startingasprocess32558...2019-08-22T13:30:24.980591Z0[Note]InnoDB:PUNCHHOLEsupportavailable2019-08-22T13:30:24.980678Z0[Note]InnoDB:Mutexesandrw_locksuseGCCatomicbuiltins2019-08-22T13:30:24.980740Z0[Note]InnoDB:Useseventmutexes2019-08-22T13:30:24.980758Z0[Note]InnoDB:GCCbuiltin__atomic_thread_fence()isusedformemorybarrier2019-08-22T13:30:24.980779Z0[Note]InnoDB:Compressedtablesusezlib1.2.112019-08-22T13:30:24.981460Z0[Note]InnoDB:Numberofpools:12019-08-22T13:30:24.981799Z0[Note]InnoDB:UsingCPUcrc32instructions2019-08-22T13:30:24.985591Z0[Note]InnoDB:Initializingbufferpool,totalsize=128M,instances=1,chunksize=128M2019-08-22T13:30:25.002296Z0[Note]InnoDB:Completedinitializationofbufferpool2019-08-22T13:30:25.007382Z0[Note]InnoDB:Ifthemysqldexecutionuserisauthorized,pagecleanerthreadprioritycanbechanged.Seethemanpageofsetpriority().2019-08-22T13:30:25.021394Z0[Note]InnoDB:HighestsupportedfileformatisBarracuda.2019-08-22T13:30:25.063462Z0[Note]InnoDB:Creatingsharedtablespacefortemporarytables2019-08-22T13:30:25.063830Z0[Note]InnoDB:Settingfile'./ibtmp1'sizeto12MB.Physicallywritingthefilefull;Pleasewait...2019-08-22T13:30:25.758116Z0[Note]InnoDB:File'./ibtmp1'sizeisnow12MB.2019-08-22T13:30:25.760396Z0[Note]InnoDB:96redorollbacksegment(s)found.96redorollbacksegment(s)areactive.2019-08-22T13:30:25.760448Z0[Note]InnoDB:32non-redorollbacksegment(s)areactive.2019-08-22T13:30:25.761681Z0[Note]InnoDB:Waitingforpurgetostart2019-08-22T13:30:25.811963Z0[Note]InnoDB:5.7.26started;logsequencenumber25302292019-08-22T13:30:25.812330Z0[Note]InnoDB:Loadingbufferpool(s)from/mysqldata/mysql/ib_buffer_pool2019-08-22T13:30:25.813642Z0[Note]Plugin'FEDERATED'isdisabled.2019-08-22T13:30:25.819058Z0[Note]InnoDB:Bufferpool(s)loadcompletedat19082221:30:252019-08-22T13:30:25.824582Z0[Note]Foundca.pem,server-cert.pemandserver-key.pemindatadirectory.TryingtoenableSSLsupportusingthem.2019-08-22T13:30:25.825236Z0[Warning]CAcertificateca.pemisselfsigned.2019-08-22T13:30:25.827375Z0[Note]Serverhostname(bind-address):'0.0.0.0';port:33062019-08-22T13:30:25.827463Z0[Note]-'0.0.0.0'resolvesto'0.0.0.0';2019-08-22T13:30:25.829361Z0[Note]ServersocketcreatedonIP:'0.0.0.0'.2019-08-22T13:30:25.859593Z0[Note]EventScheduler:Loaded0events2019-08-22T13:30:25.859938Z0[Note]/mysqlsoft/mysql/bin/mysqld:readyforconnections.Version:'5.7.26'socket:'/mysqlsoft/mysql/mysql.sock'port:3306Sourcedistribution

mysql.server进入到MySQL安装目录,然后调用mysqld_safe。为了让某些特定的用户能够运行服务,在全局/etc/my.cnf选项文件中为[mysqld]组增加一个合适的user选项,后面将会介绍(如果你将二进制版本的MySQL安装在非标准位置,那么可能必须要修改mysql.server脚本。修改它是为了在运行mysqld_safe之前进入到合适的目录中。如果这样做,当将来升级MySQL时你修改的mysql.server版本可能会被覆盖,创建一个你修改版本的副本可以进行重新安装)。

mysql.server stop通过发送一个信号给它来停止MySQL服务。也可以通过执行mysqladmin shutdown来手动关闭服务。

[root@localhostbin]#./mysqladmin-uroot-p123456shutdownmysqladmin:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.

日志信息如下:

2019-08-22T13:44:57.170282Z0[Note]Giving0clientthreadsachancetodiegracefully2019-08-22T13:44:57.170357Z0[Note]Shuttingdownslavethreads2019-08-22T13:44:57.170919Z0[Note]Forcefullydisconnecting0remainingclients2019-08-22T13:44:57.171016Z0[Note]EventScheduler:Purgingthequeue.0events2019-08-22T13:44:57.171140Z0[Note]Binlogend2019-08-22T13:44:57.172096Z0[Note]Shuttingdownplugin'ngram'2019-08-22T13:44:57.172142Z0[Note]Shuttingdownplugin'partition'2019-08-22T13:44:57.172203Z0[Note]Shuttingdownplugin'BLACKHOLE'2019-08-22T13:44:57.172225Z0[Note]Shuttingdownplugin'ARCHIVE'2019-08-22T13:44:57.172259Z0[Note]Shuttingdownplugin'PERFORMANCE_SCHEMA'2019-08-22T13:44:57.172317Z0[Note]Shuttingdownplugin'MRG_MYISAM'2019-08-22T13:44:57.172348Z0[Note]Shuttingdownplugin'MyISAM'2019-08-22T13:44:57.172398Z0[Note]Shuttingdownplugin'INNODB_SYS_VIRTUAL'2019-08-22T13:44:57.172428Z0[Note]Shuttingdownplugin'INNODB_SYS_DATAFILES'2019-08-22T13:44:57.172441Z0[Note]Shuttingdownplugin'INNODB_SYS_TABLESPACES'2019-08-22T13:44:57.172452Z0[Note]Shuttingdownplugin'INNODB_SYS_FOREIGN_COLS'2019-08-22T13:44:57.172476Z0[Note]Shuttingdownplugin'INNODB_SYS_FOREIGN'2019-08-22T13:44:57.172506Z0[Note]Shuttingdownplugin'INNODB_SYS_FIELDS'2019-08-22T13:44:57.172564Z0[Note]Shuttingdownplugin'INNODB_SYS_COLUMNS'2019-08-22T13:44:57.172579Z0[Note]Shuttingdownplugin'INNODB_SYS_INDEXES'2019-08-22T13:44:57.172590Z0[Note]Shuttingdownplugin'INNODB_SYS_TABLESTATS'2019-08-22T13:44:57.172601Z0[Note]Shuttingdownplugin'INNODB_SYS_TABLES'2019-08-22T13:44:57.172612Z0[Note]Shuttingdownplugin'INNODB_FT_INDEX_TABLE'2019-08-22T13:44:57.172623Z0[Note]Shuttingdownplugin'INNODB_FT_INDEX_CACHE'2019-08-22T13:44:57.172634Z0[Note]Shuttingdownplugin'INNODB_FT_CONFIG'2019-08-22T13:44:57.172644Z0[Note]Shuttingdownplugin'INNODB_FT_BEING_DELETED'2019-08-22T13:44:57.172655Z0[Note]Shuttingdownplugin'INNODB_FT_DELETED'2019-08-22T13:44:57.172666Z0[Note]Shuttingdownplugin'INNODB_FT_DEFAULT_STOPWORD'2019-08-22T13:44:57.172676Z0[Note]Shuttingdownplugin'INNODB_METRICS'2019-08-22T13:44:57.172687Z0[Note]Shuttingdownplugin'INNODB_TEMP_TABLE_INFO'2019-08-22T13:44:57.172698Z0[Note]Shuttingdownplugin'INNODB_BUFFER_POOL_STATS'2019-08-22T13:44:57.172708Z0[Note]Shuttingdownplugin'INNODB_BUFFER_PAGE_LRU'2019-08-22T13:44:57.172734Z0[Note]Shuttingdownplugin'INNODB_BUFFER_PAGE'2019-08-22T13:44:57.172746Z0[Note]Shuttingdownplugin'INNODB_CMP_PER_INDEX_RESET'2019-08-22T13:44:57.172769Z0[Note]Shuttingdownplugin'INNODB_CMP_PER_INDEX'2019-08-22T13:44:57.172802Z0[Note]Shuttingdownplugin'INNODB_CMPMEM_RESET'2019-08-22T13:44:57.172814Z0[Note]Shuttingdownplugin'INNODB_CMPMEM'2019-08-22T13:44:57.172838Z0[Note]Shuttingdownplugin'INNODB_CMP_RESET'2019-08-22T13:44:57.172849Z0[Note]Shuttingdownplugin'INNODB_CMP'2019-08-22T13:44:57.172872Z0[Note]Shuttingdownplugin'INNODB_LOCK_WAITS'2019-08-22T13:44:57.172884Z0[Note]Shuttingdownplugin'INNODB_LOCKS'2019-08-22T13:44:57.172895Z0[Note]Shuttingdownplugin'INNODB_TRX'2019-08-22T13:44:57.172906Z0[Note]Shuttingdownplugin'InnoDB'2019-08-22T13:44:57.173010Z0[Note]InnoDB:FTSoptimizethreadexiting.2019-08-22T13:44:57.173195Z0[Note]InnoDB:Startingshutdown...2019-08-22T13:44:57.274546Z0[Note]InnoDB:Dumpingbufferpool(s)to/mysqldata/mysql/ib_buffer_pool2019-08-22T13:44:57.275296Z0[Note]InnoDB:Bufferpool(s)dumpcompletedat19082221:44:572019-08-22T13:44:58.528547Z0[Note]InnoDB:Shutdowncompleted;logsequencenumber25302572019-08-22T13:44:58.531650Z0[Note]InnoDB:Removedtemporarytablespacedatafile:"ibtmp1"2019-08-22T13:44:58.531698Z0[Note]Shuttingdownplugin'MEMORY'2019-08-22T13:44:58.531736Z0[Note]Shuttingdownplugin'CSV'2019-08-22T13:44:58.531752Z0[Note]Shuttingdownplugin'sha256_password'2019-08-22T13:44:58.531764Z0[Note]Shuttingdownplugin'mysql_native_password'2019-08-22T13:44:58.531967Z0[Note]Shuttingdownplugin'binlog'2019-08-22T13:44:58.532460Z0[Note]/mysqlsoft/mysql/bin/mysqld:Shutdowncomplete

为了在服务器上自动启动和停止MySQL服务,你必须在你的/etc/rc*文件中合适的地方添加启动和停止命令:
.如果使用Linux服务RPM包(MySQL-server-VERSION.rpm)或一个原生的Linux包安装,那么mysql.server脚本可能以mysqld或mysql的名称安装到/etc/init.d目录中。

.如果使用源码或二进制版本来安装MySQL时不能自动安装mysql.server,可以手动安装这个脚本。它可以在MySQL安装目录或MySQL源码树下的support-files目录中找到。将这个脚本复制到/etc/init.d目录中并命名为mysql并且修改权限让其它可以执行:

[root@cs2~]#cp/mysqlsoft/mysql/support-files/mysql.server/etc/init.d/mysqld[root@cs2~]#chmod755/etc/init.d/mysqld

在安装脚本后,依赖于操作系统命令需要在系统启动时来激活它。在Linux上,你可以使用chkconfig:

[root@localhostinit.d]#chkconfig--addmysqld

在有一些Linux系统中,也需要执行以下命令来完全启用mysqld脚本:

[root@localhostinit.d]#chkconfig--level345mysqldon

在FreeBSD系统中,启动脚本通常应该在/usr/local/etc/rc.d/目录中,安装的mysql.server脚本就是/usr/local/etc/rc.d/mysql.server.sh来启用自动启动。rc(8)手册页指出,只有当脚本的基本名称与*.sh shell文件名模式匹配时,才会执行该目录中的脚本。该目录中存在的任何其他文件或目录都将被默认忽略。

作为上述设置的一种替代方案,有些操作系统也会使用/etc/rc.local或/etc/init.d/boot.local来在操作系统启动时启动额外的服务。为了使用这种方法来启动MySQL。需要在合适的启动文件中增加类似下面的命令:

/bin/sh-c'cd/usr/local/mysql;./bin/mysqld_safe--user=mysql&'

对于其它系统,咨询你操作系统文档来查看如何安装启动脚本。

mysql.server会读取选项文件中的[mysql.server]和[mysqld]部分的选项。为了向后兼容,它也会读取[mysql_server]部分的选项,但是现在你应该将它重命名为[mysql.server]。

可以在全局/etc/my.cnf文件中为mysql.server增加选项。一个常见的my.cnf文件可能看到类似于以下所示:

[mysqld]basedir=/mysqlsoft/mysqldatadir=/mysqldata/mysqluser=mysqlport=3306socket=/mysqlsoft/mysql/mysql.sock[mysql.server]basedir=/usr/local/mysql

mysql.server脚本支持下表中所列出的选项。如果指定,他们必须被存储在一个选项文件中,而不是在命令行中设置。mysql.server只支持start和stop作为命令行参数

表4.4 mysql.server选项文件选项
Option Name Description Type
basedir MySQL安装目录路径 目录名
datadir MySQL数据目录路径 目录名
pid-file 服务器将它的进程ID需要写入的文件 文件名
service-startup-timeout 服务器在启动时所等待的时间长度 整数

basedir=dir_name
MySQL安装目录路径

datadir=dir_name
MySQL数据目录路径

pid-file=file_name
服务器将它的进程ID需要写入的文件的路径名。如果这个选项没有指定,mysql.server将使用缺省值host_name.pid这种PID文件值传送给mysql_safe会覆盖在[mysqld_safe]选项文件组中所指定的任何值。因为mysql.server会读取[mysqld]选项文件组但不会读取[mysqld_safe]组,你也可以确保通过在[mysqld_safe]和[mysqld]组中设置相同的pid-file值使用在手动从mysql.server脚本中调用mysqld_safe时可以得到相同的值。

service-startup-timeout=seconds
确认服务器启动时可以等待的时间长度。如果服务器在这个时间内没有启动成功,mysql.server会抛出错误并退出。缺省时间为900秒。0意味着在启动时不会执行等待。负数意味着将会永久等待(不会超时)。

“怎么理解并掌握MySQL Server Startup Script”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!