我在 linux 上有一个 mysql 复制从属服务器。我正在做一个 mysqldump 来备份数据库。我将它指向从服务器以分散负载。我正在使用的 mysqldump 选项包括--flush-logs
,这导致 mysql 服务器死机。它得到一个信号 11(即 segfault)。当我在没有 的情况下这样做时--flush-logs
,一切正常。为什么是这样?
更新:这是 /var/log/syslog 的相关部分(这是 mysql 错误消息在 debian 系统上的位置)
Jun 24 11:01:17 db2 mysqld[30673]: mysqld got signal 11;
Jun 24 11:01:17 db2 mysqld[30673]: This could be because you hit a bug. It is also possible that this binary
Jun 24 11:01:17 db2 mysqld[30673]: or one of the libraries it was linked against is corrupt, improperly built,
Jun 24 11:01:17 db2 mysqld[30673]: or misconfigured. This error can also be caused by malfunctioning hardware.
Jun 24 11:01:17 db2 mysqld[30673]: We will try our best to scrape up some info that will hopefully help diagnose
Jun 24 11:01:17 db2 mysqld[30673]: the problem, but since we have already crashed, something is definitely wrong
Jun 24 11:01:17 db2 mysqld[30673]: and this may fail.
Jun 24 11:01:17 db2 mysqld[30673]:
Jun 24 11:01:17 db2 mysqld[30673]: key_buffer_size=16777216
Jun 24 11:01:17 db2 mysqld[30673]: read_buffer_size=131072
Jun 24 11:01:17 db2 mysqld[30673]: max_used_connections=2
Jun 24 11:01:17 db2 mysqld[30673]: max_connections=100
Jun 24 11:01:17 db2 mysqld[30673]: threads_connected=1
Jun 24 11:01:17 db2 mysqld[30673]: It is possible that mysqld could use up to
Jun 24 11:01:17 db2 mysqld[30673]: key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 233983 K
Jun 24 11:01:17 db2 mysqld[30673]: bytes of memory
Jun 24 11:01:17 db2 mysqld[30673]: Hope that's ok; if not, decrease some variables in the equation.
Jun 24 11:01:17 db2 mysqld[30673]:
Jun 24 11:01:17 db2 mysqld_safe[31409]: Number of processes running now: 0
Jun 24 11:01:17 db2 mysqld_safe[31411]: restarted
鉴于内存量约为 200MB,我猜你还没有用完内存。您可以检查 dmesg 以查看机器是否内存不足。
如果其他进程因类似问题或总线错误而死机,则可能是您的内存有问题。您可以使用 memtest86 进行检查。
否则,我会说你在 mysql 中发现了一个错误。您可以尝试升级到最新版本的 MySQL,或者如果您使用的是最新版本,请降级并查看是否遇到同样的问题。如果你这样做,那么我建议向 MySQL 提交一个错误。
哪个版本的mysql?
您是否在 my.cnf 文件中启用了“expire-log-days”或“log-bin”选项?
--flush-log 选项有一些已知的错误会导致日志轮换、转储等崩溃。