mysqld_safe 版本与 mysqld 不同?

gio*_*o79 2 mysql mysqld mysqld-safe

mysqld套接字的版本与mysqld服务器的版本不同是不是有问题?我在启动期间在 mysqld 日志中注意到了这一点

120420 19:30:06 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120420 19:30:06  InnoDB: Initializing buffer pool, size = 8.0M
120420 19:30:06  InnoDB: Completed initialization of buffer pool
120420 19:30:06  InnoDB: Started; log sequence number 0 44233
120420 19:30:06 [Note] Event Scheduler: Loaded 0 events
120420 19:30:06 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.61'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution
Run Code Online (Sandbox Code Playgroud)

然而,当我显示变量时我得到了这个

显示类似“%version%”的变量;

+-------------------------+-------------------------------------------+
| Variable_name           | Value                                     |
+-------------------------+-------------------------------------------+
| innodb_version          | 5.5.30                                    |
| protocol_version        | 10                                        |
| slave_type_conversions  |                                           |
| version                 | 5.5.30-cll                                |
| version_comment         | MySQL Community Server (GPL) by Atomicorp |
| version_compile_machine | x86_64                                    |
| version_compile_os      | Linux                                     |
+-------------------------+-------------------------------------------+
7 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

根据戈利马尔的问题,我运行了

辅助键

我看到这个

mysql 633 31.4 33.5 11942788 5452172?SNl 08:18 101:31 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql -- log-error=/var/lib/mysql/host.reviewritic.com.err --open-files-limit=4096 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/ lib/mysql/mysql.sock --port=3306

根 32674 0.0 0.0 108292 1576 ?SN 08:18 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/运行/mysqld/mysqld.pid --basedir=/usr --user=mysql

Rol*_*DBA 5

众所周知,mysqld_safe和mysqld有很大不同

mysqld:数据库服务器实例守护进程

mysqld_safe:检查并设置 mysqld 执行环境的控制程序。mysqld 可执行文件实际上是在循环中启动的。当mysqld终止时,mysqld_safe程序将检查返回结果并决定是否

  • mysqld 正常终止(故意关闭),离开 mysqld_safe
  • mysqld 异常终止(mysqld 崩溃或kill -9)
    • 循环返回,mysqld 重试失败,离开 mysqld_safe
    • 循环回来,mysqld启动,停留在mysqld_safe循环中

为什么 mysqld 和 mysqld_safe 使用相同的 MySQL 版本很重要?

让我这样说明:Percona Server 有时在 mysqld_safe 中具有用于操作操作系统的附加功能。例如,我numactl --interleave=all在 Percona Server 中看到过 mysqld_safe。如果该行不存在,Percona Server 的 mysqld 可能会遇到内存和交换问题。

Oracle 的 mysqld 和 mysqld_safe 也可能出现同样的情况(呃,还是讨厌这么说)。从一个主要版本到另一个主要版本可能会有改进,如果 mysqld_safe 较旧,这些改进将被删除。

不要探索使用旧的 mysqld_safe 和新的 mysqld(或反之亦然)的可能性,请让你的生活变得简单并从头开始重新安装 MySQL 5.5.30。

在此之前,请运行

updatedb
locate mysqld_safe
Run Code Online (Sandbox Code Playgroud)

在Linux下看看是否有两个挥之不去的。如果有,请将路径理直。否则,您可能需要重新安装 MySQL 5.5.30。