服务器和服务器启动程序
本节介绍mysqld,MySQL服务器以及用于启动服务器的几个程序。
mysqld-MySQL服务器
mysqld,也称为MySQL Server,是在MySQL安装中完成大部分工作的主程序。MySQL服务器管理对包含数据库和表的MySQL数据目录的访问。数据目录也是其他信息(例如日志文件和状态文件)的默认位置。
注意一些安装软件包包含名为mysqld-debug的服务器的调试版本。调用此版本而不是mysqld以获得调试支持,内存分配检查和跟踪文件支持(请参见“创建跟踪文件”)。
MySQL服务器启动时,它将侦听来自客户端程序的网络连接,并代表这些客户端管理对数据库的访问。
该mysqld的程序具有可在启动时指定的许多选项。有关选项的完整列表,请运行以下命令:
shell>mysqld --verbose --help
MySQL Server还具有一组系统变量,这些变量会在运行时影响其操作。可以在服务器启动时设置系统变量,并且可以在运行时更改许多系统变量以实现动态服务器重新配置。MySQL Server还具有一组状态变量,这些变量提供有关其操作的信息。您可以监视这些状态变量以访问运行时性能特征。
有关MySQL Server命令选项,系统变量和状态变量的完整说明,请参见“ MySQL服务器”。有关安装MySQL和设置初始配置的信息,请参见安装和升级MySQL。
mysqld_safe-MySQL服务器启动脚本
推荐使用 mysqld_safe在Unix上启动mysqld服务器。mysqld_safe添加了一些安全功能,例如在发生错误时重新启动服务器,以及将运行时信息记录到错误日志中。错误记录的描述在本节后面给出。
注意对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上,未安装mysqld_safe,因为它是不必要的。
mysqld_safe尝试启动一个名为 mysqld的可执行文件。要覆盖默认行为并明确指定要运行的服务器的名称,请为 mysqld_safe指定一个--mysqld
或--mysqld-version
选项。您也可以使用指示 mysqld_safe在其中寻找服务器的目录。--ledir
mysqld_safe的许多选项与mysqld的选项相同。请参见“服务器命令选项”。
如果在命令行中指定了mysqld_safe未知的选项,则将其传递给mysqld;如果在[mysqld_safe]
选项文件组中指定了这些选项,则将其忽略。请参见“使用选项文件”。
mysqld_safe的读取的所有选项[mysqld]
,[server]
以及[mysqld_safe]
选项文件中的部分。例如,如果指定这样的[mysqld]
部分, mysqld_safe将找到并使用以下--log-error
选项:
[mysqld] log-error=error.log
为了向后兼容,mysqld_safe还会读取[safe_mysqld]
节,但是,当前,您应该将这些节重命名为[mysqld_safe]
。
mysqld_safe接受命令行和选项文件中的选项,如下表所述。有关MySQL程序使用的选项文件的信息,请参见“使用选项文件”。
--help
显示帮助消息并退出。
--basedir=dir_name
MySQL安装目录的路径。
--core-file-size=size
mysqld应该能够创建的核心文件的大小。选项值传递到ulimit -c。
注意
该
innodb_buffer_pool_in_core_file
变量可用于减少支持它的操作系统上核心文件的大小。有关更多信息,请参见“从核心文件中排除缓冲池页面”。--datadir=dir_name
数据目录的路径。
--defaults-extra-file=file_name
除通常的选项文件外,还请阅读此选项文件。如果该文件不存在或无法访问,则服务器将退出并显示错误。
file_name
如果给出为相对路径名而不是完整路径名,则相对于当前目录解释。如果使用它,它必须是命令行上的第一个选项。有关此选项和其他选项文件选项的更多信息,请参见“影响选项文件处理的命令行选项”。
--defaults-file=file_name
仅使用给定的选项文件。如果该文件不存在或无法访问,则服务器将退出并显示错误。
file_name
如果给出为相对路径名而不是完整路径名,则相对于当前目录解释。如果使用它,它必须是命令行上的第一个选项。有关此选项和其他选项文件选项的更多信息,请参见“影响选项文件处理的命令行选项”。
--ledir=dir_name
如果mysqld_safe无法找到服务器,请使用此选项指示服务器所在目录的路径名。
此选项仅在命令行上接受,而在选项文件中不接受。在使用systemd的平台上,可以在中指定值
MYSQLD_OPTS
。请参见“使用systemd管理MySQL服务器”。--log-error=file_name
将错误日志写入给定文件。请参见“MySQL服务器错误日志”。
--mysqld-safe-log-timestamps
该选项控制mysqld_safe生成的日志输出中时间戳的格式。以下列表描述了允许的值。对于其他任何值,mysqld_safe会记录警告并使用
UTC
格式。UTC
,utc
ISO 8601 UTC格式(与
--log_timestamps=UTC
服务器相同)。这是默认值。SYSTEM
,system
ISO 8601本地时间格式(与
--log_timestamps=SYSTEM
服务器相同)。HYPHEN
,hyphen
YY-MM-DD h:mm:ss
格式,如MySQL 5.6的mysqld_safe中所示。LEGACY
,legacy
YYMMDD hh:mm:ss
格式,例如 MySQL 5.6之前的mysqld_safe。
--malloc-lib=[lib_name]
用于内存分配的库的名称,而不是系统
malloc()
库的名称。该选项的值必须是一个目录中/usr/lib
,/usr/lib64
,/usr/lib/i386-linux-gnu
,或/usr/lib/x86_64-linux-gnu
。该
--malloc-lib
选项通过修改LD_PRELOAD
环境值来影响动态链接,从而使加载程序能够在mysqld运行时找到内存分配库:- 如果没有给出选项,或者没有给出值(
--malloc-lib=
),LD_PRELOAD
则不会修改该选项,也不会尝试使用tcmalloc
。 - 如果选项指定为
--malloc-lib=tcmalloc
,则mysqld_safe在中查找tcmalloc
库/usr/lib
。如果tmalloc
找到,则将其路径名添加到mysqld的LD_PRELOAD
值的开头。如果未找到,则mysqld_safe中止并返回错误。tcmalloc
- 如果将选项指定为,则将完整路径添加到值的开头。如果完整路径指向不存在或不可读的文件,则mysqld_safe将中止并返回错误。
--malloc-lib=/path/to/some/library
LD_PRELOAD
- 对于mysqld_safe将路径名添加到的情况
LD_PRELOAD
,它将路径添加到变量已经具有的任何现有值的开头。
注意
在使用systemd管理服务器的系统上,mysqld_safe不可用。而是通过
LD_PRELOAD
在中设置来指定分配库/etc/sysconfig/mysql
。通过将以下行添加到文件中, Linux用户可以
libtcmalloc_minimal.so
在tcmalloc
安装了软件包的任何平台上使用该库:/usr/lib
my.cnf
[mysqld_safe] malloc-lib=tcmalloc
要使用特定的
tcmalloc
库,请指定其完整路径名。例:[mysqld_safe] malloc-lib=/opt/lib/libtcmalloc_minimal.so
- 如果没有给出选项,或者没有给出值(
--mysqld=prog_name
ledir
您要启动的服务器程序的名称(在目录中)。如果使用MySQL二进制分发版,但数据目录不在二进制分发版中,则需要此选项。如果mysqld_safe找不到服务器,请使用该--ledir
选项指示服务器所在目录的路径名。此选项仅在命令行上接受,而在选项文件中不接受。在使用systemd的平台上,可以在中指定值
MYSQLD_OPTS
。请参见“使用systemd管理MySQL服务器”。--mysqld-version=suffix
该选项类似于该
--mysqld
选项,但是您仅指定服务器程序名称的后缀。基本名称假定为mysqld。例如,如果使用--mysqld-version=debug
,mysqld_safe将在目录中启动mysqld-debug程序ledir
。如果to的参数--mysqld-version
为空,则mysqld_safe在目录中使用mysqldledir
。此选项仅在命令行上接受,而在选项文件中不接受。在使用systemd的平台上,可以在中指定值
MYSQLD_OPTS
。请参见“使用systemd管理MySQL服务器”。--nice=priority
使用该
nice
程序将服务器的调度优先级设置为给定值。--no-defaults
不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败,
--no-defaults
则可以使用该选项来防止读取它们。如果使用它,它必须是命令行上的第一个选项。有关此选项和其他选项文件选项的更多信息,请参见“影响选项文件处理的命令行选项”。
--open-files-limit=count
mysqld应该能够打开的文件数。选项值传递给ulimit -n。
注意
您必须启动mysqld_safe的是
root
正确的这功能。--pid-file=file_name
mysqld应该为其进程ID文件使用的路径名。
--plugin-dir=dir_name
插件目录的路径名。
--port=port_num
服务器在侦听TCP / IP连接时应使用的端口号。除非服务器由
root
操作系统用户启动,否则端口号必须为1024或更高。--skip-kill-mysqld
不要试图在启动时杀死迷路的mysqld进程。此选项仅在Linux上有效。
--socket=path
服务器在侦听本地连接时应使用的Unix套接字文件。
--syslog
,--skip-syslog
--syslog
导致将错误消息发送到syslog
支持记录器程序的系统上。--skip-syslog
禁止使用syslog
;消息被写入错误日志文件。当
syslog
用于错误日志记录时,daemon.err
设施/严重性用于所有日志消息。不建议使用这些选项来控制mysqld日志记录。要将错误日志输出写入系统日志,请使用“将错误日志记录到系统日志”中的说明。要控制设施,请使用服务器
log_syslog_facility
系统变量。--syslog-tag=tag
用于登录到
syslog
,从消息mysqld_safe的和mysqld的写入用的识别符mysqld_safe
和mysqld
分别。要指定标识符的后缀,请使用,将标识符修改为和。--syslog-tag=tag
mysqld_safe-tag
mysqld-tag
不建议使用此选项来控制mysqld日志记录。请改用服务器
log_syslog_tag
系统变量。--timezone=timezone
将
TZ
时区环境变量设置为给定的选项值。请查阅操作系统文档,以获取合法的时区规范格式。--user={user_name|user_id}
以具有名称或数字用户ID的用户身份运行mysqld服务器。(在此上下文中,“用户”是指系统登录帐户,而不是授权表中列出的MySQL用户。)
user_name
user_id
如果使用或选项执行mysqld_safe以命名选项文件,则该选项必须是命令行中第一个指定的选项,否则将不使用选项文件。例如,此命令将不使用命名的选项文件:--defaults-file
--defaults-extra-file
mysql>mysqld_safe --port=port_num --defaults-file=file_name
而是使用以下命令:
mysql>mysqld_safe --defaults-file=file_name --port=port_num
该mysqld_safe的脚本编写,以便它可以正常启动从一个源或MySQL的一个二进制分发安装在服务器上,即使这些类型的分布通常在稍微不同的地点安装服务器。(请参见“安装布局”。)mysqld_safe期望满足以下条件之一:
- 可以相对于工作目录(从中调用mysqld_safe的目录)找到服务器和数据库。对于二进制发行版,mysqld_safe在其工作目录下查找
bin
和dat
目录。对于源分发,它将查找libexec
和var
目录。如果从MySQL安装目录执行mysqld_safe(例如,/usr/local/mysql
用于二进制分发),则应满足此条件。 - 如果找不到相对于工作目录的服务器和数据库,则mysqld_safe尝试通过绝对路径名找到它们。典型的位置是
/usr/local/libexec
和/usr/local/var
。实际位置取决于在构建分布时已配置到分布中的值。如果将MySQL安装在配置时指定的位置,则它们应该是正确的。
因为mysqld_safe试图查找相对于其自己的工作目录的服务器和数据库,所以只要在MySQL安装目录中运行mysqld_safe,就可以在任何地方安装MySQL的二进制发行版:
shell>cd mysql_installation_directory shell>bin/mysqld_safe &
如果mysqld_safe失败,即使从MySQL安装目录中调用了mysqld_safe,也请指定--ledir
和--datadir
选项以指示系统上服务器和数据库所在的目录。
mysqld_safe尝试使用sleep和 date系统实用程序来确定每秒尝试启动多少次。如果存在这些实用程序,并且每秒尝试启动的次数大于5,则mysqld_safe等待1秒钟,然后再次启动。这样做是为了防止重复出现故障时过度使用CPU。(缺陷#11761530,错误#54035)
当您使用mysqld_safe启动mysqld时,mysqld_safe安排来自其自身和mysqld的错误(和通知)消息,以到达相同的目的地。
有几个mysqld_safe选项用于控制这些消息的目的地:
--log-error=file_name
:将错误消息写入命名的错误文件。--syslog
:将错误消息写入syslog
支持记录器程序的系统上。--skip-syslog
:不要将错误消息写入syslog
。消息将写入默认错误日志文件(host_name.err
在数据目录中),或者如果指定了--log-error
选项,则写入命名文件。
如果未提供这些选项,则默认值为--skip-syslog
。
当mysqld_safe写入一条消息时,通知会转到记录目标(syslog
或错误日志文件)和stdout
。错误进入日志记录目标和stderr
。
注意从mysqld_safe控制mysqld日志记录已被弃用。请使用服务器的本机支持。有关更多信息,
syslog
mysql.server-MySQL服务器启动脚本
Unix和类似Unix的系统上的MySQL发行版包含一个名为mysql.server的脚本,该脚本使用mysqld_safe启动MySQL服务器。它可以在使用System V样式运行目录来启动和停止系统服务的系统(例如Linux和Solaris)上使用。适用于MySQL的macOS启动项也使用它。
mysql.server是MySQL源代码树中使用的脚本名称。安装的名称可能不同(例如, mysqld或mysql)。在下面的讨论中,根据您的系统调整名称 mysql.server。
注意对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上,未安装mysql.server和mysqld_safe,因为它们是不必要的。
要使用mysql.server脚本手动启动或停止服务器,请在命令行使用start
或stop
参数调用它:
shell>mysql.server start shell>mysql.server stop
mysql.server将位置更改为MySQL安装目录,然后调用mysqld_safe。要以某些特定用户身份运行服务器,请将适当的user
选项添加到[mysqld]
全局/etc/my.cnf
选项文件的组中,如本节稍后部分所示。(如果在非标准位置安装了MySQL的二进制发行版,则可能必须编辑mysql.server。在运行 mysqld_safe之前对其进行修改,以将位置更改为正确的目录。如果执行此操作,则是修改后的 mysql版本。服务器如果将来升级MySQL,可能会被覆盖;复制您可以重新安装的已编辑版本。)
mysql.server stop通过向服务器发送信号来停止服务器。您也可以通过执行 mysqladmin shutdown手动停止服务器。
要在服务器上自动启动和停止MySQL,必须将启动和停止命令添加到/etc/rc*
文件中的适当位置:
- 如果您使用Linux服务器RPM软件包()或本机Linux软件包安装,则mysql.server脚本可能会安装在名称为或的目录中。有关Linux RPM软件包的更多信息,请参见“使用Oracle的RPM软件包在Linux上安装MySQL”。
MySQL-server-VERSION.rpm
/etc/init.d
mysqld
mysql
如果从源代码发行版安装MySQL或使用不会自动安装mysql.server的二进制发行版格式,则可以手动安装脚本。可以
support-files
在MySQL安装目录下的目录中或MySQL源代码树中找到它。将脚本复制到/etc/init.d
名为mysql的目录并使其可执行:shell>
cp mysql.server /etc/init.d/mysql shell>chmod +x /etc/init.d/mysql安装脚本后,激活脚本以在系统启动时运行所需的命令取决于您的操作系统。在Linux上,您可以使用chkconfig:
shell>
chkconfig --add mysql在某些Linux系统上,完全启用mysql脚本似乎也需要以下命令:
shell>
chkconfig --level 345 mysql on- 在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]
。
您可以在全局文件中为mysql.server添加选项/etc/my.cnf
。一个典型的my.cnf
文件可能如下所示:
[mysqld] datadir=/usr/local/mysql/var socket=/var/tmp/mysql.sock port=3306 user=mysql [mysql.server] basedir=/usr/local/mysql
该mysql.server的脚本支持下表中显示的选项。如果指定,则必须将它们放置在选项文件中,而不是在命令行中。mysql.server仅支持start
和stop
作为命令行参数。
表4.7 mysql.server选项-文件选项
选项名称 | 描述 | 类型 |
---|---|---|
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
。传递给mysqld_safe的PID文件值将覆盖[mysqld_safe]
选项文件组中指定的任何值。由于mysql.server读取[mysqld]
选项文件组而不是[mysqld_safe]
组,因此可以通过在和组中放置相同的设置,确保从mysql.server调用时mysqld_safe与手动调用时获得相同的值。pid-file
[mysqld_safe]
[mysqld]
service-startup-timeout=seconds
等待确认服务器启动的秒数。如果服务器在这段时间内没有启动,则mysql.server退出并出现错误。默认值为900。值为0表示完全不等待启动。负值表示要永远等待(无超时)。
mysqld_multi-管理多个MySQL服务器
mysqld_multi用于管理多个 mysqld进程,这些进程侦听不同Unix套接字文件和TCP / IP端口上的连接。它可以启动或停止服务器,或报告其当前状态。
注意对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上,未安装mysqld_multi,因为它是不必要的。有关使用systemd处理多个MySQL实例的信息,
mysqld_multi的搜索命名组中(或由指定的文件中选择)。可以是任何正整数。在下面的讨论中,此编号称为选项组编号或。组号将选项组彼此区分开,并用作 mysqld_multi的参数,以指定要启动,停止或获取其状态报告的服务器。这些组中列出的选项与用于启动 mysqld的组中使用的选项相同。(例如,请参见“自动启动和停止MySQL”[mysqldN]
my.cnf
--defaults-file
N
GNR
[mysqld]
。)但是,当使用多台服务器时,必须为每个服务器使用自己的值作为选项,例如Unix套接字文件和TCP / IP端口号。有关在多服务器环境中每个服务器上哪些选项必须唯一的更多信息,请参见“在一台计算机上运行多个MySQL实例”。
要调用mysqld_multi,请使用以下语法:
shell>mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]
start
,stop
,reload
(停止和重新起动),并report
指示执行哪个操作。您可以对单个服务器或多个服务器执行指定的操作,具体取决于GNR
选项名称后面的列表。如果没有列表,则mysqld_multi对选项文件中的所有服务器执行操作。
每个GNR
值代表一个选项组号或组号范围。该值应该是选项文件中组名末尾的数字。例如,GNR
名为的组[mysqld17]
的17
。要指定数字范围,请用破折号分隔第一个和最后一个数字。该GNR
值10-13
表示[mysqld10]
通过组成的组[mysqld13]
。可以在命令行上指定多个组或组范围,以逗号分隔。GNR
列表中不得包含空格字符(空格或制表符);空格字符后的所有内容都将被忽略。
此命令使用选项组启动单个服务器[mysqld17]
:
shell>mysqld_multi start 17
该命令使用选项组[mysqld8]
并[mysqld10]
通过[mysqld13]
以下命令停止多个服务器:
shell>mysqld_multi stop 8,10-13
有关如何设置选项文件的示例,请使用以下命令:
shell>mysqld_multi --example
mysqld_multi搜索选项文件,如下所示:
- 使用
--no-defaults
,不读取任何选项文件。 - 使用,仅读取命名的文件。
--defaults-file=file_name
- 否则,将读取标准位置列表中的选项文件,包括由选项命名的任何文件(如果已指定)。(如果多次给出该选项,则使用最后一个值。)
--defaults-extra-file=file_name
有关这些选项文件选项和其他选项文件选项的更多信息,请参见“影响选项文件处理的命令行选项”。
搜索已读取的选项文件[mysqld_multi]
和选项组。该组可用于mysqld_multi本身的选项。组可以用于传递给特定mysqld实例的选项。[mysqldN]
[mysqld_multi]
[mysqldN]
该[mysqld]
或[mysqld_safe]
团体可用于通过的所有实例读取常用选项的mysqld或mysqld_safe的。您可以指定用于该实例的其他配置文件的选项,在这种情况下,该文件中的或组将用于该实例。--defaults-file=file_name
[mysqld]
[mysqld_safe]
mysqld_multi支持以下选项。
--help
显示帮助消息并退出。
--example
显示样本选项文件。
--log=file_name
指定日志文件的名称。如果该文件存在,则将日志输出附加到该文件。
--mysqladmin=prog_name
用于停止服务器的mysqladmin二进制文件。
--mysqld=prog_name
要使用的mysqld二进制文件。注意,您也可以指定mysqld_safe作为此选项的值。如果使用mysqld_safe启动服务器,则可以在相应的选项组中包括
mysqld
或ledir
选项。这些选项指示mysqld_safe应该启动的服务器的名称以及该服务器所在目录的路径名。(请参见“mysqld_safe-MySQL服务器启动脚本”中对这些选项的描述。)示例:[mysqldN]
[mysqld38] mysqld = mysqld-debug ledir = /opt/local/mysql/libexec
--no-log
将日志信息打印到
stdout
而不是打印到日志文件。默认情况下,输出进入日志文件。--password=password
调用mysqladmin时要使用的MySQL帐户的密码。请注意,与其他MySQL程序不同,此选项的密码值不是可选的。
--silent
静音模式;禁用警告。
--tcp-ip
通过TCP / IP端口而不是Unix套接字文件连接到每个MySQL服务器。(如果缺少套接字文件,则服务器可能仍在运行,但只能通过TCP / IP端口访问。)默认情况下,使用Unix套接字文件进行连接。此选项影响
stop
和report
操作。--user=user_name
调用mysqladmin时要使用的MySQL帐户的用户名。
--verbose
更加冗长。
--version
显示版本信息并退出。
有关mysqld_multi的一些说明:
最重要的是:在使用 mysqld_multi之前,请确保您了解传递给 mysqld服务器的选项的含义以及为什么要拥有单独的mysqld进程。注意使用具有相同数据目录的多个 mysqld服务器的危险。除非您知道自己在做什么,否则请使用单独的数据目录。开始用相同的数据目录的多台服务器并没有给你一个线程系统额外的性能。看到“在一台机器上运行多个MySQL实例”。
重要确保启动特定mysqld进程的Unix帐户可以完全访问每个服务器的数据目录。除非您知道自己在做什么,否则请勿使用Unix
root
帐户。请参见“如何以普通用户身份运行MySQL”。确保用于停止mysqld服务器(使用mysqladmin程序)的MySQL帐户具有与每个服务器相同的用户名和密码。另外,请确保该帐户具有
SHUTDOWN
特权。如果要管理的服务器的管理帐户使用不同的用户名或密码,则可能要在每台具有相同用户名和密码的服务器上创建一个帐户。例如,您可以multi_admin
通过对每个服务器执行以下命令来设置公共帐户:shell>
mysql -u root -S /tmp/mysql.sock -p Enter password: mysql>CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; mysql>GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';请参见“访问控制和帐户管理”。您必须为每个mysqld服务器执行此操作。连接到每个连接参数时,请适当更改连接参数。注意,帐户名的主机名部分必须允许您
multi_admin
从要运行mysqld_multi的主机进行连接。- 每个mysqld的Unix套接字文件和TCP / IP端口号都必须不同。(或者,如果主机具有多个网络地址,则可以设置
bind_address
系统变量以使不同的服务器侦听不同的接口。) --pid-file
如果使用mysqld_safe启动mysqld(例如),则该选项非常重要。--mysqld=mysqld_safe
每个mysqld都应具有其自己的进程ID文件。使用mysqld_safe代替mysqld的优点是mysqld_safe监视其mysqld进程,如果该进程由于使用kill -9
或其他原因(例如分段错误)发送的信号而终止,则该进程将重新启动。- 您可能要
--user
对mysqld使用该选项,但是要执行此操作,您需要以Unix超级用户()的身份运行mysqld_multi脚本root
。在选项文件中包含选项无关紧要;如果您不是超级用户,并且仅在您自己的Unix帐户下启动mysqld进程,则只会收到警告。
以下示例显示了如何设置与mysqld_multi一起使用的选项文件。其中顺序mysqld的程序被启动或停止取决于它们出现在选项文件的顺序。组号不必形成连续的序列。示例中有意省略了第一组和第五组,以说明您在选项文件中可以有“ gap ”。这为您提供了更大的灵活性。[mysqldN]
# This is an example of a my.cnf file for mysqld_multi. # Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = multi_admin password = my_password [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/data2/hostname.pid2 datadir = /usr/local/mysql/data2 language = /usr/local/mysql/share/mysql/english user = unix_user1 [mysqld3] mysqld = /path/to/mysqld_safe ledir = /path/to/mysqld-binary/ mysqladmin = /path/to/mysqladmin socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/data3/hostname.pid3 datadir = /usr/local/mysql/data3 language = /usr/local/mysql/share/mysql/swedish user = unix_user2 [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/data4/hostname.pid4 datadir = /usr/local/mysql/data4 language = /usr/local/mysql/share/mysql/estoni user = unix_user3 [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/data6/hostname.pid6 datadir = /usr/local/mysql/data6 language = /usr/local/mysql/share/mysql/japanese user = unix_user4
请参见“使用选项文件”。