暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL服务的管理

Henry 2024-02-28
193

一、使用服务管理脚本/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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论