mysqld_safe和mysqld之间的差异(转载) ) ) ) ) ) ) ) ) )。
mysqld_safe与mysqld不同,它很少通过直接运行mysqld程序来启动MySQL服务,而且在启动MySQL服务器后,MySQL脚本会继续监视其行为并在死机时重新启动。
使用MySQL_safe脚本启动MySQL服务器在BSD样式的unix系统上很常见。 除BSD样式外,unix系统上的mysql.server脚本实际上也通过调用mysqld_safe脚本来启动MySQL服务器。
通常会做以下事情。
验证系统和选项。
检查MyISAM表。
维护MySQL服务器窗口。
启动mysqld进行监视,如果因错误而结束,则重新启动。
将mysqld错误消息发送到数据目录的host_name.err文件。
将mysqld_safe的屏幕输出发送到数据目录的host_name.safe文件。
【mysqld】:用mysql的核心程序管理mysql的数据库文件和用户的请求操作。 mysqld可以读取配置文件的[mysqld]部分
mysqld启动命令:
[ root @ localhost MySQL ] # sk dmj/mysqld-- defaults-file=/etc/MySQL/my.cn f
查看mysqld支持的选项:
[ root @ localhost MySQL ] # sk dmj/mysqld-- verbose-- help
【mysqld_safe】:相当于增加了一个守护进程,当mysqld挂起时,mysqld进程将自动提升
1 .还读取[safe_mysqld]的配置以与可读取的组成部分[mysqld]、[server]、[myslqd_safe]和mysql_safe兼容
2.mysqld可以在[mysqld_safe]中由-mysqld,--mysqld-version指定
mysqld_safe启动命令:
[ root @ localhost MySQL ] # sk dmj/mysqld _ safe-- defaluts-file=/etc/MySQL/my.cn f
在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
显示帮助消息并退出。
- -自动关闭
[仅限NetWare ]在NetWare中,mysqld_safe可以保留窗口。 如果ssdxf关闭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
读取的替代通用选项文件的选项文件名。 给定时,必须优先使用此选项。
p>--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看上去在skdmj和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> skdmj/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脚本移植。它执行:
检查系统和选项。
检查MyISAM表。
保持MySQL服务器窗口。
启动并监视mysqld,如果因错误终止则重启。
将mysqld的错误消息发送到数据目录中的host_name.err 文件。
将mysqld_safe的屏幕输出发送到数据目录中的host_name.safe文件