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

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

linux中apache和mysqld加入service系统服务中

mysql:  代码如下 复制代码 cd /usr/local/mysql/share/mysql cp mysql.server /etc/init....
  • detiantian
  • detiantian
  • 2016年08月12日 00:21
  • 1240

service: no such service mysqld 与MySQL的开启,关闭和重启

1.问题原因与解决办法因为修改了MySQL临时文件的目录后,使用service mysqld restart重启MySQL出现如下错误:service: no such service mysqld错...
  • K346K346
  • K346K346
  • 2016年07月05日 16:14
  • 5364

The service already exists!-mysql安装服务

The vervice already exists! The current server installed:以前安装mysql的地址/bin/mysqld-nt MYSQL解决办法 移除原...
  • liu_005
  • liu_005
  • 2016年12月11日 09:30
  • 7901

安装MySQL 5后无法启动(不能Start service)解决方法小结

有时候我们在安装mysql软件时,却无法启动,或服务器安全设置以后都可能导致mysql无法运行 安装的 MySQL 5.1.48 或是 MySQL 5.5.8,配置好最后点击 Execute 按钮了...
  • qq1175421841
  • qq1175421841
  • 2016年03月04日 22:12
  • 321

在CentOS7上安装MySQL的辛路历程

今天突然心血来潮,想把博客转移到到自己的云服务器上,嗯,想法不错,正好能练练手(后来找到了别的解决方案Hexo,才发现自己有多幼稚,果然是脑子一热,啥事想得出来,但是在这个过程中也学到了一些东西)。C...
  • Holmofy
  • Holmofy
  • 2017年04月05日 22:23
  • 11388

centos7配置以及安装mysql5.7

虚拟机使用以及安装mysql的以下步骤和心得
  • curiouslearnerdhh
  • curiouslearnerdhh
  • 2017年03月17日 17:34
  • 761

CentOS 7 安装 MySQL

CentOS 7 下安装MySql卸载mariadbyum remove mariadb为啥要卸载mariadb,这个自行百度一下 安装MySql 源http://dev.mysql.com/down...
  • hu8hong9
  • hu8hong9
  • 2016年11月02日 10:51
  • 1400

MySQL启动错误:Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)

这个错误的原因可能是下面
  • iefreer
  • iefreer
  • 2014年08月06日 15:38
  • 9717

linux安装mysql提示mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

输入命令后报错: [root@dev1 mysql]# bin/mysqld_safe --user=mysql & [1] 15325 [root@dev1 mysql]# 091217 22...
  • LY_Feng
  • LY_Feng
  • 2012年08月28日 19:38
  • 46996

Centos7 上安装mysql遇上的问题:mysql无法正常启动

安装mysql-server报错没有可用包。 systemctl start mysqld没反应 [ERROR] Can't open the mysql.plugin table. Please ...
  • qq_32815807
  • qq_32815807
  • 2017年05月15日 18:23
  • 9056
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CentOs7改造mysql服务
举报原因:
原因补充:

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