1
1、方法1
[root@db01 ~]# cp /data/app/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@db01 ~]# chkconfig --add mysqld # 会从init.d文件夹中寻找mysqld文件
[root@db01 ~]# systemctl start mysqld # 注意关闭之前启动的数据库
2、方法2
[root@db01 ~]# cd /usr/lib/systemd/system
[root@db01 system]# vim mysql.service
[Unit]
Description=MySQL Server
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Service]
User=mysql
Group=mysql
ExecStart=/mysql/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
PIDFile=/mysql/data/mysqld.pid
Restart=on-failure
RestartPreventExitStatus=1
TimeoutSec=0
PrivateTmp=false
LimitNOFILE=65535
LimitNPROC=65535
[Install]
WantedBy=multi-user.target
[root@db01 system]# systemctl daemon-reload
[root@db01 system]# systemctl start mysql
我们来解读一下以上配置的mysql.service。建议阅读:Systemd 入门教程:实战篇 来全面了解一下配置文件的含义。
# 表示如果network.target或syslog.target需要启动,那么mysql服务应该在它们之后启动
After=network.target
After=syslog.target
# 定义运行用户和组
User=mysql
Group=mysql
# Type定义的是启动的类型。
# forking表示 ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
Type=forking
# 程序pid文件存放位置
PIDFile=/mysql/data/mysqld.pid
# 定义启动进程时执行的命令
ExecStart=/mysql/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
# Restart定义了此服务退出后Systemd的重启方式。
# on-failure表示非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启。如正常退出停止(即systemctl stop)就不会重启。
Restart=on-failure
# 此配置定义了当符合某些退出状态(用exit code表示)时不要进行重启,1表示该程序被挂起。
RestartPreventExitStatus=1
# 此配置同时定义了TimeoutStartSec 和 TimeoutStopSec的值
• TimeoutStartSec: 配置等待启动的时间。如果守护程序服务未在配置的时间内指示启动完成,则该服务将被视为失败,并将再次关闭。默认以秒为单位,或者 “5min 20s” 之类的时间跨度值。0表示禁用
• TimeoutStopSec: 此选项有两个目的。首先,它配置等待每个ExecStop的时间。如果其中任何一个超时,则后续的ExecStop将被跳过,服务将被SIGTERM终止。如果未指定ExecStop,则该服务将立即获取SIGTERM。其次,它配置等待服务本身停止的时间。如果未在指定时间内终止,它将被SIGKILL强制终止。默认以秒为单位,或者 “5min 20s” 之类的时间跨度值。0表示禁用
TimeoutSec=0
# 是否使用私有的tmp目录,即产生的临时文件(如我们在my.cnf文件中配置的 "socket=/tmp/mysql.sock" )是否直接存放到/tmp 目录下
# 如果为true,临时文件一般会保存到systemd-private-XXX-mysql.service-XXX/tmp/下。
PrivateTmp=false
# 最大打开文件描述符和进程数量
LimitNOFILE=65535
LimitNPROC=65535
# 此配置和服务开机自启相关,表示该服务所在的Target。multi-user.target表示运行级别,为运行级别3,完全的多用户。
# 即当执行 "systemctl enable mysql"时, 会创建一个mysql.service的软链接到/etc/systemd/system/multi-user.target.wants目录下,此目录下服务都会开机自启。
WantedBy=multi-user.target
1