なぜmariadbは死に続けるのですか?どうすれば止められますか?


25

Ubuntu 15.10でLAMPサーバーとしてMariaDB 10.0.23-0を実行しています。実行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;有効;ベンダープリセット:有効)
  ドロップイン:/etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   アクティブ:失敗(結果:タイムアウト)2016-03-26(土)22:52:42 EDT以降 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(code = exited、status = 0 / SUCCESS)

Mar 26 22:52:39 boggan systemd [1]:mariadb.service:開始操作がタイムアウトしました。終了します。
Mar 26 22:52:39 boggan mysqld [8707]:2016-03-26 22:52:39 140105856617216 [ノート] / usr / sbin / mysqld:通常シャットダウン
Mar 26 22:52:39 boggan mysqld [8707]:2016-03-26 22:52:39 140105856617216 [注]イベントスケジューラ:キューを削除しています。0イベント
Mar 26 22:52:39 boggan mysqld [8707]:2016-03-26 22:52:39 140104920164096 [注] InnoDB:FTS最適化スレッド終了。
Mar 26 22:52:39 boggan mysqld [8707]:2016-03-26 22:52:39 140105856617216 [注] InnoDB:シャットダウンを開始しています...
Mar 26 22:52:42 boggan mysqld [8707]:2016-03-26 22:52:42 140105856617216 [注] InnoDB:シャットダウンが完了しました。ログシーケンス番号3336953
Mar 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データベースサーバーの起動に失敗しました。
Mar 26 22:52:42 boggan systemd [1]:mariadb.service:ユニットは障害状態になりました。
Mar 26 22:52:42 boggan systemd [1]:mariadb.service:結果 'timeout'で失敗しました `

systemdそこの最初の行は一種の「まあまあ」です。私はそれがタイムアウトしたことを知っています。行のsystemd後の2番目、実際には開始するmysqldため、少し神秘的です。データベースに依存するアプリケーション(具体的には、OwnCloud)は正常に動作します... MariaDBが稼働しているわずかな変更に対して。

別の質問では、使用時間time /etc/init.d/mysql startを決定するために使用することが提案されました。時間を確認するために繰り返し実行しました。毎回90年代のどちらかの側で数秒です。

他の研究では...以外にも、それは罰金をされているファイルのパーミッションを、確認するために私を導く一時的に起動します。私は自分の(Linuxに関しては確かに制限されている)能力を最大限に活用して突進しましたが、まだ前進していません。

だから、質問は... どうすればMariaDBサービスを稼働させることができますか?

追加のしわとして、この質問を書いた後、マシンを稼働させたままにしました。1週間後に戻ってきました(その間は触れませんでした)。まったく同じコマンドを使用して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のシャットダウンが完了しました。
Apr 02 23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注] InnoDB:オンラインDDL:開始
Apr 02 23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注] InnoDB:オンラインDDL:テーブルのクラスター化インデックスの読み取りを開始し、一時ファイルを作成します
Apr 02 23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注] InnoDB:オンラインDDL:テーブルのクラスター化インデックスの読み取り終了と一時ファイルの作成
Apr 02 23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注] InnoDB:オンラインDDL:完了
Apr 02 23:51:55 boggan mysqld [2645]:2016-04-02 23:51:55 140386161068800 [注] InnoDB:オンラインDDL:完了
4月02日23:52:06 boggan dbus [713]:[システム]サービス 'org.bluez'のアクティブ化に失敗しました:タイムアウトしました
4月2日23:52:37 boggan systemd [1]:mariadb.service:開始操作がタイムアウトしました。終了します。
Apr 02 23:52:37 boggan mysqld [2645]:2016-04-02 23:52:37 140386097400576 [ノート] / usr / sbin / mysqld:通常シャットダウン
4月02日23:52:37 bogganカーネル:監査:type = 1400 audit(1459655557.935:31):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 audit [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
Apr 02 23:52:37 boggan mysqld [2645]:2016-04-02 23:52:37 140386097400576 [注]イベントスケジューラ:キューを削除します。0イベント
Apr 02 23:52:37 boggan mysqld [2645]:2016-04-02 23:52:37 140385225500416 [注] InnoDB:FTS最適化スレッドの終了。
Apr 02 23:52:37 boggan mysqld [2645]:2016-04-02 23:52:37 140386097400576 [注] InnoDB:シャットダウンを開始しています...
Apr 02 23:52:39 boggan mysqld [2645]:2016-04-02 23:52:39 140386097400576 [注] InnoDB:シャットダウンが完了しました。ログシーケンス番号3360838
Apr 02 23:52:39 boggan mysqld [2645]:2016-04-02 23:52:39 140386097400576 [ノート] / usr / sbin / mysqld:シャットダウン完了
4月02日23:52:39 bogganカーネル:監査:type = 1400 audit(1459655559.419:32):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 audit [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 audit [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カーネル:監査:type = 1400 audit(1459655559.419:33):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 systemd [1]:MariaDBデータベースサーバーの起動に失敗しました。
-件名:ユニットmariadb.serviceが失敗しました
-定義者:systemd
-サポート:http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
-ユニットmariadb.serviceが失敗しました。
- 
-結果は失敗します。
4月2日23:52:39 boggan systemd [1]:mariadb.service:ユニットが障害状態になりました。
4月02日23:52:39 boggan systemd [1]:mariadb.service:結果 'timeout'で失敗しました。

2
journalctl -xe出力が切り捨てられ、あなたはこれを更新することができますか?apparmor="DENIED"これはmariadbの起動中に問題になる可能性があるため、メッセージを詳しく見てください(OSでapparmorがアクティブになっている場合)。
16

@tlo私は…しなければならない、それはただ今夜まで待たなければならないだろう。現在の場所からマシンにアクセスできません。結局のところ、私は座っていたときに機能することができなかったので、なぜそれをリモートアクセス用に設定するのですか。私も間違いなく防具を調べます。アクティブ化された場合、デフォルトでアクティブ化されました。システムによってインストールされるものは何も変更せず、LAMPのものを追加しました。
TJL

@tlo出力を更新し、説明に少ししわを追加しました。それを強打する代わりに、私は1時間か2時間歩いて、何が起こるかを見るつもりです
...-TJL

1
@tlo助けてくれてありがとう。防具が犯人でした。
TJL

回答:


28

mysqlからmariadbにアップグレードした後も、まったく同じ問題が発生しました。奇妙なことは、サービスのmysqlの起動が成功したのに対し、サービスのmariadbの起動がタイムアウトで(システムの起動時または手動で)失敗したことです。

TJLの説明は正しいのですが、修正がうまくいきませんでした。

$ sudo aa-complain /usr/sbin/mysqld
Setting /usr/sbin/mysqld to complain mode.

ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile

だから私はプロファイルを無効にしました(plutocratのソリューションと同等と思われるaa-disableで)

$ sudo aa-disable /usr/sbin/mysqld
Disabling /usr/sbin/mysqld.

mysqld-akonadiとmysqld-digikamも無効にしました。

装甲のリロードでは十分ではなかったため、再起動する必要があり、mariadbは完全に正常に起動しました。


再起動せずに動作させる方法を見つけることができなかったことを確認します。
Meetai.com

この回答はKubuntu 18.04.2 LTSで有効でした。complainそして... apparmor reloadTJL答えて)確かに十分ではありませんでした。
Marten Koetsier

25

防具が犯人でした。/etc/apparmor.d/usr.sbin.mysqldコメント以外の何ものでもないという内容と、それがそこにあると主張して、防具がMariaDBを窒息させないようにしたにもかかわらず、まさにそれが起こっていたのです。

OracleブログのAppArmorとMySQLは、何が起こっているのかを把握するために必要なものを提供しました。

sudo aa-status防具が何をしているかを示します。実際に強制されたポリシーを持っているものと、文句を言うだけに設定されているもの。

sudo apt-get install apparmor-utils 以下のように、装甲プロファイルを扱いやすくするいくつかのコマンドを追加します...

sudo aa-complain /usr/sbin/mysqldプロファイルを「強制」から不満に変えます。(元aa-enforceに戻します。)

それが完了すると、sudo service apparmor reloadapparmorが再起動し、出来上がり...がsudo /etc/init.d/mysql start機能し、サーバーは稼働し続けます。


1
神聖なたわごと男; それは実際に働いた。これが本番サーバーに影響を与えて数時間停止したため、少しパニックになりました。私はあなたのような専門家ではなく、/ var / log / mysql / error.logファイルでさまざまなエラーをウェブ全体で検索しました。本当にありがとうございます!
ムキト

1
わたしも。Ubuntu 14.04から16.04にアップグレードすると、MySQLを実行できなくなりました。動作するようになりました!これについて詳しく説明してくれてありがとう:D。私は何週間も探していました!
-Sawtaytoes

私のためにそれをかなりしませんが、でのヒントに感謝しapparmor-utilsます。3年後になってきましたERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile
YetiCGN

14

apparmorでmysqlを完全に無効にする必要がありました。aa-complainは私には何もしません。そう ...

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/

その後、再起動します


ありがとうございました!これが私の問題の唯一の解決策でした!また、mysqlからmariadbにアップグレードしました
Thomas

これも私にとってはうまくいきました。ありがとうございました
エマン

3

簡単な解決策は、不明なAppArmorプロファイルを削除することです。

aa-remove-unknown
Removing '/snap/core/6350/usr/lib/snapd/snap-confine'
Removing '/usr/sbin/mysqld'

できます!


これは、実際に実行するために必要なことでした。上記の受け入れられた答えERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profileは、ファイルがコメントのみで構成されていることを考えると、それがまさに真実であるために私に与えるでしょう。それは2016年に働いている間多分AppArmorの新しいバージョンでは、それらは、それらのファイルで失敗するように設定します
YetiCGN

これが正解です(少なくとも2019年)。起こることは、MySqlの削除後、AppArmorプロファイル/usr/sbin/mysqldがまだカーネルにロードされていることです。これを実行aa-remove-unknown(または再起動)すると解決します。
zwets
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.