使用systemctl启动和停止MySQL服务 原创 数据库 2020年12月30日 18:09 夏至未至 1677 当前内容 4633 字,在路上,马上到,马上到 ### 目录 [TOC] ### 关于工具 systemctl 只是 Linux 一个系统服务管理工具,它可以管理所有使用它配置文件的进程服务,比如管理`mysql` `ssh` [root@localhost node1]# /usr/bin/systemctl --version systemd 219 +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN [root@localhost node1]# ### 使用工具 以下,我们就以mysql进程为例,使用 systemctl 来管理 mysql 实例服务的启停 #### 默认使用 对于 mysql 实例的启动和停止,在数据库安装完成后,就使用其默认的启停方式: systemctl start mysqld.service systemctl stop mysqld.service 而默认的启动方式,对应这一个默认的 systemctl 配置文件: mysqld.service,systemctl 通过读取配置文件中参数,执行参数中定义的 shell 语句,完成服务的启停 #### 修改使用 ##### 为何修改 当我们再新建一个实例后,新建的实例,无法再使用以上命令启动新实例,因为命令中 mysqld.service 这个配置中,放的都是 默认实例服务的启停参数,并非新实例的启停参数,故需要修改。如果默认实例也不支持 systemctl 方式启动,那我们也可以新建配置,让其支持 systemctl 启停 [root@localhost node1]# systemctl status mysqld.service Unit mysqld.service could not be found. [root@localhost node1]# 以上情况,就需要新建配置 ##### 如何修改 生成或者修改 systemctl 识别的配置文件,配置文件可以存在以下三个地方 1. /etc/systemd/system/ 2. /usr/lib/systemd/system 3. /lib/systemd/system 在以上位置查找配置来修改,或者新建配置,配置文件名,即未来启动命令最后的参数,由此可得,**多实例,就建多个配置即可** vi /usr/lib/systemd/system/配置文件名.service systemctl start 配置文件名.service 以下以新建为例,在如下路径新建配置文件 mysqld.service vi /usr/lib/systemd/system/mysqld.service 这里使用最简单配置: [Unit] Description=MySQL Community Server After=network.target After=syslog.target [Service] # 配置文件中涉及路劲,一律使用绝对路径 # 启动命令(shell中如何启动mysql进程,这里就怎么写) ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql # 停止命令(在shell中怎么停服务,这里就怎么配置) ExecStop=/usr/local/mysql/bin/mysqladmin -uroot -p123456 shutdown [Install] WantedBy=multi-user.target 重新加载一下配置文件 [root@localhost node1]# systemctl daemon-reload [root@localhost node1]# 使用systemctl启动 [root@localhost node1]# systemctl start mysqld.service [root@localhost node1]# 查进程或者服务状态 进程已启 [root@localhost node1]# ps -ef | grep mysql root 30536 1 2 13:20 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql mysql 30907 30536 19 13:20 ? 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/data/mysql/mysql.err --pid-file=/data/mysql/mysql.pid --socket=/tmp/mysql.sock --port=3306 root 30937 2115 0 13:20 pts/0 00:00:00 grep --color=auto mysql [root@localhost node1]# 状态正常 [root@localhost node1]# systemctl status mysqld.service ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled) Active: active (running) since 二 2019-10-30 13:20:41 CST; 3h 15min ago Main PID: 30536 (mysqld_safe) Tasks: 28 CGroup: /system.slice/mysqld.service ├─30536 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql └─30907 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --log-e... 10月 30 13:20:41 localhost.localdomain systemd[1]: Started MySQL Community Server. 10月 30 13:20:41 localhost.localdomain systemd[1]: Starting MySQL Community Server... 10月 30 13:20:42 localhost.localdomain mysqld_safe[30536]: 2019-10-30T05:20:42.084902Z mysqld_safe Logging to '/data/mysql/mysql.err'. 10月 30 13:20:42 localhost.localdomain mysqld_safe[30536]: 2019-10-30T05:20:42.168246Z mysqld_safe Starting mysqld daemon with databases from /data/mysql [root@localhost node1]# #### 配置详解 - [Unit] 主要为注释,说明服务启动顺序、依赖、作用等 - [Service] 启动行为,核心部分,指定服务开启,关闭,重启分别使用的SHELL命令,服务一些环境变量配置文件 - [Install] 指定运行级别,如何安装这个配置文件,即怎样做到开机启动 其下详细配置: [Unit] Description: 配置文件的描述信息。 Documentation: 配置文件帮助信息。 After: 表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动当前服务 [Service] Type: 定义启动类型。 PIDFile: 服务的pid文件路径。 EnvironmentFile:指定当前服务依赖的环境参数文件。 ExecStart: 定义启动进程时执行的shell命令。 ExecReload: 重启服务时执行的shell命令 KillMode: 定义 Systemd 如何停止服务。建议使用 ExecStop 代替 Restart: 定义服务重启 shell 命令。 RestartSec: 表示Systemd重启服务之前,需要等待的秒数。 StandardOutput 表示将日志输出到哪里 可以输出到空(null),也可以输出到文件 /usr/local/mysql/mysql.log [Install] WantedBy: 表示该服务所在的 Target。multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。 更详细配置,请自行搜索,这里暂就罗列至此。以上只是以mysql进程为例,其他进程启动,亦可效仿。 本文标题: 使用systemctl启动和停止MySQL服务 本文作者: 夏至未至 发布时间: 2020年12月30日 18:09 最近更新: 2021年12月31日 00:54 原文链接: 许可协议: 署名-非商业性-禁止演绎 4.0 国际(CC BY-NC-ND 4.0) 请按协议转载并保留原文链接及作者 MySQL(28) Linux(24) systemctl(1) 上一个 C++设计模式-工厂方法模式 下一个 FastDFS中storage服务启动失败 当前文章评论暂未开放,请移步至留言处留言。