mysqlを開始できません-mysqlの再起動が速すぎて停止しました


33

今日、ubuntu 12.04の新規インストールを行い、ローカル開発環境のセットアップに取り掛かりました。mysqlをインストールし、/etc/mysql/my.cnfInnoDBを最適化するために編集しましたが、mysqlを再起動しようとすると、エラーで失敗します。

[20:53][tom@Pochama:/var/www/website] (master) $ sudo service mysql restart
start: Job failed to start

syslogは、initスクリプトに問題があることを示しています。

> tail -f /var/log/syslog

Apr 28 21:17:46 Pochama kernel: [11840.884524] type=1400 audit(1335644266.033:184): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=760 comm="apparmor_parser"
Apr 28 21:17:47 Pochama kernel: [11842.603773] init: mysql main process (764) terminated with status 7
Apr 28 21:17:47 Pochama kernel: [11842.603841] init: mysql main process ended, respawning
Apr 28 21:17:48 Pochama kernel: [11842.932462] init: mysql post-start process (765) terminated with status 1
Apr 28 21:17:48 Pochama kernel: [11842.950393] type=1400 audit(1335644268.101:185): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=811 comm="apparmor_parser"
Apr 28 21:17:49 Pochama kernel: [11844.656598] init: mysql main process (815) terminated with status 7
Apr 28 21:17:49 Pochama kernel: [11844.656665] init: mysql main process ended, respawning
Apr 28 21:17:50 Pochama kernel: [11845.004435] init: mysql post-start process (816) terminated with status 1
Apr 28 21:17:50 Pochama kernel: [11845.021777] type=1400 audit(1335644270.173:186): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=865 comm="apparmor_parser"
Apr 28 21:17:51 Pochama kernel: [11846.721982] init: mysql main process (871) terminated with status 7
Apr 28 21:17:51 Pochama kernel: [11846.722001] init: mysql respawning too fast, stopped

何か案は?


私がすでに試したこと:

私はグーグルで調べて、apparmorのUbuntuバグ(https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366)を見つけました。

sudo apt-get install apparmor-utils
sudo aa-complain /usr/sbin/mysqld
sudo /etc/init.d/apparmor reload

しかし、それは助けにはなりませんでした。まだmysqlを起動できません。

また、InnoDBログファイルのサイズがmysqlが予想していたサイズと異なるため、この問題が発生する可能性があると考えました。を使用して再起動する前にinnodbログファイルを削除しましたsudo mv /var/lib/mysql/ib_logfile* /tmp。しかし、運はありません。

回避策: 12.04を再インストールし/etc/mysql/my.cnf、どのような方法でも触れないようにしました。Mysqlは機能しているので、必要なことを実行できます。しかし、私はいくつかの時点でそれを編集する必要があります-うまくいけば解決策を見つけたでしょうか、この質問はその時点で答えられているでしょう...

回答:


29

私はついに問題を理解しました。基本的に、いくつかのパラメーターの定義は以前のバージョンのmysqlから削除され、別の名前に置き換えられました。修正するには、/ etc / mysql / my.cnfで以下を置き換えます:

# Tom Added to ensure the server character set is set to utf8
default-character-set = utf8
default-collation     = utf8_general_ci

で:

# Tom Added to ensure the server character set is set to utf8
character_set_server  = utf8
collation_server      = utf8_general_ci

:これは、関連するランチパッドのバグレポートですhttps://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120

または簡単に実行します:

# Miraz added dpkg-reconfigure
dpkg-reconfigure mysql-server-5.5

ただし、古いmysqlバージョンがインストールされていないことを確認してください。インストールされている場合は削除してください。

# Miraz quick mysql package check
dpkg -l *mysql*

私はこの問題を抱えていませんdpkg-reconfigure mysql-server-5.5でしたが、私の構成で間違っていたものを修正しました。
デビッドパーデュー14

私の場合、問題は/etc/mysql/my.cnf ....のプロパティ名の入力ミスであることが判明しました。このブログから:dangtrinh.com/2014/05/…、mysqld -vを実行します。mysql終了コード7をグーグルで試しましたが、成功しませんでした。私の推測では、終了コード7はmysql構成ファイルの解析の失敗に関係しています。
MaasSql

これと同じ問題がありましたが、/ etc / mysql / conf.d / *の下に誤った構成があり、/ var / log / mysql。*と呼ばれる古いログがあったために気づかないため、トレースが困難でした。アクティブログ/ var / log / mysql / *。
デイブバート・

1
サイドノート:utf8_unicode_ciより良い。今でもutf8mb4_unicode_ci
Akshay

10

Innodbにはデフォルト設定(innodb_buffer_pool_size)があり、128Mに設定されています-これはサーバーに対して大きすぎる可能性があります(特に、小さなAmazon EC2 AMIを使用している場合-私はそうでした)行する /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

私はここでこの修正について書きましたhttp://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start


私の仮想マシンはメモリ不足であることがわかりました。innodb_buffer_pool_size低く設定することはソリューションの一部でしたが、メモリ不足になる可能性があることに注意してください。
thaddeusmt

10

同様の問題がありました。問題が何であるかを示すエラーログが表示されなかったため、イライラしていました。

私の場合、innodb_buffer_pool_sizeに設定した値がサーバーのメモリに対して大きすぎました。

mysqldをmysqlユーザーとして直接実行することでこれを見つけました。

# su mysql
# mysqld

これにより、実際にエラー出力が表示されます。


2
これは素晴らしいヒントです。mysqlから意味のあるデバッグ情報を取得するのに苦労していました。ありがとう!
熱心なアナリスト

3

同様の問題もありました。以下の項目は、mysqlサーバー5.5から削除されたことを示しています。
にそれらがある場合my.cnf、開始されません。それらをコメントアウトし#ます。
(派生情報:http : //dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html

影響を受けるオプションは次のリストに示されています。

 --master-host
 --master-user
 --master-password
 --master-port
 --master-connect-retry
 --master-ssl
 --master-ssl-ca
 --master-ssl-capath
 --master-ssl-cert
 --master-ssl-cipher
 --master-ssl-key

パーフェクト!まさに私を投げたもの。ありがとう。
ジムW.

3

にあるMySQL設定のエラー/etc/mysql/my.cnfとのファイルに要約されるようです/etc/mysql/conf.d/

私の場合bind-address、マシンのIPアドレスが変更され、MySQLがバインドできなくなったため、値が間違っていました。このブログ記事これをもっと自由に見つけてください


2

開始後プロセス(/etc/init/mysql.conf)でエラーをデバッグする良い方法は、upstartログを確認することです:

sudo tail -f /var/log/upstart/mysql.log 

それは私にソケットエラーを与えました:

エラー: 'ソケットを介してローカルMySQLサーバーに接続できません

私の場合はuser[mysqld]グループ内の設定が欠落していることが原因でしたmy.cnf


1

11.10から12.04にアップグレードした後、同様のMySQLエラー(「ジョブが開始できませんでした」)が発生した場合、https: //bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/のコメント#27 573318?comments =すべてが完璧に機能しました。見積もり:

私にとっての問題は、アップグレード後にファイル/etc/apparmor.d/local/usr.sbin.mysqldが存在しなかったことです。空のファイルの1つから手動でコピーし(ヘッダーコメントのみが含まれていた)、すべてがうまくいきました。


1

私にとっての解決策は、行を削除することでした...

set-variable = max_connections=200

...これはMySQL 3.x構文であり、変更する必要があります

max_connections=200

1

同じ問題がありました。mysql my.cnfマスタースレーブレプリケーションであることが判明しました。を確認してください/var/log/mysql/error.log

それが少し助けになることを願っています。正常に動作するapparmorで2時間を無駄にする前に、まずmysqlの設定を確認してください。


1

私は同じ問題を抱えていました。私にとってはbind-address/etc/mysql/my.cnfファイルに不適切に設定されていました。したがって、my.cnfに正しくないものはすべてこの問題を引き起こす可能性があります。これを問題として示しているログには何も見つかりませんでした。



1

/tmp許可を確認してください。私はこの問題を抱えていました。何回もグーグルで検索して再起動した後、私は/tmpパーミッションが755であることがわかりました。

私は777に変更して、mysqlうまく始めました。


古代のこのことですが、これは私の問題でした....それがどのように変化したか
...-

場合によっては、ファイルシステムを変更するか、/tmp新しいパーティションにマウントします。
shgnInc

1

mysqld-5.5.53 ubuntu 14.04.1への自動更新後、mysqlは起動しませんでした。syslogに次の行が表示されました。

Oct 27 06:05:51 hostname kernel: [  593.168925] init: mysql post-start process (4997) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.178241] type=1400 audit(1477562751.231:31): apparmor="STATUS" operation="profile_replace" profile="unconfined" name
Oct 27 06:05:51 hostname kernel: [  593.204392] init: mysql main process (5032) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.204404] init: mysql respawning too fast, stopped

この問題は、次のディレクトリを作成することで解決しました。

sudo mkdir /var/lib/mysql-files
sudo chmod 700 /var/lib/mysql-files
sudo chown mysql:mysql /var/lib/mysql-files
sudo /etc/init.d/mysql start

0

Amazon ec2インスタンスで実行されているUbuntu 12.04でこの問題を修正するために、ここで提案されているようにMySQLとAppArmorのバージョンを更新しました。それでも数回エラーが表示されますが、MySQLは自動的に再起動します。


1
Ask Ubuntuへようこそ!これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
リングテール

0

同じエラーメッセージが表示されましたが、原因は異なりました。ファイルシステム全体が読み取り専用モードになったため、InnoDBテーブルが破損していました。/etc/mysql/my.cfに次の行を追加して破損を修正しました

innodb_force_recovery = 1

MySQLを開始しました:

sudo service mysql start

MySQLが起動し、すべてのテーブルをダンプ/エクスポートしました。innodb_force_recoveryを0(デフォルト)に変更し、MySQLを再起動しました。

sudo service mysql restart

MySQL 5.5でUbuntu 12.04を使用しています。問題を発見するまでに長い時間がかかりました。この答えで誰かを助けることができるといいのですが。http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.htmlも参照してください


0

私の場合、問題は /etc/mysql/my.cnfファイルの許可でした。

私は便宜のためにそれを変更しましたが、それは次のようなエラーを引き起こしました

kernel: [604528.290448] type=1400 audit(1424350956.727:193): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=15008 comm="apparmor_parser"

my.cnfパーミッションは766だったと私は744にそれを変更し、3つのエラーの二人は去っていきました。同様のエラーメッセージが1つありますが、mysqlの起動を妨げませんでした。

お役に立てれば...


0

私の場合、間違ったbind-address宣言がありました。私はifconfigEC2のプライベートIPアドレスを発見するために走り、/etc/mysql/my.cnfファイルでそれを更新しました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.