一、使用服务管理脚本/etc/init.d/mysqld
mysql.server 服务脚本主要用于管理单实例,该脚本一般位于support-files下。使用只需拷贝该脚本到/etc/init.d,示例:
cp -rf $basedir/support-files/mysql.server
/etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 2345 mysqld on
/etc/init.d/mysqld start (service mysqld start)
/etc/init.d/mysqld stop (service mysqld stop)
该脚本无法管理多实例,管理多实例要用到mysqld_multi.server服务脚本了
二、使用服务管理脚本mysqld_multi.server
mysqld_multi.server
是官方提供的管理多实例的服务脚本,该脚本一般也位于support-files下。使用示例:
vi /etc/my.cnf
[mysqld_multi]
mysqld=/usr/local/mysql8/bin/mysqld_safe
log=/var/log/mysqld_multi.log
[mysqld1]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/3306/data
socket=/data/mysql/3306/data/mysql.sock
log-error=/data/mysql/3306/data/mysqld.err
pid-file=/data/mysql/3306/datamysqld.pid
mysqlx_port=33060
mysqlx_socket=/data/mysql/3306/data/mysqlx.sock
server-id=10011
log-bin=/data/mysql/3306/mysql-bin
...
[mysqld2]
port=3307
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/3307/data
socket=/data/mysql/3307/data/mysql.sock
log-error=/data/mysql/3307/data/mysqld.err
pid-file=/data/mysql/3307/datamysqld.pid
mysqlx_port=33070
mysqlx_socket=/data/mysql/3307/data/mysqlx.sock
server-id=10012
log-bin=/data/mysql/3307/mysql-bin
...
[mysql]
no-auto-rehash
show-warnings
prompt="\\u@\\h
: \\d \\r:\\m:\\s>"
...
--分别初始化
mysqld
--basedir=/usr/local/mysql --datadir=/data/mysql/3306/data
--defaults-file=/etc/my.cnf --user=mysql –initialize
mysqld
--basedir=/usr/local/mysql --datadir=/data/mysql/3307/data
--defaults-file=/etc/my.cnf --user=mysql –initialize
cp /usr/local/mysql/support-files/mysqld_multi.server
/etc/init.d/mysqld_multi
--同时启停
mysqld_multi start
mysqld_multi report
mysqld_multi stop
--单独启停
mysqld_multi
start 1
mysqld_multi report
mysqld_multi
start 2
mysqld_multi report
mysqld_multi stop 2
mysqld_multi report
mysqld_multi stop 1
mysqld_multi可以管理(不同版本)多实例,但有很多不足:不能设置开机自动启动;不能针对具体实例指定--defaults-file,多个实例的参数在一个配置文件中有管理难度及安全风险,且配置文件中所有参数都显示再命令行中。
三、使用System管理MySQL服务
使用System管理MySQL服务,比/etc/init.d/mysqld管理单实例高效快捷,又避免了mysqld_multi管理多实例的那些确定不足。大多数Linux发行版将systemd作为默认的初始化系统,如RHEL7包括衍生版本。有些Linux版本上通过rpm或Debian包安装的MySQL会默认使用systemd管理MySQL服务。
管理多实例示例:
----配置文件
vi /etc/my.cnf
[mysqld@1]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/3306/data
socket=/data/mysql/3306/data/mysql.sock
log-error=/data/mysql/3306/data/mysqld.err
pid-file=/data/mysql/3306/datamysqld.pid
mysqlx_port=33060
mysqlx_socket=/data/mysql/3306/data/mysqlx.sock
log_timestamps=system
[mysqld@2]
port=3307
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/3307/data
socket=/data/mysql/3307/data/mysql.sock
log-error=/data/mysql/3307/data/mysqld.err
pid-file=/data/mysql/3307/datamysqld.pid
mysqlx_port=33070
mysqlx_socket=/data/mysql/3307/data/mysqlx.sock
log_timestamps=system
---分别初始化
mysqld --defaults-file=/etc/my.cnf --defaults-group-suffix=@1 –initialize
mysqld --defaults-file=/etc/my.cnf --defaults-group-suffix=@2
--initialize
----创建systemd服务配置文件
vi /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
[Service]
User=mysql
Group=mysql
Type=notify
TimeoutSec=0
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
--defaults-group-suffix=@%I$MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE=65536
Restart=on-failure
RestartPreventExitStatus=1
Environment=MYSQLD_PARENT_PID=1
PrivateTMP=false
-----------------大致解释
[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 ---设置依赖关系,multi-user.target 相当于System V中的init 3,即多用户模式
[Service]
User=mysql
Group=mysql
Type=notify ---服务启动的类型。可设置为simple,exec,forking,oneshot,dbus,notify,idle。默认simple.
TimeoutSec=0 ---超时时长,包括TimeoutStartSec和TimeoutStopSec。为0关闭超时检测
ExecStart=/usr/local/mysql/bin/mysqld
--defaults-file=/etc/my.cnf --defaults-group-suffix=@%I$MYSQLD_OPTS ---服务的启动命令。单实例直接为ExecStart=/usr/local/mysql/bin/mysqld
--defaults-file=/etc/my.cnf $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql ---环境变量文件
LimitNOFILE=65536
Restart=on-failure ---什么情况需要重启服务进程。可设置no.always,on-success,on-failure,on-abnormal,on-abort,on-watchdog.
RestartPreventExitStatus=1 ---如果程序的返回码或接收的信号再RestartPreventExitStatus中定义了,即使满足了Restart中定义的条件。也不会触发程序重启
Environment=MYSQLD_PARENT_PID=1 ---设置环境变量。MYSQLD_PARENT_PID指定MYSQLD父进程的PID
PrivateTMP=false ---是否使用私有的TMP目录
----使用systemd管理服务
systemctl daemon-reload
systemctl start mysqld@1
systemctl status mysqld@1
systemctl start mysqld@2
systemctl status mysqld@2
systemctl stop mysqld@2
systemctl stop mysqld@1
---设置为开机启动
systemctl enable mysqld@1
systemctl enable mysqld@2




