选择显示字体大小

mysql服务器的启动与停止(二)

 三、停止服务器

    要手工启动服务器,使用mysqladmin:

    %mysqladmin shutdown

    要自动停止服务器,你不需做特别的事情。bsd系统一般通过向进程发一个term信号停止服务,它们或者正确应答它或被粗鲁地杀死。mysqld在它收到这个信号时以终止作为应答。对于用mysql.server启动服务器的system v风格的系统,停止进程将用一个stop参数调用该脚本,告诉服务器终止,当然假定你已安装了mysql.server。

    四、如果你不能连接服务器,如何重新获得对服务器的控制

    在某些情况下,你可能由于不能连接它而手工重启服务器。当然,这有点矛盾。因为一般你通过连接服务器而手工关掉它,那么这种情况如何会出现。

    首先,mysql root口令可以已经设置为你不知道的值,这可能发生在你修改口令时,例如,如果你在输入新口令时偶然键入一个不可见的控制字符。你也可能忘记口令。

    其次,连接localhost通常通过一个unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。

    如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。这里的骗局是你不能用套接字建立连接因为它不见了,你必须建立一个tcp/ip连接,例如,如果服务器主机是pit.snake.net,你可以这样连接:

    %mysqladmin -p -u root -h pit.snake.net shutdown

    如果套接字文件被一个cron任务删除,问题将重复出现,除非你修改cron任务或使用一个或使用一个不同的套接字文件,你可以使用全局选项文件指定一个不同的套接字,例如,如果数据目录是/usr/local/var,你可以通过将下列行加入/etc/my.cnf中,将套接字文件移到那里:

    [mysqld]
    socket=/usr/local/var/mysql.sock

    [client]
    socket=/usr/local/var/mysql.sock
    对服务器和客户均指定路径名,使得它们都使用同一个套接字文件。如果你只为服务器设置路径,客户程序将仍然期望在原位置执行套接字,在修改后重启服务器,使它在新位置创建套接字。

    如果你由于忘记root口令或已经将它设置为不同于认为的值而不能连接,你需要重新获得对服务器的控制,是你能再次设置口令:

    中断服务器

    如果你以root登录服务器主机,你可以用kill命令终止服务器。你可以使用ps命令或通过寻找服务器的pid文件(通常在数据目录中)找出服务器进程的id。

    最好是首先尝试用一个向服务器发出一个term信号的正常kill看它是否将以正常终止应答。这种方式下,表和日志将正确地被清空。如果服务器阻塞并且不应答一个正常终止信号,你可以用kill -9强制终止它。这是最后的手段了,因为这可能有未清空的修改,而且你冒着让表处于一个不一致状态的风险。

    如果你用kill -9终止服务器,要确保在启动服务器前用myisamchk和isamchk检查你的表。 
    用--skip-grant-table选项重启服务器
    这告诉服务器不使用授权表验证连接,这允许你以root连接而无须口令。在你已经连接后,改变root口令。 
    用mysqladmin flush-privileges告诉服务器再次使用授权表启动
    如果你的mysqladmin版本不认识flash-privileges,试一试reload。

    五、运行多个服务器

    大多数再一台给定的机器上运行单个mysql服务器,但在很多情况下,运行多个服务器是很有用的:

    你可能想测试一个服务器的新版本,而保留你正在运行的生产服务器。在这种情况下,你会运行不同的服务器代码。 
    操作系统一般限制每个进程的打开文件句柄数量。如果你的系统很难提高这个限制,运行多个服务器是解决限制的一种方法。在这种情况下,你可能运行统一服务器的多个实例。 
    isp经常为其客户提供自己的mysql安装,有必要涉及单独的服务器。在这种情况下,你可能运行同一版本的多个实例或不同版本,如果不同的客户想要不同版本的mysql。 
    很自然地,运行多个服务器比只运行一个服务器要复杂得多。如果你安装多个版本,你不能在同一个地方安装所有东西。当服务器运行时,某些参数必须或很可能对每个服务器是唯一的,它们包括服务器在哪安装、其数据目录的路径名、tcp/ip端口和unix域套接字路径名以及用于运行服务器unix账号(如果你不再同一账号下运行所有服务器)。如果你决定运行多个服务器,一定要注意你使用的参数,是你不至于ф运⑸氖虑榈淖偌!?

    5.1 配置和安装多个服务器

    如果你要运行不同版本的服务器而不是同一版本的多个实例,你必须在不同地点安装它们。如果你安装二进制分发(不用rpm),它们将安装在包含不同版本号的目录名下。如果你从源代码安装,最简单的方法是在每个版本运行configure配置mysql安装过程中使用--with-prefix选项使得不同分发分开,这将使得所有东西安装在一个单独的目录下,你可以将目录域分发版本号联系起来,如,你可以象这样配置一个mysql分发,其中version是mysql版本号:

    %.configure --with-prefix=/usr/local/mysql-version
    --with-prefix选项也决定了服务器的一个唯一数据目录。你可能想加上其它服务器特定的选项,如tcp/ip端口号和套接字路径名(--with-tcp-port和--with-unix-socket)。

    如果你想运行同一版本服务器的多个实例,任何必须基于一个服务器特定设置的选项将需要在运行时指定。

    5.2 多服务器的启动过程

    启动多个服务器比使用一个服务器要复杂。因为safe_mysqld和mysql.server均在单个服务器设置上工作得最好。建议你仔细研究一下safe_mysqld并用它作为你的启动过程的基础,使用你修改的版本,你能针对你自己的需要更精确地裁剪它。

    你必须处理的一个问题是如何在选项文件(my.cnf)中指定选项。对于多服务器,你不能对于每个不同的服务器设置使用/etc/my.cnf,你只能对所有服务器相同的设置使用该文件。如果服务器有一个不同的编译进去的数据目录位置,你可以在每个服务器数据目录中的my.cnf中指定所有服务器要使用的设置,而使用datadir/my.cnf指定服务器特定的设置,这里datadir以服务器不同而不同。

    另一种指定服务器选项的方法是用--default-file=path_name作为命令行的第一个选项,告诉服务器从名为path_name中的文件中读取选项,这样你可以把一个服务器选项放在一个对该服务器唯一的文件中,然后告诉服务器在启动时读取该文件。注意,如果你指定这个选项,将不使用通常的选项文件如/etc/my.cnf的任何一个。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons