10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 41.1 mb
PDF (A4)- 41.2 mb
PDF (RPM)- 39.8 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.6 mb
HTML下载(RPM)- 8.1 mb
手册(TGZ)- 260.5 kb
手册(Zip)- 371.7 kb
信息(Gzip)- 3.9 mb
信息(邮政编码)- 3.9 mb
本手册节选

2.5.9使用systemd管理MySQL服务器

如果在以下Linux平台上使用RPM或Debian包安装MySQL,服务器的启动和关闭由systemd管理:

  • RPM包平台:

    • 企业Linux版本7及更高版本

    • SUSE Linux Enterprise Server 12及以上版本

    • Fedora 29及以上

  • Debian家族平台:

    • Debian的平台

    • Ubuntu的平台

如果您从一个使用systemd的平台上的通用二进制发行版安装MySQL,您可以按照安装后设置部分提供的说明手动配置systemd对MySQL的支持MySQL 8.0安全部署指南

如果从使用systemd的平台上的源发行版安装MySQL,则通过使用-DWITH_SYSTEMD = 1CMake选择。看到

systemd概述

systemd提供MySQL服务器的自动启动和关闭。方法还支持手动服务器管理systemctl命令。例如:

壳> systemctl{开始| | |重新启动停止状态}mysqld

或者,使用服务命令(参数反转),该命令与System V系统兼容:

Shell >服务mysqld{开始| | |重新启动停止状态}
请注意

systemctl命令(以及其他选项服务如果MySQL服务名不是mysqld然后使用合适的名称。例如,使用mysql而不是mysqld在debian和SLES系统上。

对systemd的支持包括以下文件:

  • mysqld.service(RPM平台),mysql.service(Debian平台):systemd服务单元配置文件,包含MySQL服务的详细信息。

  • mysqld@.service(RPM平台),mysql@.service(Debian平台):像mysqld.servicemysql.service,但用于管理多个MySQL实例。

  • mysqld.tmpfiles.d:包含支持临时文件特性。此文件安装在名称下mysql.conf

  • mysqld_pre_systemd(RPM平台),mysql-system-start(Debian平台):支持单元文件的脚本。此脚本仅在日志位置与模式(/var/log/mysql*.log对于RPM平台,/var/log/mysql/*.log针对Debian平台)。在其他情况下,错误日志目录必须是可写的,或者错误日志必须存在并且对于运行mysqld的过程。

为MySQL配置systemd

要添加或更改MySQL的systemd选项,可以使用以下方法:

  • 使用本地化的systemd配置文件。

  • 安排systemd为MySQL服务器进程设置环境变量。

  • 设置MYSQLD_OPTSsystemd变量。

要使用本地化的systemd配置文件,请创建/etc/systemd/system/mysqld.service.d目录(如果不存在)。在该目录中,创建一个包含(服务)部分列出所需的设置。例如:

[服务]LimitNOFILE =max_open_files好=nice_levelLimitCore =core_file_limit环境= " LD_PRELOAD =/道路/ / malloc /库“环境= " TZ =time_zone_setting

这里的讨论使用override.conf作为此文件的名称。systemd的新版本支持以下命令,该命令打开编辑器并允许您编辑文件:

systemctl edit mysql # RPM平台

当你创建或更改时override.conf,重新加载systemd配置,然后告诉systemd重新启动MySQL服务:

systemctl daemon-reload systemctl restart mysqld # RPM平台systemctl restart mysql # Debian平台

在systemd中,theoverride.conf配置方法必须对某些参数使用配置方法,而不能使用(mysqld),(mysqld_safe),或(safe_mysqld)在MySQL选项文件中:

  • 对于某些参数,override.conf必须使用,因为systemd本身必须知道它们的值,它不能读取MySQL选项文件来获取它们。

  • 指定值的参数,否则只能使用已知的选项设置mysqld_safe必须使用systemd指定,因为没有对应的mysqld参数。

有关使用systemd而不是mysqld_safe,请参阅override.conf:

一些MySQL参数是通过环境变量配置的:

  • LD_PRELOAD:如果MySQL服务器需要使用特定的内存分配库,则设置此变量。

  • NOTIFY_SOCKET:此环境变量指定用于mysqld用于与systemd通信启动完成通知和服务状态更改。该参数由systemd设置mysqld服务已启动。的mysqld服务读取变量设置并写入定义的位置。

    在MySQL 8.0中,mysqld使用类型=通知进程启动类型。(类型=分支在MySQL 5.7中使用。)与类型=通知, systemd自动配置套接字文件,并将路径导出到NOTIFY_SOCKET环境变量。

  • TZ:设置服务器的默认时区。

有多种方法可以指定systemd管理的MySQL服务器进程使用的环境变量值:

  • 使用环境的行override.conf文件。有关语法,请参阅前面讨论中描述如何使用该文件的示例。

  • 中指定值/etc/sysconfig/mysql文件(如果文件不存在,则创建该文件)。使用以下语法赋值:

    LD_PRELOAD =/道路/ / malloc /库TZ =time_zone_setting

    修改后/etc/sysconfig/mysql,重新启动服务器使更改生效:

    systemctl restart mysqld # RPM平台systemctl restart mysql # Debian平台

指定以下选项mysqld在不直接修改systemd配置文件的情况下,设置或取消设置MYSQLD_OPTSsystemd变量。例如:

systemctl set-environment MYSQLD_OPTS="——general_log=1

MYSQLD_OPTS也可以设置在/etc/sysconfig/mysql文件。

修改完systemd环境后,重启服务器使更改生效:

systemctl restart mysqld # RPM平台systemctl restart mysql # Debian平台

对于使用systemd的平台,如果在服务器启动时为空,则初始化data目录。如果数据目录是一个临时消失的远程挂载,这可能是个问题:挂载点将显示为一个空数据目录,然后将初始化为一个新的数据目录。要抑制这种自动初始化行为,请在/etc/sysconfig/mysql文件(如果文件不存在就创建它):

NO_INIT = true

使用systemd配置多个MySQL实例

介绍如何为MySQL的多个实例配置systemd。

请注意

因为systemd能够在安装了systemd支持的平台上管理多个MySQL实例,mysqld_multi而且mysqld_multi.server不需要且未安装。

若要使用多实例功能,请修改my.cnf选项文件,包括每个实例的关键选项的配置。以下是典型的文件位置:

  • /etc/my.cnf/etc/mysql/my.cnf(RPM平台)

  • /etc/mysql/mysql.conf.d / mysqld.cnf(Debian平台)

例如,要管理两个命名为replica01而且replica02,在选项文件中添加如下内容:

RPM平台:

[mysqld@replica01] datadir=/var/lib/mysql-replica01 socket=/var/lib/mysql-replica01/mysql. datadir=/var/lib/mysql-replica01。Sock port=3307 log-error=/var/log/mysql -replica01.log [mysqld@replica02] datadir=/var/lib/mysql-replica02 socket=/var/lib/mysql-replica02/mysql. Sock port=3307 log-error=/var/log/mysql -replica01.log [mysqld@replica02] datadir=/var/lib/mysql-replica02 .logSock port=3308 log-error=/var/log/mysqld-replica02.log

Debian平台:

[mysqld@replica01] datadir=/var/lib/mysql-replica01 socket=/var/lib/mysql-replica01/mysql. datadir=/var/lib/mysql-replica01。Sock port=3307 log-error=/var/log/mysql/replica01.log [mysqld@replica02] datadir=/var/lib/mysql-replica02 socket=/var/lib/mysql-replica02/mysql. log [mysqld@replica02] datadir=/var/lib/mysql-replica02 .log [mysqld@replica02]Sock port=3308 log-error=/var/log/mysql/replica02.log

这里显示的副本名称使用@作为分隔符,因为这是systemd支持的唯一分隔符。

实例然后由普通的systemd命令管理,例如:

Systemctl start mysqld@replica01 Systemctl start mysqld@replica02

要使实例在引导时运行,请执行以下操作:

Systemctl enable mysqld@replica01 Systemctl enable mysqld@replica02

还支持使用通配符。例如,该命令显示所有副本实例的状态:

Systemctl状态为“mysqld@replica*”

为了管理同一机器上的多个MySQL实例,systemd自动使用不同的单元文件:

  • mysqld@.service而不是mysqld.service(RPM平台)

  • mysql@.service而不是mysql.service(Debian平台)

在单元文件中,%我而且%我参数之后传入的参数@标记和用于管理特定实例。对于这样的命令:

Systemctl start mysqld@replica01

Systemd使用如下命令启动服务器:

mysqld——defaults-group-suffix=@%I…

结果是(服务器),(mysqld),(mysqld@replica01)选项组被读取并用于该服务的实例。

请注意

在Debian平台上,AppArmor阻止服务器读或写/var/lib/mysql-replica *,或者默认位置以外的任何位置。中的配置文件必须自定义或禁用该配置文件/etc/apparmor.d/usr.sbin.mysqld

请注意

在Debian平台上,MySQL卸载的打包脚本目前无法处理mysqld@实例。在删除或升级包之前,必须先手动停止任何额外的实例。

从mysqld_safe迁移到systemd

因为mysqld_safe没有安装在使用systemd管理MySQL的平台上,选项之前为该程序指定(例如,在(mysqld_safe)(safe_mysqld)选项组)必须以另一种方式指定:

  • 一些mysqld_safe期权也是由mysqld并且可以从(mysqld_safe)(safe_mysqld)选项组到(mysqld)组。这并包括——pid文件,——open-files-limit,或——好.要指定这些选项,请使用override.confSystemd文件,前面描述过。

    请注意

    在系统平台上,使用(mysqld_safe)而且(safe_mysqld)选项组不受支持,可能导致意外行为。

  • 对于一些mysqld_safe选择,有选择mysqld程序。例如,mysqld_safe启用选项syslog日志记录是——syslog,不推荐使用。要将错误日志输出写入系统日志,请使用

    mysqld_safe不理解的选项mysqld可在override.conf或者环境变量。例如,mysqld_safe,如果服务器应该使用特定的内存分配库,则使用——malloc-lib选择。对于使用systemd管理服务器的安装,请安排设置LD_PRELOAD而是环境变量,如前所述。