<b>DBA办理MySQL服务器的启动和关闭的问题</b>[MySQL防范]
本文“<b>DBA办理MySQL服务器的启动和关闭的问题</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
作为MySQL管理员,一个普通的目标就是确保服务器尽大概地处于运行状况,使得客户机可以随时拜候它.但是,有时最好关闭服务器(比方,假如正在举行数据库的重定位,不但愿服务器在该数据库中更新表).保持服务器运行和无意关闭它的需求关系不是本书所办理的.但是我们至少可以谈论若何使服务器启动和终止,以便您具有举行这两个操作的本领.
本章的阐明只用于UNIX 系统.假如正在运行Windows 系统,可以跳过本章,因为附录A“得到和安装软件”一节中包含了全部需求的启动和关闭号令.
调用本章给出的号令
为了简便,在大大都情形中,诸如mysqladmin、mysqldump 等程序在本章中没有给出任何-h、-u或-p选项.笔者假定您将会用衔接服务器所需的任何选项调用这些程序.
用无特权的用户账号运行MySQL服务器
在谈论若何启动服务器之前,考虑一下在服务器启动时应当运行哪个账号.服务器可以手工和自动启动.假如手工启动,则服务器以UNIX 用户身份运行(您刚好作为该用户举行了注册).即,假如笔者以paul 举行注册并启动服务器,则它将以paul身份运行.假如用s u号令将用户切换到root 然后启动服务器,则服务器以root身份运行.
但是,大大都时刻大概都不会采取手工启动服务器.您极大概将安置服务器在系统指导时作为尺度启动历程的一部份自动地运行.在UNIX中,该启动历程由系统以UNIX 的root用户的身份履行,该历程中启动的任何进程都用root的权限运行.
应当紧记MySQL服务器启动历程的两个目标:
要服务器以某些非root的用户身份启动.普通,除非进程真的需求root拜候权而MySQL办不到,不然应限制任何进程的本领.
要服务器始终以同一个用户的身份运行.服务器有时作为一个用户运行而有时又作为另一个用户运行时会产生冲突.这将招致文件和目录以差别的全部权在该数据下被成立,乃至惹起服务器不能拜候数据库或表.以同一个用户的身份一致地运行服务器可以避免该问题.
为了以尺度的、非特权的用户身份运行数据库,可按以下步骤履行该历程:
1) 挑选用于运行服务器的账号.mysqld 可以以任何用户身份运行,但是很明显,它只为MySQL活动成立了一个单独的账号.您也可认为MySQL专门指定一个组.笔者将调用的这些用户和组的名字命名为mysqladm 和mysqlgrp.假如您利用了其他的名字,则在本书中有mysqladm 和mysqlgrp 的地方替换它们
假如您在自己的账号下安装了MySQL并且系统中没有特定的管理权限,则您可以在自己的ID 用户下运行服务器.在这种情形下,应利用您自己的注册名和组名替换mysqladm 和mysqlgrp .
假如您操纵RPM 文件在RedHat Linux 下安装了MySQL,则该安装程序将在mysql名下自动成立了一个账号.应利用该名字替换mysqladm.
2) 假如必要的话,可用系统常用的账号成立历程(account-creation)来成立服务器账号.这需求以root 身份举行操作.
3) 关闭服务器(假如它在运行).
4) 改正数据目录以及任何子目录和文件的全部权,使mysqladm 用户拥有它们.比方,假如数据目录是/usr/local/var,则可按以下设置mysqladm 用户的全部权:
# cd /usr/local/var 移动到数据目录.
# chown -r mysqladmin.mysqlgrp 设置全部目录和文件的全部权.
5) 改正数据目录以及任何子目录和文件的答应权,使得只有mysqladm 用户可以拜候它们.设置该方法以避免其他人员拜候是一种好得安全预防办法.假如数据目录是/ us r / l o c a l / v a r,则可通过mysqladm 用户按下列操作设置应具有的一切(您需求以root 身份运行这些号令):
# cd /usr/local/var 移动到数据目录.
# chmod -R go -rwx 使全部一切只对mysqladm可拜候.
在设置数据目录及其内容的全部权和方法时,察看标记衔接.您需求跟踪标记衔接并改正所指向的文件或目录的全部权和方法.假如这些衔接文件所定位的目录不属于您,则这样做大概会惹起麻烦,因此您必须是root 用户.
在完成前述历程后,应确保无论是作为mysqladm 还是作为root 用户注册都始终启动服务器.在后者中,要确保指定了--user = mysqladm 的选项,使服务器可以将其用户ID 切换到mysqladm(该选项在系统启动历程中也可以利用).
--user 选项被增添到MySQL3.22 的MySQL中.假如您的版本比MySQL3.22 旧,则在启动服务器并作为root用户运行时,可以利用su号令指导系统在指定账号下运行服务器.您需求阅读有关su的人工页,因为作为一个指定用户运行号令的语法被改变了.
启动服务器的办法
假如您已经肯定了用来运行服务器的账号,则可以挑选安置怎样启动服务器.可以从号令行手工运行,或在系统启动历程中自动运行服务器.有三种启动服务器的主要办法:
直接调用mysqld.这大概是最小的号令办法.除了阐明mysqld --help 是一个有效的号令(用它可以查找您可操纵其他启动办法利用的选项)外,笔者不打算进一步谈论它.
调用safe_mysqld 脚本.safe_mysqld 试图肯定服务器程序和数据目录的位置,然后操纵反映这些位置的选项调用服务器.safe_mysqld 将服务器的尺度错误输出重定向到数据目录的错误文件中,并以记录的情势呈现.在启动服务器后, safe_mysqld 还监控服务器,并在其死机时重新启动.safe_mysqld 普通用于UNIX 的BSD 气势的版本.
假如您曾经作为root 或在系统启动程序中启动safe _ mysqld,则错误日记将由root拥有.假如您试着以非特权的用户身份调用safe _ mysqld,则大概惹起“全部权被回绝”的错误.删除该错误文件再试一次.
调用mysql.server脚本.通过运行safe _ mysqld . mysql. server,该脚本启动服务器.该脚本倡议在利用System V 启动/关闭系统的系统中利用.这个系统包含几个包含在机械登录或退出一个特定运行级时被调用的脚本的目录.它可以操纵start 或stop 参数举行调用,以指明但愿启动还是关闭服务器.
safe_mysqld 脚本被安装在MySQL安装目录的bin 目录下,大概在MySQL源程序分发包的scripts 目录中.mysql.server 脚本安装在MySQL安装目录的share/mysql目录下,大概在MySQL源程序分发包的support-files 目录中.假如要利用它,应将其拷贝到符合的启动目录中.
关于BSD 气势的系统,在/etc 目录中有几个文件相对应,它们在指导期间开始服务.这些文件的名字普通以‘rc’开始,因此极大概会有一个名为rc.local (或近似的名字)的文件来启动本地的安装服务.在这样的系统中,您大概要按以下办法增添一些行到rc.local 文件中以启动服务器(假如途径与您系统中的差别,可将其改正成safe _ mysqld):
|
关于System V 气势的系统,可以通过将其安排在/etc 下的符合的启动目录中来安装mysql. server.假如您运行Linux 并从RPM 文件中安装了MySQL,那么这此操作大概已经完成了.不然,应当在主启动脚本目录中安装该脚本,并在符合的运行级目录中设置对它的衔接.您还可以使该脚本仅对root 用户可履行.
启动文件目录的筹划随系统而改变,因此将需求全面查抄来弄清系统是怎样组织它们的.比方,在LinuxPPC 中,这些目录为/etc/rc.d/init.d 和/etc/rc.d/rc3.d.应当按以下办法安装该脚本:
|
假如您拥有chkconfig 号令(它在Linux 中很常用),则可用其帮忙安装mysql.server 脚本来替换手工运行上述的号令.
1. 指定启动选项:
在启动服务器时,假如想要指定附加的启动选项,可用两种办法举行操作.您可以改正所利用的启动脚本(safe_mysqld 或mysql. server),并在调用服务器的号令行中直接指定这些选项.您还可以在选项文件中指定选项.笔者倡议,假如大概的话,应在全局选项文件中指定服务器选项.普通该文件的位置是UNIX 中的/etc/ my.cnf 和Windows 中的c:\my.cnf.
某些种类的信息不能作为服务器的选项指定.为了这些选项,您大概需求改正safe _ mysqld.比方,假如服务器不能精确地拾取GMT 中的本地时区(local time zone)和返回时间值,可以设置TZ 环境变量以给该变量一个提醒.假如用safe_mysqld 或mysql. server启动服务器,可以将时区设置增添到safe_mysqld 中.找到启动服务器的号令行,并在该行之前增添下列号令:
|
这个号令将TZ 设置为US Central 时区.您需求利用符合位置的时区.该语法是Solaris的,您的系统大概会有所差别.比方,设置TZ 变量的另一个常用语法为:
|
假如改正了启动脚本,当下次安装MySQL时(如,进级到更新的版本),将失去这些改正,除非在之前将该启动脚本拷贝到了其他地方.在安装新的版本之后,将您的脚本与新安装的脚本举行对比,以便看垂青新成立还需求做什么窜改.
2. 在启动期间查抄表:
除了在系统指导时安置服务器的启动外,您还可以安装一个脚本来运行mysamchk 和i s a m c h k,以便在服务器启动前对表举行查抄.您大概打算在服务器崩溃后重新启动,但表大概已经破坏了.在服务器启动前查抄这些表是发现问题的好办法.第13 章包含了有关编写和安装这种脚本的细节.
关闭服务器
要想手工关闭服务器,可以利用mysqladmin:% mysqladmin shutdown.
要想自动关闭服务器,您不需求做分外的操作.BSD 系统普通会通过给进程发送一个TERM 信号来关闭服务.进程大概对其作出反映,大概被随便地撤消.当mysqld 接纳到信号时,它会通过终止来呼应.关于操纵mysql.server 启动服务器的System V-气势的系统,该关闭进程将调用带有stop 参数的脚本来指导服务器举行关闭──当然,这是在假定您已经安装了mysql. ser ver的情形下举行的.
在不衔接时收回服务器的掌握
在某些环境中,由于不能衔接到服务器,您需求用手工重新启动它.当然,这有点荒诞,因为普通是通过衔接到服务器然后奉告服务器终止来手工关闭服务器的.那么这种情形是怎样呈现的?
首先,MySQL的root 口令大概得到了一个您不知道的值.这种情形大概是在改正口令时发生的─比方,假如在输入新的口令值时刚巧键入了一个不可见的掌握字符.还有大概就是完好忘掉了口令.
其次,关于localhost 的衔接普通是通过UNIX 域的套接字文件举行的,它普通为/tmp/mysql. sock.假如该套接字文件被删除了,则本地客户机将不能举行衔接.假如系统无意运行了一个删除/tmp 中的暂时文件的cron功课,这种情形便大概会发生.
假如因为失去套接字文件而不能举行衔接,可以通太重新启动服务器简单地举行恢复,因为服务器在启动期间重新成立了该文件.这里应知道的是,不能用该套接字成立衔接(因为它已经不存在)而必须成立TCP/IP 衔接.比方,假如服务器的主机是pit - viper. snake.net,则可以按以下办法举行衔接:% mysqladmin -p -uroot -h pit-viper.snake.net shutdown.
假如此套接字文件被cron 功课删除,则问题将复发,直到您改正cron 功课或利用另一个套接字文件为止.您可以用全局选项文件指定另一个套接字文件.比方,假如数据目录为/usr/local/ var,则可通过将以下行增添到/etc/ my.cnf 中来移动套接字文件到那边:
|
途径名是为服务器和客户机程序二者所指定的,以便它们能利用相同的套接字文件.假如只对服务器设置途径名,客户机程序将仍旧在旧的位置上查找套接字文件.在做出这个改正后应重新启动服务器,使它在新的位置成立套接字文件.
假如由于您忘掉了root的口令或将其改正成一个您不知道的值而不能举行衔接,则需求收回服务器的掌握以便重新设置口令:
关闭服务器.假如您以root用户的身份在服务器主机上举行登录,可用kill号令终止服务器.通过利用ps 号令或通过查看服务器的PID 文件(普通放在数据目录中)能找出服务器的ID 进程.
最好先试着用尺度的kill 号令撤消服务器,该号令将一个TERM 信号发送到服务器上,以查看服务器能否通过关闭信号来呼应.也就是说,表和日记将被适本地革新.假如服务器被堵塞并且没有呼应正常的终止信号,可以利用kill -9 强迫终止它.这是最后的一个办法,因为大概存在未革新的更改,并且要承当非一致状况下将表保存下来的风险.假如用kill -9 终止服务器,应确保在重新启动服务器之前操纵myisamchk 和isamchk对表举行查抄.
用--skip-grant-tables 选项重新启动服务器.该操作奉告服务器不要利用受权的表查抄衔接.这答应您作为root 用户不用输进口令便可举行衔接.在衔接之后,改正root的口令.
奉告服务器再操纵mysqladmin flush-privileges 利用受权表启动.假如您的mysqladmin 版本不辨认flush-privileges,试着举行重新加载.
以上是“<b>DBA办理MySQL服务器的启动和关闭的问题</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:本文地址: | 与您的QQ/BBS好友分享! |