mysqld,mysqld_safe,mysql.server,mysqladmin,mysql,service mysql的理解

刚接触mysql,很容易被mysqld,mysqld_safe,mysql.server,mysqladmin,mysql,service mysql弄晕

他们是命令、进程、服务、程序、脚本

 

最近学习了一下,说说自己的理解

 

1 mysql命令

mysql是客户端命令,用于连接mysql数据库

只要安装完mysql就会有的命令

比如
mysql -uroot -poracle

 

2 mysqld

mysqld是mysql服务器进程,也是管理mysql服务端的命令。

进程:

[root@lzl ~]# ps -ef|grep 3306
mysql     8626     1  0 01:12 ?        00:00:21 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql.log --pid-file=/data/mysql/mysqld.pid --socket=/tmp/mysql.sock --port=3306

命令:

[root@lzl ~]# which mysqld
/usr/local/mysql/bin/mysqld

 

mysqld命令可以用于初始化(--initialize)或者启动mysql服务

mysqld shutdown -P$port -h$host可以关闭数据库


一般mysql服务((mysql服务一般指的实体就是mysqld的进程本身,mysqld向外提供mysql服务)启动后,就包含2个进程:mysqld和mysqld_safe。
mysqld是mysql服务器进程,也就是mysql实例本身,如果mysqld进程不在了,就可以看成mysql实例挂了
mysqld_safe相当于是mysqld外面的安全管理进程。一个mysql实例可以没有mysqld_safe进程但是至少有一个mysqld进程
用service启动一般会启动mysqld和mysqld_safe两个进程

 

3 mysqld_safe

mysqld_safe是mysqld_safe进程,也是mysqld_safe的命令。

mysqld_safe命令可以通过mysqld_safe进程用来启动mysqld。mysqld_safe有许多安全特性,比如当出现错误时重启服务器并向错误日志文件写入运行时间信息,mysqld和mysqld_safe参数相似(但是仍有部分不同),mysqld_safe指定的参数会传递给mysqld。启动mysql实例时建议使用mysqld_safe命令去启动,当mysqld挂掉后mysqld_safe会自动把他拉起来
例如启动mysqld_safe,同时也拉起了mysqld。在杀进程的时候最好先杀mysqld_safe,再杀mysqld,不然mysqld_safe会把mysqld拉起来

 

 通过mysqld_safe启动mysqld_safe和mysqld:
[root@lzl ~]# mysqld_safe start --defaults-file=/etc/my.cnf &
[1] 5944
[root@lzl ~]# 2020-07-28T06:22:40.324571Z mysqld_safe Logging to '/data/mysql/mysql.log'.
2020-07-28T06:22:40.350801Z mysqld_safe Starting mysqld daemon with databases from /data/mysql   --启动了mysqld
2020-07-28T06:22:42.426844Z mysqld_safe mysqld from pid file /data/mysql/mysqld.pid ended   -只要出现了/xxx/xxx/.pid ended 就表示没有启动成功,它退出了

 

mysqld_safe start 虽然可以拉起mysqld

但是mysqld_safe shutdown只能关闭mysqld_safe自己

 

4 mysqld_multi
mysqld_multi可以管理多个mysql的服务,管理多个mysql实例时比较有用,目前我的接触的环境还没有使用该功能。个人认为没有各自为战的mysqld灵活,mysqld启动时指定各自的my.cnf,也可以多个服务同时存在。云服务调用时也更方便灵活一些,至少肯定不会影响到其他mysql服务

 

5 mysql.server与service mysql start

mysql.server 是mysql启动脚本,一般会拷贝到/etc/init.d/文件夹下,拷贝成/etc/init.d/mysql后可以通过service mysql start|stop 来启动或者关闭mysqld和mysqld_safe服务,很方便
cp -r /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
如果使用service start mysql启动mysql实例的话,一切都是默认的,他会去读/etc/my.cnf配置去启动mysql实例。
但是当我仅想启动3307端口的实例不想启动3306时,启动脚本就没有那么好用
mysql.server启动脚本的特长就是方便,缺点是不够灵活

 

6 mysqladmin
mysqladmin是一个执行管理操作的客户程序。可以用它来检查服务器的配置和当前的状态,创建并删除数据库等等
比如查看实例状态
[root@lzl ~]# mysqladmin proc stat -uroot -poracle   (mysqladmin proc stat相当于mysqladmin status和mysqladmin processlist的合体)
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
+----+------+-----------+----+---------+------+----------+------------------+
| Id | User | Host      | db | Command | Time | State    | Info             |
+----+------+-----------+----+---------+------+----------+------------------+
| 17 | root | localhost |    | Query   | 0    | starting | show processlist |
+----+------+-----------+----+---------+------+----------+------------------+
Uptime: 321960  Threads: 1  Questions: 16  Slow queries: 0  Opens: 106  Flush tables: 2  Open tables: 1  Queries per second avg: 0.000

有个比较有意思的命令shutdown(没有startup)
[root@lzl mysql]# mysqladmin shutdown -P3306 -uroot -poracle
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
2020-07-28T07:14:13.481049Z mysqld_safe mysqld from pid file /data/mysql/mysqld.pid ended
[1]+  Done                    mysqld_safe --defaults-file=/etc/my.cnf  (wd: ~)
(wd now: /data/mysql)
确实可以停实例,启动实例还是用mysqld_safe比较好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuzhilongDBA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值