CentOs7改造mysql服务

原创 2017年08月17日 10:18:09

背景

CentOS7版本下的service命令都被重定向到systemctl这个命令了,PerconaMySQL安装完成后,会自动添加开机启动服务,而它的服务脚本文件为mysql.service,如果需要对该服务脚本进行改造,该怎么办呢?

问题

搜索MySQL的开机启动服务脚本文件,得到结果如下:

find / -name mysql.service
/etc/systemd/system/mysql.service

我希望修改该文件,于是进入目录,准备下载到本机,但是每次都下载失败,仔细观察发现它的文件名称前面有一个回形针图标,说明它是一个软链接。

分析

mysql.service,它真正的文件路径为/usr/lib/systemd/system/mysqld.service,内容如下:

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=mysql.service

[Service]
User=mysql
Group=mysql

Type=forking

PIDFile=/var/run/mysqld/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Needed to create system tables
ExecStartPre=/usr/bin/mysqld_pre_systemd

# Start main service
ExecStart=/usr/bin/numactl --cpubind=0 --membind=0 /usr/sbin/mysqld --daemonize --pid-file=
/var/run/mysqld/mysqld.pid $MYSQLD_OPTS

# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false

这是systemd统一的service配置文件,install标签的Alias=mysql.service说明了我们常用的service mysql 就是这个服务,它真正的服务名称是mysqld,这就可以解释为什么有些MySQL的服务名称为mysqld了。

我们编辑/etc/systemd/system/mysql.service文件,修改ExecStart配置,添加内核绑定逻辑:

ExecStart=/usr/bin/numactl –cpubind=0 –membind=0 /usr/sbin/mysqld
–daemonize –pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS

由于这里是配置,而不是直接执行的命令,所以命令名称都需要全路经,不能直接用numactl命令,否则会报错导致启动失败。这个链接文件修改之后,它真正的文件mysqld.service也自动修改了。

启示录

顺便看了一下systemd的知识,知道了它的目录为/usr/lib/systemd/system,其下有大量以service为后缀的文件,就是所有的开机启动服务文件。内容都有相同的模版,大概就明白了mysql的开机启动服务是怎么回事儿了。

其次,修改开机启动服务文件后,需要执行reload命令,才能生效。

systemctl daemon-reload
service mysql restart

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

centos7 mysql 启动mysqld.service - SYSV: MySQL database server错误

centos7 mysql 启动mysqld.service - SYSV: MySQL database server错误 Process: 2550 ExecStart=/etc/rc.d/ini...

CentOS 7之Systemd详解之服务单元设置system.service

名称 systemd.service - 服务单元配置 概要 service.service 描述 以 .service 结尾的单元文件,用于封装一个被 systemd 监...

mysql 在 centos 上安装,做成服务,且开机启动 步骤

mysql  在 centos 上安装,做成服务,且开机启动 步骤

Centos7.2 Systemd 方式编译 Mysql5.7.11

导读 MySQL 5.7 版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复。 MySQL 5.7主要特性: 原生支持Syste...

centos7关闭系统自启动MySQL

systemctl list-unit-files执行此命令能查看当前系统的服务启动和服务状态。 pagedown翻页直到找到结果显示如下:... microcode.service ...

centos 7.0 怎么启动mysql

centos7自带是mariadb,一个mysql的变种。 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 安装my...

CentOS-7 下 systemctl 管理 mysql-5.7的不同,配置jemalloc

mysql-5.7 的 mysqld_safe去哪了? 在CentOS-7下全面使用systemctl管理服务,包括mysqld,使用ps命令时见不到mysqld_safe。 并且安装完mysql-5...

centos7安装mysql

centos7安装mysql(yum)

Centos7下的systemctl命令与service和chkconfig

博主使用的操作系统是最新的CentOS 7,所以可能和网上一些老的博文有一定出入,那是因为版本更新的原因。1 serviceservice命令用于对系统服务进行管理,比如启动(start)、停止(st...

CentOS7下安装MySql5.6.26

最近新换了工作,新的公司项目中服务器用的是Linux,虽然以前有自学过,但是都没有用到正式的环境中,为了能更快的融入新项目、新环境,就利用空闲时间自己鼓捣公司里面的东西,首先就从最基本的如何安装数据库...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CentOs7改造mysql服务
举报原因:
原因补充:

(最多只允许输入30个字)