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 的文件引入。
