为什么mariadb会继续死亡? 我怎么阻止它?
我在Ubuntu 15.10上运行MariaDB 10.0.23-0作为LAMP服务器。 运行sudo /etc/init.d/mysql start
导致:
Job for mariadb.service failed because a timeout was exceeded. See "systemctl status mariadb.service" and "journalctl -xe" for details.
systemctl status mariadb.service
的输出是:
●mariadb.service - MariaDB数据库服务器 已加载:已加载(/lib/systemd/system/mariadb.service;已启用;供应商预设:已启用) Drop-In:/etc/systemd/system/mariadb.service.d └─migrated从 - my.cnf中,settings.conf 活跃:自2016年6月21日星期六22:52:42以来失败(结果:超时); 26年前 进程:8707 ExecStart = / usr / sbin / mysqld $ MYSQLD_OPTS $ _WSREP_NEW_CLUSTER(code = exited,status = 0 / SUCCESS) 进程:8706 ExecStartPre = / usr / bin / install -m 755 -o mysql -g root -d / var / run / mysqld(code = exited,status = 0 / SUCCESS) 主PID:8707(代码=退出,状态= 0 /成功) 3月26日22:52:39 boggan systemd [1]:mariadb.service:开始操作超时。 终止。 3月26日22:52:39 boggan mysqld [8707]:2016-03-26 22:52:39 140105856617216 [注意] / usr / sbin / mysqld:正常关机 3月26日22:52:39 boggan mysqld [8707]:2016-03-26 22:52:39 140105856617216 [注意]事件调度程序:清除队列。 0个事件 3月26日22:52:39 boggan mysqld [8707]:2016-03-26 22:52:39 140104920164096 [注意] InnoDB:FTS优化线程退出。 3月26日22:52:39 boggan mysqld [8707]:2016-03-26 22:52:39 140105856617216 [注意] InnoDB:开始关机... 3月26日22:52:42 boggan mysqld [8707]:2016-03-26 22:52:42 140105856617216 [注意] InnoDB:关闭完成; 日志序列号3336953 3月26日22:52:42 boggan mysqld [8707]:2016-03-26 22:52:42 140105856617216 [注意] / usr / sbin / mysqld:关机完成 3月26日22:52:42 boggan systemd [1]:无法启动MariaDB数据库服务器。 3月26日22:52:42 boggan systemd [1]:mariadb.service:单位进入失败状态。 3月26日22:52:42 boggan systemd [1]:mariadb.service:结果'超时'失败
第一个systemd
线有一种“井”。 我知道它超时了。 第二个systemd
,在mysqld
之后有点神秘,因为它确实开始了。 依赖于数据库的应用程序(特别是OwnCloud)正常工作…对于MariaDB启动的分钟和更改。
建议使用time /etc/init.d/mysql start
另一个问题 time /etc/init.d/mysql start
确定它需要多长时间。 我反复跑来确认时间 – 每次90秒左右几秒钟。
其他研究让我检查文件权限,这很好……此外,它确实启动,暂时。 我已经戳了戳并且向我最好的(在Linux方面确实有限)能力,我没有取得任何进展。
所以,问题是…… 我如何让MariaDB服务保持稳定?
作为一个额外的皱纹,在写完这个问题之后,我让机器运转起来。 一周后我回来了(我之间没有碰过)。 使用完全相同的命令, sudo /etc/init.d/mysql start
,成功了。 mysql守护进程启动并运行; 它带回了一个[ ok ]
报告。 我重新启动了实验,我回到了我开始的地方。
如果重要, journalctl -xe
的输出是:
4月02日23:51:44 boggan systemd [1]:已停止提前读取所需文件。 - 主题:单位ureadahead.service已完成关闭 - 定义者:systemd - 支持:http://lists.freedesktop.org/mailman/listinfo/systemd-devel - - 单位ureadahead.service已完成关闭。 4月02日23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注意] InnoDB:在线DDL:开始 4月02日23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注意] InnoDB:在线DDL:开始读取表的聚簇索引并创建临时文件 4月02日23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注意] InnoDB:在线DDL:结束读取表的聚簇索引并创建临时文件 4月02日23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注意] InnoDB:在线DDL:已完成 4月02日23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注意] InnoDB:在线DDL:已完成 4月02日23:52:06 boggan dbus [713]:[system]无法激活服务'org.bluez':超时 4月02日23:52:37 boggan systemd [1]:mariadb.service:开始操作超时。 终止。 4月02日23:52:37 boggan mysqld [2645]:2016-04-02 23:52:37 140386097400576 [注意] / usr / sbin / mysqld:正常关机 4月02日23:52:37 boggan kernel:audit:type = 1400 audit(1459655557.935:31):apparmor =“DENIED”operation =“sendmsg”profile =“/ usr / sbin / mysqld”name =“/ run / systemd /通知“pid = 2645 comm =”mysqld“requested_mask =”w“denied_mask =”w“fsuid = 122 ouid = 0 4月2日23:52:37 boggan审计[2645]:AVC apparmor =“DENIED”operation =“sendmsg”profile =“/ usr / sbin / mysqld”name =“/ run / systemd / notify”pid = 2645 comm =“ mysqld“requested_mask =”w“denied_mask =”w“fsuid = 122 ouid = 0 4月02日23:52:37 boggan mysqld [2645]:2016-04-02 23:52:37 140386097400576 [注意]事件调度程序:清除队列。 0个事件 4月02日23:52:37 boggan mysqld [2645]:2016-04-02 23:52:37 140385225500416 [注意] InnoDB:FTS优化线程退出。 4月02日23:52:37 boggan mysqld [2645]:2016-04-02 23:52:37 140386097400576 [注意] InnoDB:开始关机... 4月02日23:52:39 boggan mysqld [2645]:2016-04-02 23:52:39 140386097400576 [注意] InnoDB:关机完成; 日志序列号3360838 4月02日23:52:39 boggan mysqld [2645]:2016-04-02 23:52:39 140386097400576 [注意] / usr / sbin / mysqld:关机完成 4月02日23:52:39 boggan kernel:audit:type = 1400 audit(1459655559.419:32):apparmor =“DENIED”operation =“sendmsg”profile =“/ usr / sbin / mysqld”name =“/ run / systemd /通知“pid = 2877 comm =”mysqld“requested_mask =”w“denied_mask =”w“fsuid = 122 ouid = 0 4月02日23:52:39 boggan审计[2877]:AVC apparmor =“DENIED”operation =“sendmsg”profile =“/ usr / sbin / mysqld”name =“/ run / systemd / notify”pid = 2877 comm =“ mysqld“requested_mask =”w“denied_mask =”w“fsuid = 122 ouid = 0 4月2日23:52:39 boggan审计[2645]:AVC apparmor =“DENIED”operation =“sendmsg”profile =“/ usr / sbin / mysqld”name =“/ run / systemd / notify”pid = 2645 comm =“ mysqld“requested_mask =”w“denied_mask =”w“fsuid = 122 ouid = 0 4月02日23:52:39 boggan kernel:audit:type = 1400 audit(1459655559.419:33):apparmor =“DENIED”operation =“sendmsg”profile =“/ usr / sbin / mysqld”name =“/ run / systemd /通知“pid = 2645 comm =”mysqld“requested_mask =”w“denied_mask =”w“fsuid = 122 ouid = 0 4月02日23:52:39 boggan systemd [1]:无法启动MariaDB数据库服务器。 - 主题:单位mariadb.service失败 - 定义者:systemd - 支持:http://lists.freedesktop.org/mailman/listinfo/systemd-devel - - 单位mariadb.service失败了。 - - 结果失败了。 4月02日23:52:39 boggan systemd [1]:mariadb.service:单位进入失败状态。 4月02日23:52:39 boggan systemd [1]:mariadb.service:结果'超时'失败。
apparmor是罪魁祸首。 尽管/etc/apparmor.d/usr.sbin.mysqld
的内容只是评论并声称它在那里,所以apparmor不会在MariaDB上窒息,这正是发生的事情。
Oracle博客上的AppArmor和MySQL提供了我需要弄清楚发生了什么的东西。
sudo aa-status
显示了apparmor正在做什么; 什么实际上有一个强制执行的政策,而不是刚刚抱怨的。
sudo apt-get install apparmor-utils
添加了一些命令,使apparmor配置文件更容易处理,例如…
sudo aa-complain /usr/sbin/mysqld
将配置文件从“强制执行”变为抱怨。 ( aa-enforce
将其转回。)
一旦完成, sudo service apparmor reload
重新启动apparmor,瞧… sudo /etc/init.d/mysql start
工作,服务器保持运行状态。
从mysql升级到mariadb之后我遇到了同样的问题。 奇怪的是服务mariadb启动失败超时(无论是在系统启动还是手动),而服务mysql启动成功。
TJL给出的解释是正确的,但修正对我不起作用。
$ sudo aa-complain /usr/sbin/mysqld Setting /usr/sbin/mysqld to complain mode. ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile
所以我禁用了配置文件(使用aa-disable,这似乎相当于plutocrat的解决方案)
$ sudo aa-disable /usr/sbin/mysqld Disabling /usr/sbin/mysqld.
我也禁用了mysqld-akonadi和mysqld-digikam。
apparmor重新加载是不够的,所以我不得不重启并且mariadb开始非常好。
我不得不在apparmor中完全禁用mysql。 抱怨不会对我做任何事情。 所以……
ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
然后重启