Amygo
作者Amygo·2019-06-19 15:48
DBA·分布式事务数据库

【小白福利—初级DBA入门必看】MySQL常用工具介绍(二)——服务器启停工具

字数 4079阅读 3884评论 0赞 3

上一篇文章Amy为大家详细介绍了MySQL的几种安装方法今天继续为大家介绍服务器启停工具。

1. mysqld

mysqld服务器程序默认读取以下表格中选项文件的[server]、[mysqld]、[mysqld-5.7](带版本的为版本专享)三种选项组。此外还可以通过环境变量、命令行指定选项。至于选用何种启动选项启动mysqld,这里不多加描述。
c6yp0161n4q

c6yp0161n4q

2 .mysqld_safe

mysqld_safe是在Unix上启动 mysqld服务器的推荐方法。mysqld_safe添加了一些安全功能,例如在发生错误时重新启动服务器并将运行时信息记录到错误日志中。
注意:对一些linux平台,从rpm或debian包安装的MySQL包含服务器启停的systemd支持。此时,安装不包含mysqld_safe脚本,因为不必要。参考官网Section 2.5.10, “Managing MySQL Server with systemd”使用systemd管理mysql。
mysqld_safe调用方式为mysqld_safe [OPTIONS]
选项读取[mysqld], [server], [mysqld_safe], 为兼容性还读取[safe_mysqld]。
mysqld_safe和mysqld有很多共同参数。命令行中mysql_safe不识别的参数将传递到mysqld,[mysqld_safe]组中的不识别参数将被忽略。

mysqld_safe尝试启动mysqld,要覆盖该行为,可以用–mysqld或–mysqld-version选项指定要运行的服务器。也可指定–ledir指定查找服务器的目录。
mysqld_safe主要用于二进制和源安装:
服务器和数据库可以在mysqld_safe的工作目录中查找,对于二进制,查找工作目录下的bin和data目录。对于源安装,libexec和var。若在mysql安装目录执行safe,则该条件满足。
若在工作目录中未找到,在绝对路径中查找。典型的位置是/usr/local/libexec和 /usr/local/var,实际位置取决于编译设定。若mysql安装在设定位置,则该条件是满足的。

若系统有sleep和date程序,且每秒的尝试启动超过5,则mysqd_safe将等待1s后才再次启动。这是为了防止cpu使用率过高。

若使用safe启动mysqld,两者的错误和通知信息都写到相同的地方:(从mysqld_safe控制mysqld的日志从5.7.5不推荐):
–log-error=file_name控制错误信息到文件;
–syslog写错误信息到syslog(需要logger程序系统支持);
–skip-syslog:不写错误信息到syslog。而是写到服务器数据目录的host_name.err或–log-error中。若没有给出任何一个参数,则默认–skip-syslog
此外,当mysqld_safe写信息时,通知写入到指定位置和stdout,错误写入到指定位置和stderr。
下面给出mysqld_safe可以使用的选项:共用即不止safe本身使用该参数,mysqld也使用;mysqld参数将直接以命令行传递给mysqld。
yp563u4emrk

yp563u4emrk

ydym8bwzdj
ydym8bwzdj

yfupegu8s5m
yfupegu8s5m

使用mysqld_safe而不是直接使用mysqld的优势:
优势一:
a)启动时会判断一个进程号是否存在,如果存在那么就在错误日志中记录"A mysqld process already exists"并且退出。
b)如不存在就删除进程文件,如果删除不了,那么就在错误日志中记录"Fatal error: Can’t remove the pid file"并退出。
优势二:
mysqld_safe监控mysqld,在mysqld被kill -9或其他原因(如段错误(Segmentation fault))结束时,重启mysqld
优势三:
可以设定一些系统相关的参数

3. mysql.server

在包含mysql_safe的发行版中一般也有mysql.server脚本,该脚本调用mysql_safe启动mysqld服务器。其可在支持system V式样运行目录的系统上启停mysqld。macOS Startup Item for MySQL也使用该脚本。
调用:
shell> mysql.server start
shell> mysql.server stop #发送一个信号给服务器
mysql.server将位置切换到mysql安装位置,然后启动mysqld_safe。若二进制安装在非标准位置,必须修改server脚本以使其切换到合适的目录后调用safe。升级时该文件可能被覆盖,故此最好先备份。
要自动开机启停mysqld,必须将启停命令添加到/etc/rc*中合适的位置:
若使用rpm在linux上安装,server脚本可能以mysqld或mysql命名安装在/etc/init.d目录。
若使用源、二进制,不会自动安装server脚本,需要在安装目录的support-files目录中找到并复制到/etc/init.d,并赋予执行权限、可选改名。
shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql
安装脚本后,需要开机自启,在linux上运行
shell> chkconfig --add mysql
在一些linux上,下面命令也是需要的
shell> chkconfig --level 345 mysql on
mysql.server命令行参数只支持start、stop命令,选项文件中读取[mysqld]和 [mysqld.server],兼容[mysql_server],只支持以下选项。
pl0jj12s7f

pl0jj12s7f

4. mysqld_multi

mysqld_multi程序旨在管理几个侦听不同Unix套接字文件和TCP / IP端口上的 mysqld进程。它可以启动或停止一个或多个服务器,或报告其当前状态。注意这些服务器不能共用tcp端口、unix套接字、其他数据要写入的文件等。
调用方式:shell> mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] …]
gnr可以是一个整数,也可以是一个整数范围如10-13,多个gnr之间只能有一个逗号而不能有任何空格。该命令以[mysqldN]选项启动对应个数的mysqld。N在列出的gnr中。如:
以[mysqld17]启动一个mysqld:shell> mysqld_multi start 17
分别以[mysql8]、、、[mysql13]共启动5个–mysqld:shell> mysqld_multi stop 8,10-13
gnr省略时读取所有[mysqldN]并启动对应个–mysql服务器。
tmkidmx1bqj

tmkidmx1bqj

配置文件设定举例

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       =multi_admin
password   =my_password

[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /usr/local/mysql/data2/hostname.pid2
datadir    = /usr/local/mysql/data2
language   = /usr/local/mysql/share/mysql/english
user       = unix_user1

[mysqld3]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /usr/local/mysql/data3/hostname.pid3
datadir    = /usr/local/mysql/data3
language   = /usr/local/mysql/share/mysql/swedish
user       = unix_user2

[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /usr/local/mysql/data4/hostname.pid4
datadir    = /usr/local/mysql/data4
language   = /usr/local/mysql/share/mysql/estonia
user       = unix_user3

[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /usr/local/mysql/data6/hostname.pid6
datadir    = /usr/local/mysql/data6
language   = /usr/local/mysql/share/mysql/japanese
user       = unix_user4

作者:Amy—go

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广