mysqld_safe与mysqld区别详解

MysqLd_safe与MysqLd区别,直接运行MysqLd程序来启动MysqL服务的方法很少见,MysqLd_safe脚本会在启动MysqL服务器后继续监控其运行情况,并在其死机时重新启动它。

MysqLd_safe脚本来启动MysqL服务器的做法在BSD风格的unix系统上很常见,非BSD风格的UNIX系统中的 MysqL.server脚本其实也是调用MysqLd_safe脚本去启动MysqL服务器的。

它通常做如下事情:

1. 检查系统和选项。
2. 检查MyISAM表。
3. 保持MysqL服务器窗口。
4. 启动并监视MysqLd,如果因错误终止则重启。
5. 将MysqLd的错误消息发送到数据目录中的host_name.err 文件
6. 将MysqLd_safe的屏幕输出发送到数据目录中的host_name.safe文件

MysqLd】:是MysqL的核心程序,用于管理MysqL数据库文件以及用户的请求操作。MysqLd可以读取配置文件中的[MysqLd]的部分
MysqLd启动命令: 

[root@localhost MysqL]# bin/MysqLd --defaults-file=/etc/MysqL/my.cnf &

查看MysqLd支持的选项: 

[root@localhost MysqL]# bin/MysqLd --verbose --help

 

MysqLd_safe】:相当于多了一个守护进程,MysqLd挂了会自动MysqLd进程拉起来 
1.可以读取的配置部分[MysqLd],[server],[myslqd_safe], 为了兼容MysqL_safe也会读取[safe_MysqLd]中的配置
2.调用MysqLd是可以在[MysqLd_safe]中用-MysqLd, --MysqLd-version指定

MysqLd_safe启动命令:

[root@localhost MysqL]# bin/MysqLd_safe --defaluts-file=/etc/MysqL/my.cnf &

在Unix和NetWare中推荐使用MysqLd_safe来启动MysqLd服务器。

MysqLd_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。

注释:为了保持同旧版本MysqL的向后兼容性,MysqL二进制分发版仍然包括safe_MysqLd作为MysqLd_safe的符号链接。但是,你不应再依赖它,因为再将来将删掉它。
认情况下,MysqLd_safe尝试启动可执行MysqLd-max(如果存在),否则启动MysqLd。该行为的含义是:
· 在Linux中,MysqL-Max RPM依赖该MysqLd_safe的行为。RPM安装可执行MysqLd-max,使MysqLd_safe从该点起自动使用可执行命令。
· 如果你安装包括MysqLd-max服务器的MysqL-Max分发版,后面升级到非-Max的MysqL版本,MysqLd_safe仍然试图运行旧的 MysqLd-max服务器。升级时,你应手动删除旧的MysqLd-max服务器以确保MysqLd_safe运行新的MysqLd服务器。
要想越过认行为并显式指定你想要运行哪个服务器,为MysqLd_safe指定 --MysqLd 或 --MysqLd-version 选项。


MysqLd_safe从选项文件的[MysqLd]、[server]和 [MysqLd_safe]部分读取所有选项。为了保证向后兼容性,它还读取 [safe_MysqLd]部分,尽管在MysqL 5.1安装中你应将这部分重新命名为[MysqLd_safe]。
MysqLd_safe支持下面的选项:

--help
显示帮助消息并退出

--autoclose
(只在NetWare中)在NetWare中,MysqLd_safe可以保持窗口。当你关掉MysqLd_safe NLM时,窗口不按认设置消失。相反,它提示用户输入:
**如果你想让NetWare自动关闭窗口,在MysqLd_safe中使用--autoclose选项。

--basedir=path
MysqL安装目录的路径。

--core-file-size=size
MysqLd能够创建的内核文件的大小。选项值传递给ulimit -c。
--datadir=path 
数据目录的路径。

--defaults-extra-file=path
除了通用选项文件所读取的选项文件名。如果给出,必须首选该选项。

 --defaults-file=path
读取的代替通用选项文件的选项文件名。如果给出,必须首选该选项。

 --ledir=path
包含MysqLd程序的目录的路径。使用该选项来显式表示服务器位置。

 --log-error=path
错误日志写入给定的文件。参见5.11.1节,“错误日志”。

 --MysqLd=prog_name
想要启动的服务器程序名(在ledir目录)。如果你使用MysqL二进制分发版但有二进制分发版之外的数据目录需要该选项。

 --MysqLd-version =suffix
该选项类似--MysqLd选项,但你只指定服务器程序名的后缀。基本名假定为MysqLd。例如,如果你使用--MysqLd-version =max,MysqLd_safe启动ledir目录中的MysqLd-max程序。如果--MysqLd-version的参数为空,MysqLd_safe使用目录中的MysqLd。

 --nice=priority
使用nice程序根据给定值来设置服务器的调度优先级。

 --no-defaults
不要读任何选项文件。如果给出,必须首选该选项。

 --open-files-limit=count
MysqLd能够打开的文件数量。选项值传递给 ulimit -n。请注意你需要用root启动MysqLd_safe来保证正确工作。

 --pid-file=path
进程ID文件的路径。

 --port=port_num
用来帧听TCP/IP连接的端口号。端口号必须为1024或更大值,除非MysqL以root系统用户运行。

 --skip-character-set-client-handshake
忽略客户端发送的字符集信息,使用服务器的认字符集。(选择该选项,MysqL的动作与MysqL 4.0相同)。

 --socket=path
用于本地连接的Unix套接文件

 --timezone=zone
为给定的选项值设置TZ时区环境变量。从操作系统文档查阅合法的时区规定格式。

 --user={user_name | user_id}
用户名user_name或数字用户ID user_id运行MysqLd服务器。(本文中的“用户”指系统登录账户,而不是 授权表中的MysqL用户)。


执行MysqLd_safe时,必须先给出--defaults-file或--defaults-extra-option,或不使用选项文件
该命令将不使用选项文件,因为第一个参数不是选项文件
MysqLd_safe --port=3306 --defaults-file=/etc/MysqL/my.cnf
相反,使用下面的命令,则可以使用选项文件
MysqLd_safe --defaults-file=/etc/MysqL/my.cnf --port=3306

 

一般情况MysqLd_safe脚本可以启动从源码或二进制MysqL分发版安装的服务器,即使这些分发版将服务器安装到稍微不同的位置。(参见2.1.5节,“安装布局”)。

MysqLd_safe期望下面的其中一个条件是真的:
1)可以根据调用MysqLd_safe的目录找到服务器和数据库。在二进制分发版中,MysqLd_safe看上去在bin和data目录的工作目录下。对于源码分发版,为libexec和var目录。如果你从MysqL安装目录执行MysqLd_safe应满足该条件(例如,二进制分发版为/usr/local/MysqL)。
2)如果不能根据工作目录找到服务器和数据库MysqLd_safe试图通过绝对路径对它们定位。典型位置为/usr/local/libexec和 /usr/local/var。实际位置由构建分发版时配置的值确定如果MysqL安装到配置时指定的位置,它们应该是正确的。

因为MysqLd_safe试图通过工作目录找到服务器和数据库,只要你从MysqL安装目录运行MysqLd_safe,可以将MysqL二进制分发版安装到其它位置:
shell> cd MysqL_installation_directoryshell> bin/MysqLd_safe &如果MysqLd_safe失败,即使从MysqL安装目录调用仍然失败,你可以指定--ledir和--datadir选项来指示服务器和数据库在你的系统中的安装目录。

一般情况,你不应编辑MysqLd_safe脚本。相反,应使用命令行选项或my.cnf选项文件的[MysqLd_safe]部分的选项来配置MysqLd_safe。一般不需要编辑MysqLd_safe来正确启动服务器。
但是,如果你编辑,将来升级MysqL后会覆盖你修改MysqLd_safe版本,因此你应对你修改的版本进行备份以便将来重装。
在NetWare中,MysqLd_safe是一个NetWare Loadable Module (NLM),从原Unix shell脚本移植。它执行:
1. 检查系统和选项。
2. 检查MyISAM表。
3. 保持MysqL服务器窗口。
4. 启动并监视MysqLd,如果因错误终止则重启。
5. 将MysqLd的错误消息发送到数据目录中的host_name.err 文件
6. 将MysqLd_safe的屏幕输出发送到数据目录中的host_name.safe文件

相关文章

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导...
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问...
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,...
case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...