Systemd管理下的MySQL Server

来源:这里教程网 时间:2026-03-01 11:13:26 作者:

https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

 

mysql 5.7 官网的 rpm 包,编译时指定了 -DWITH_SYSTEMD=bool 参数,启用 systemd 管理,并且不会安装 mysqld_safe System V 初始化的脚本 -DWITH_SYSTEMD=1

如果还想使用mysqld _safe 两种方法:

1.下载源码包编译;

  select version : 5.7.23

   select operating system: Source Code

   select OS Version: Gerneric Linux (Architecture Independent)

   mysql-boost-5.7.23.tar.gz

2.下载tar文件或压缩后的tar文件(安装后的文件,解压后可直接启动)

  select version : 5.7.23

   select operating system: Red Hat Enterprise Linux / Oracle Linux

   select OS Version: Red Hat Enterprise Linux 7/ Oracle Linux 7(x86,64-bit)

   mysql-5.7.23-el7-x86_64.tar.gz  / mysql-5.7.23-el7-x86_64.tar

 

概览 systemd

systemctl {start|stop|restart|status} mysqld

兼容的 System V 的指令如下

service mysqld {start|stop|restart|status}

# 设置 mysql 开机自启动

systemctl enable mysqld

 

 

配置systemd for mysql

增加或改变systemd for mysqld的选项,方法如下:

使用局部 (localized) 的systemd配置文件

为MySQL server 进程,设定systemd 环境变量

设定MYSQLD_OPTS systemd 变量

1) 使用局部systemd配置文件     建立目录: /etc/systemd/system/mysqld.service.d  

    在目录里建立一个包含 [Service] 的文件, override.conf    

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

   新版本的systemd支持如下命令编辑

systemctl edit mysqld

   编辑完后,别忘重新加载systemd配置,并重启mysqld服务

systemctl daemon-reload

systemctl restart mysqld

    在systemd中,必须使用 override.conf 配置文件来获取参数,而不是以前mysql option file /etc/my.cnf )中 [mysqld] [mysqld_safe] 选项。它不会去读这两个选项

   For additional information about using systemd rather than  mysqld_safe , see  Migrating from mysqld_safe to systemd .

 

   可以通过 override.conf 可以设定如下参数:

1. PIDFILE 指定pid文件

2. LimitNO FILE , 设定mysql server 文件描述符的有效数量,而不是 mysqld_safe --open-files-limit  

3. LimitCore , 设定最大内核文件大小, 而不是 mysqld_safe   --core-file-size

4. Nice , 设定 mysql server 排程的优先级,而不是 --nice  option for  mysqld_saf E

5. LD _PRELOAD,  指定 mysql server 内存分配库 Environment="LD_PRELOAD=/path/to/malloc/library"

6.TZ ,设定缺省的时区 Environment="TZ=time_zone_setting"

多种方法指定mysql server 的环境变量,在systemd管理下。        1. override.conf 配置文件,使用 Environment 行指定,如: Environment="TZ= xx "

         2. /etc/sysconfig/mysql 中指定变量值

      LD_PRELOAD = /path/to/malloc/library

      TZ = time_zone_setting

           修改过后记得重启mysql

     systemctl restart mysqld

3.set / unset systemd变量: MYSQLD_OPTS                  systemctl set-environment MYSQLD_OPTS= "--general_log=1"

                 systemctl unset-environment MYSQLD_OPTS

              MYSQLD_OPTS 也可以被设定在 / etc/sysconfig/mysql 文件中

           修改过后记得重启mysql

     systemctl restart mysqld

注意:在systemd的平台上,空的数据目录,将在mysql server启动时,自动初始化数据。

NO_INIT = true

/etc/ sysconfig/mysql 中指定 NO_INIT=true 来控制不要自动初始化数据库。

 

在systemd环境下配置多实例MySQL

rpm平台: /etc/ my.cnf

如两个实例: replica01  and  replica02 ,配置文件如下:

[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

 

管理方法如下:

systemctl start mysqld@replica01

systemctl start mysqld@replica02

 

设置开机启动

systemctl enable mysqld@replica01

systemctl enable mysqld@replica02

 

支持通配符

systemctl status 'mysqld@replica*'

 

systemd的单元文件 unit file也是不同的

mysqld @ .service  rather than  mysqld.service

如果想在 /etc/ my.cnf.d 中分别配置每个实例,需要在 /etc/my.cnf 中增加

!includedir /etc/my.cnf.d 把my .cnf.d 的文件引入。

相关推荐