2.5.9 使用 systemd 管理 MySQL 服务器实例

news2024/11/26 1:54:29

2.5.9 使用 systemd 管理 MySQL 服务器实例

  • systemd 概述
  • 为 MySQL 配置 systemd
  • 使用 systemd 配置多个 MySQL 实例
  • 从 mysqld_safe 迁移到 systemd

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

  • RPM 包平台
    • Enterprise Linux variants version 7 及更高版本
    • SUSE Linux Enterprise Server 12 及更高版本
    • Fedora 29 及更高版本
  • Debian 家族平台
    • Debian 平台
    • Ubuntu 平台

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

如果您在使用 systemd 的平台上从源发行版安装 MySQL ,请使用 -DWITH_systemd=1 CMake 选项配置该发行版,以获得对 MySQL 的 systemd 支持。请参阅 第 2.9.7 节“ MySQL 源配置选项” 。

注意
在安装了对 MySQL 的 systemd 支持的平台上, mysqld_safeSystem V 初始化脚本等脚本是不必要的,也不会安装。例如, mysqld_safe 可以处理服务器重新启动,但 systemd 提供了相同的功能,并以与其他服务的管理一致的方式执行,而不是使用特定于应用程序的程序。
在使用 systemd 进行服务器管理的平台上不使用 mysqld_safe 的一个含义是不支持在选项文件中使用[mysqld_safe]或[safe_mysqld]节,这可能会导致意外行为。
因为 systemd 能够在安装了 systemd 支持 MySQL 的平台上管理多个 MySQL 实例, mysqld_multimysqld_multi.server 是不必要的,并且未安装。

译者注
实际上当前 RPM 包安装的 MySQL 仍然会安装 mysqld_safe ,而的确不会安装 mysqld_multi 了。
在这里插入图片描述

systemd 概述

systemd 提供 MySQL 服务器的自动启动和关闭功能。它还支持使用 systemctl 命令进行手动服务器管理。例如:

$> systemctl {start|stop|restart|status} mysqld

或者,使用与 System V 系统兼容的 service 命令(参数颠倒):

$> service mysqld {start|stop|restart|status}

注意
对于 systemctl 命令(以及可替代的 service 命令),如果 MySQL 服务名称不是 mysqld ,则使用适当的名称。例如,在基于 Debian 和 SLES 的系统上使用 mysql 而不是 mysqld

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

  • mysqld.service ( RPM 平台)、 mysql.service ( Debian 平台): systemd 服务单元配置文件,以及 mysql 服务的详细信息。
  • mysqld@.service ( RPM 平台), mysql@.service ( Debian 平台):类似 mysqld.service 或 mysql.service ,但用于管理多个 mysql 实例。
  • mysqld.tmpfiles.d :包含支持 tmpfiles 功能的信息的文件。此文件以名称 mysql.conf 安装。
  • mysqld_pre_systemd ( RPM 平台)、 mysql-system start ( Debian 平台):单元文件的支持脚本。只有当日志位置与模式匹配时,该脚本才会帮助创建错误日志文件( RPM 平台为 /var/log/mysql*.log , Debian 平台为 /var/log/mysql/*.log )。在其他情况下,错误日志目录必须是可写的,或者对于运行 mysqld 进程的用户,错误日志必须存在且可写。

为 MySQL 配置 systemd

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

  • 使用本地化的 systemd 配置文件。
  • 安排 systemd 为 MySQL 服务器进程设置环境变量。
  • 设置 MYSQLD_OPTS systemd 变量。

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

[Service]
LimitNOFILE=max_open_files
Nice=nice_level
LimitCore=core_file_limit
Environment="LD_PRELOAD=/path/to/malloc/library"
Environment="TZ=time_zone_setting"

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

systemctl edit mysqld  # RPM platforms
systemctl edit mysql   # Debian platforms

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

systemctl daemon-reload
systemctl restart mysqld  # RPM platforms
systemctl restart mysql   # Debian platforms

对于 systemd ,override.conf 配置方法必须用于某些参数,而不是 MySQL 选项文件中 [mysqld][mysqld_safe][safe_mysqld] 组中的设置:

  • 对于某些参数,必须使用 override.conf ,因为 systemd 本身必须知道它们的值,并且无法读取 MySQL 选项文件来获取它们。
  • 指定只能使用 mysqld_safe 已知选项设置的值的参数必须使用 systemd 指定,因为没有相应的 mysqld 参数。

您可以在 override.conf 中设置以下参数:

  • 要设置 MySQL 服务器可用的文件描述符数量,请在 override.conf 中使用 LimitNOFILE 而不是 mysqldopen_files_limit 系统变量或 mysqld_safe--open-files-limit 选项。
  • 要设置最大核心文件大小,请在 override.conf 中使用 LimitCore 而不是 mysqld_safe--core-file-size 选项。
  • 要设置 MySQL 服务器的调度优先级,请在 override.conf 中使用 Nice 而不是 mysqld_safe--nice 选项。

一些 MySQL 参数是使用环境变量配置的:

  • LD_PRELOAD :如果 MySQL 服务器应该使用特定的内存分配库,则设置此变量。
  • NOTIFY_SOCKET :此环境变量指定 mysqld 用于与 systemd 通信启动完成和服务状态更改通知的套接字。它是在 mysqld 服务启动时由 systemd 设置的。 mysqld 服务读取变量设置并写入定义的位置。
    在 MySQL 8.0 中,mysqld 使用 Type=notify 进程启动类型。( 在 MySQL 5.7 中使用 Type=forking 。)使用 Type=notify , systemd 自动配置套接字文件并将路径导出到 NOTIFY_SOCKET 环境变量。
  • TZ :设置此变量以指定服务器的默认时区。

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

  • override.conf 中使用 Environment 行。有关语法,请参阅前面讨论中描述如何使用此文件的示例。
  • /etc/sysconfig/mysql 文件中指定值(如果文件不存在,请创建该文件)。使用以下语法分配值:
LD_PRELOAD=/path/to/malloc/library
TZ=time_zone_setting

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

systemctl restart mysqld  # RPM platforms
systemctl restart mysql   # Debian platforms

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

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

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

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

systemctl restart mysqld  # RPM platforms
systemctl restart mysql   # Debian platforms

对于使用 systemd 的平台,如果在服务器启动时数据目录为空,则会对其进行初始化。如果数据目录是暂时消失的远程挂载,这可能是一个问题:挂载点看起来是一个空的数据目录,然后将其初始化为新的数据目录。要抑制这种自动初始化行为,请在 /etc/sysconfig/mysql 文件中指定以下行(如果文件不存在,请创建该文件):

NO_INIT=true

使用 systemd 配置多个 MySQL 实例

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

注意
因为 systemd 能够在安装了 systemd 支持的平台上管理多个 MySQL 实例, mysqld_multimysqld_multi.server 是不必要的,并且未安装。

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

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

例如,要管理名为 replica01replica02 的两个实例,请在选项文件中添加如下内容:
RPM平台:

[mysqld@replica01]
datadir=/var/lib/mysql-replica01
socket=/var/lib/mysql-replica01/mysql.sock
port=3307
log-error=/var/log/mysqld-replica01.log

[mysqld@replica02]
datadir=/var/lib/mysql-replica02
socket=/var/lib/mysql-replica02/mysql.sock
port=3308
log-error=/var/log/mysqld-replica02.log

Debian 平台:

[mysqld@replica01]
datadir=/var/lib/mysql-replica01
socket=/var/lib/mysql-replica01/mysql.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=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 status 'mysqld@replica*'

在同一台服务器上管理多个 MySQL 服务器实例,systemd 自动使用不同的单元文件:

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

在单元文件中,%I%I 引用 @ 标记后传入的参数,并用于管理特定实例。

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

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

结果是 [server][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 也可以理解一些 mysqld_safe 选项,可以从 [mysqld_safe][safe_mysqld] 选项组移到 [mysqld] 组。这不包括 --pid-file--open-files-limit,或 --nice 。要指定这些选项,请使用override.conf systemd 文件,如前所述。

    注意
    在 systemd 平台上,不支持使用 [mysqld_safe][safe_mysqld] 选项组,这可能会导致意外行为。

  • 对于一些 mysqld_safe 选项,有其他 mysqld 过程。例如,用于启用 syslog 日志记录的 mysqld_safe 选项是 --syslog,该选项已被弃用。要将错误日志输出写入系统日志,请使用 第5.4.2.8节 “错误日志记录到系统日志中” 的说明。
  • mysqld 无法理解的 mysqld_safe 选项可以在 override.conf 或环境变量中指定。例如,对于 mysqld_safe ,如果服务器应该使用特定的内存分配库,则使用 --malloc-lib 选项指定。对于使用 systemd 管理服务器的安装,请改为设置 LD_PRELOAD 环境变量,如前所述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时间序列-预测-模型-2020:Informer【比Transformer更有效的长时间序列预测】【在对性能影响不大的前提下降低复杂度】

摘要 时序预测这个领域的工作与很多其他领域类似,我们可以按“深度学习”方法的引入作为分界线。在此之前的方法是传统的时序建模方法,比如移动平均、自回归、以及结合差分的ARIMA模型等,有着悠久的历史以及基于理论基础的可解释性。但是,这类方法一般要求时间序列是平稳的…

视频转文字怎么弄?建议收藏这些方法

小伙伴们在闲暇之余,会不会通过一些网课的学习,来提高自己呢?有时我们网课学习来不及做笔记,但是重复观看又比较麻烦,这时我们就可以通过将视频转换成文字,这样就能够清楚明了的知道视频的讲解内容了。那你…

springcloud整合Hystrix

作用 1、服务降级 触发情况:程序运行异常、超时、服务熔断触发服务降级、线程池/信号量打满也会触发服务降级 2、服务熔断 直接拒绝访问,即使有正确的访问也会短路 3、服务限流 排队有序进行 构建服务 1、建module provider-hystrix-payment8001 2、改…

mac 好用的ps修图软件 Pixelmator Pro

Pixelmator Pro Pixelmator Pro 是一款任何人都可以使用的专业图像编辑工具。Pixelmator Pro旨在使每个人都可以使用最强大的专业图像编辑工具。拥有大量用于编辑和修饰照片,创建图形设计,绘画,绘制矢量图形以及添加令人惊叹的效果的工具&…

sdl 渲染旋转视频的方法

文章目录前言一、如何实现?1、计算边框大小2、计算缩放大小3、逆运算视频宽高二、完整代码三、使用示例总结前言 一般情况下播放视频时不需要旋转,但是如果是移动端录制的视频有时会出现rotate参数,且视频宽高也是互换的,如果直接…

为什么使用MQ?RabbitMQ概念

个人博客地址: http://xiaohe-blog.top/ 文章目录1. MQ基本概念1.1 MQ简述1.2 MQ的优势1.3 MQ的劣势2. RabbitMQ基本概念2.1 RabbitMQ特点2.2 AMQP协议1. MQ基本概念 1.1 MQ简述 MQ 全称 :Message Queue(消息队列),是…

音效、配乐素材网站,免费商用

视频剪辑没素材?找不到热门音效?找不到好听的配乐? 有了这几个网站,承包你的所有音效、配乐,重点是免费!!!1、菜鸟图库 https://www.sucai999.com/audio.html?vNTYwNDUx菜鸟图库网&…

【猿如意】如何在mac上搭建QT环境

作为一个代码菜鸡,平时主要用windows或者linux进行开发,但是家里有一个mac,平时要搭环境要找半天就很费劲。今天终于发现一个好用的平台,常用的开发工具都有惹。真香! 什么是猿如意? 猿如意是一款面向开发…

[附源码]Nodejs计算机毕业设计基于的餐厅管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

如何注册网站?网站注册费用多少?

很多企业或者公司都会考虑注册自己的网站,那么如何注册网站呢?网站注册费用多少呢?具体来说注册网站是包含注册域名和制作网站,下面一同为大家解答如何注册网站。 一、注册域名 一个网站是必须要有域名才能访问,注册可…

一个 MySQL 隐式转换的坑,差点把服务器整崩溃了

本来是一个平静而美好的下午,其他部门的同事要一份数据报表临时汇报使用,因为系统目前没有这个维度的功能,所以需要写个SQL马上出一下,一个同事接到这个任务,于是开始在测试环境拼装这条 SQL,刚过了几分钟&…

职场社交app开发,迎合市场发展需求

互联网时代的到来,让人们在网络上花费的时间越来越多,依赖性也越来越大,我们的生活发生了很大的变化。一个人从出生开始就要面对这个复杂的社会,需要和各种各样的人去交流相处,当我们进入职场之后社交更是变成一种刚需…

【电巢】最新进展 深圳13家国企和民企入局,打造全球电子元器件集散中心

前 言 日前,电子元器件和集成电路国际交易中心创立大会在深圳召开。电巢获悉,该交易中心将于12月底正式揭牌,近期启动试运行,并在试运行期间开启线上交易。 根据此前国家发改委、商务部发布的《关于深圳建设中国特色社会主义先…

[附源码]Python计算机毕业设计高校请假管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【案例实践】WRF-Python融合技术:WRF 模式前后处理、自动化运行、数据处理、可视化绘图

【查看原文】Python在WRF模型自动化运行及前后处理中实践技术应用 当今从事气象及其周边相关领域的人员,常会涉及气象数值模式及其数据处理,无论是作为业务预报的手段、还是作为科研工具,掌握气象数值模式与高效前后处理语言是一件非常重要的…

我填写“2022年国内软件质量调查问卷”的感想

文章目录感想起因关于软件质量的理解各行各业的质量问题数据质量问题各行各业的质量问题质量问题对我们的影响软件质量软件质量问题的影响有多大软件质量问题软件测试软件测试方法的目的包括:软件的基本测试方法:软件测试的各个阶段测试流程软件测试工程师总结感想起…

免费的进销存系统哪个好一些?

进销存是什么?如何才能选到满意的进销存管理系统? 进销存即购销链条,一般分为“进”“销”“存”“财”四个模块的工作,涉及采购部、物资部、生产部、市场部、销售部、财务部等多部门的协同。通过进销存管理信息化,能…

PDF可以设置哪些编辑限制?

PDF文件可以进行加密,大家都知道,并且加密分为打开密码和编辑限制密码两种。 打开密码,大家都知道是在打开PDF文件的时候需要输入的密码。但是对于编辑限制的认识还不是很清晰。今天和大家一起看一下,PDF编辑限制都可以设置哪些编…

DSP篇--C6701功能调试系列之CAN总线测试

调试的前期准备可以参考前面的博文:DSP篇--C6701功能调试系列之前期准备_nanke_yh的博客-CSDN博客 CAN总线的工作模式有两种:BasicCAN模式和PeliCAN模式。同时,其处理方式又分为:直连和托管两种。 目的:测试CAN总线的…

SQL语句练习04

目录 一、见表并插入数据 二、查询语句的练习 一、见表并插入数据 一、建立如下故事表(命名格式“姓名拼音_三位学号 _story”,如LBJ_023_story),并插入数据 、create table LYL_116_story(sid varchar(7),sname varchar(12), snation var…