今天早上我注意到我的mysql服务器没有运行。看一下日志,我发现了以下信息。虽然令人不安的是mysqld服务耗尽了内存而被杀死了,但是mysql无法重启更令人不安。
关于为什么mysql无法重生的任何想法?如何测试以确保如果进程被终止,它将重新生成?
谢谢。
387 Oct 10 06:37:09 ip-xxx-xxx-xxx-xxx kernel: [12218775.475042] Out of memory: Kill process 810 (mysqld) score 232 or sacrifice child
388 Oct 10 06:37:09 ip-xxx-xxx-xxx-xxx kernel: [12218775.475060] Killed process 810 (mysqld) total-vm:888108kB, anon-rss:139816kB, file-rss:0kB
389 Oct 10 06:37:09 ip-xxx-xxx-xxx-xxx kernel: [12218775.655663] init: mysql main process (810) killed by KILL signal
390 Oct 10 06:37:09 ip-xxx-xxx-xxx-xxx kernel: [12218775.655745] init: mysql main process ended, respawning
391 Oct 10 06:37:10 ip-xxx-xxx-xxx-xxx kernel: [12218776.044805] type=1400 audit(1381408630.181:13): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=27754 comm="apparmor_parser"
392 Oct 10 06:37:10 ip-xxx-xxx-xxx-xxx kernel: [12218776.676434] init: mysql main process (27763) terminated with status 1
393 Oct 10 06:37:10 ip-xxx-xxx-xxx-xxx kernel: [12218776.676489] init: mysql main process ended, respawning
394 Oct 10 06:37:11 ip-xxx-xxx-xxx-xxx kernel: [12218777.468923] init: mysql post-start process (27764) terminated with status 1
395 Oct 10 06:37:11 ip-xxx-xxx-xxx-xxx kernel: [12218777.512363] type=1400 audit(1381408631.649:14): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=27800 comm="apparmor_parser"
396 Oct 10 06:37:11 ip-xxx-xxx-xxx-xxx kernel: [12218777.681433] init: mysql main process (27804) terminated with status 1
397 Oct 10 06:37:11 ip-xxx-xxx-xxx-xxx kernel: [12218777.681491] init: mysql respawning too fast, stopped
答案 0 :(得分:2)
我会尝试直接运行mysqld
作为命令,并查看输出。它可以是例如InnoDB corruption leading to stopping immediately after spawning,upstart
可能会在apparmour
停止之前重新生成import matplotlib.pyplot as plt
import numpy as np
mu, sigma = 0,100
x1 = mu + sigma*np.random.randn(1000)
x2 = mu + sigma*np.random.randn(1000)
x3 = mu + sigma*np.random.randn(1000)
#Stack the data
plt.figure()
plt.hist([x1,x2,x3], bins=30, stacked=True, normed = True)
plt.show()
。
答案 1 :(得分:0)
答案 2 :(得分:0)
一个老问题,但一个经常出现的问题。这个问题有两个面孔:
第一个是解决配置过度的问题。超大的缓冲区配置可以使mysql要求比系统提供的内存更多。验证this question,了解如何找到最适合您环境的信息。
第二个问题可能非常棘手。有很多可能阻止mysql启动的问题。可以执行以下步骤以找出原因。 第一条线索可以在mysql日志错误文件中找到,在大多数情况下都可以在/var/log/mysql/error.log中找到 但是,无论问题的性质如何,错误日志文件都可以为空。在这种情况下,尝试:
查看syslog:在终端提示符中
type tail -f /var/log/syslog
并在另一个终端尝试启动mysql:
service start mysql
如果这种方法没有提供任何有用的线索,请尝试以下方法:
以详细模式从raw启动mysqld:
su mysql
mysqld -v
如here所示。
输出消息有助于找出阻止mysql启动的根本原因。