Mariadb 在崩溃后创建子进程

Mariadb 在崩溃后创建子进程

我们最近在 Debian 9 VM 上的 Mariadb 服务器 (10.6.5) 崩溃了。进程重新启动时没有出现错误,但现在出现了第二个 mariadb 进程,如下所示:

mysql    26718  5.1 42.4 15062644 12788308 ?   Ssl  Apr13  61:53 /usr/sbin/mariadbd
mysql    26777  1.9 11.5 15152500 3488712 ?    S    Apr13  22:38 /usr/sbin/mariadbd

这似乎是第一个的子过程。

我们无法停止这两个过程

systemctl stop mariadb

该命令无限期挂起。摆脱它们的唯一方法是 kill -9 两个进程。如果我们重新启动 mariadb 进程,第二个进程最终会无缘无故地启动。如果先杀死子进程,它会在稍后重新出现。日志中没有显示任何错误。

数据库也只能以读取方式访问,任何写入尝试都将永远挂起。我正在考虑转储并重新安装数据库。

编辑1

这是服务器崩溃时的日志:

Apr 12 22:51:21 my-server mariadbd[23495]: 2023-04-12 22:51:21 0 [ERROR] [FATAL] InnoDB: Page old data size 15834 new data size 13676, page old max ins size 40 new max ins size 2198
Apr 12 22:51:21 my-server mariadbd[23495]: 230412 22:51:21 [ERROR] mysqld got signal 6 ;
Apr 12 22:51:21 my-server mariadbd[23495]: This could be because you hit a bug. It is also possible that this binary
Apr 12 22:51:21 my-server mariadbd[23495]: or one of the libraries it was linked against is corrupt, improperly built,
Apr 12 22:51:21 my-server mariadbd[23495]: or misconfigured. This error can also be caused by malfunctioning hardware.
Apr 12 22:51:21 my-server mariadbd[23495]: To report this bug, see https://mariadb.com/kb/en/reporting-bugs
Apr 12 22:51:21 my-server mariadbd[23495]: We will try our best to scrape up some info that will hopefully help
Apr 12 22:51:21 my-server mariadbd[23495]: diagnose the problem, but since we have already crashed,
Apr 12 22:51:21 my-server mariadbd[23495]: something is definitely wrong and this may fail.

答案1

首先,它不是子进程,而是之前运行的 MariaDB 的旧版本。很可能是来自未能在超时内停止的实例。

显然 MariaDB 并不适合这样运行。结果是两个实例在彼此不知情的情况下修改了相同的文件,如您所见,这是致命的。您需要从备份中恢复。

较新版本的 MariaDB (10.6.9+) 锁定aria_log_controlibdata1防止此类损坏。此外,较新版本的systemd(v242+) 与包含的较新服务文件相结合SendSIGKILL=no,还可以防止由同一服务重复启动(參考)。

我很抱歉您最终陷入了没有这些保护的境地。

相关内容