今日、ubuntu 12.04の新規インストールを行い、ローカル開発環境のセットアップに取り掛かりました。 mysqlをインストールし、/etc/mysql/my.cnf
を編集してInnoDBを最適化しましたが、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 )、apparmorを強制モードから文句を変更しましたモード:
Sudo apt-get install apparmor-utils
Sudo aa-complain /usr/sbin/mysqld
Sudo /etc/init.d/apparmor reload
しかし、それは助けにはなりませんでした。まだmysqlを起動できません。
また、InnoDBログファイルのサイズがmysqlが予想していたサイズと異なるため、この問題が発生する可能性があると考えました。 Sudo mv /var/lib/mysql/ib_logfile* /tmp
を使用して再起動する前に、innodbログファイルを削除しました。しかし、運はありません。
回避策:12.04を再インストールしました。/etc/mysql/my.cnf
に触れないようにしてください。 Mysqlは機能しているので、必要なことを実行できます。しかし、私はいくつかの時点でそれを編集する必要があります-うまくいけば解決策を見つけたでしょうか、この質問はその時点で答えられているでしょう...
私はついに問題を理解しました。基本的に、一部のパラメーターの定義は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/95812 。
または簡単に実行します:
# Miraz added dpkg-reconfigure
dpkg-reconfigure mysql-server-5.5
ただし、古いmysqlバージョンがインストールされていないことを確認してください。インストールされている場合は削除してください。
# Miraz quick mysql package check
dpkg -l *mysql*
同様の問題がありました。問題が何であるかを示すエラーログが表示されなかったため、イライラしていました。
私の場合、innodb_buffer_pool_sizeに設定した値は、サーバーのメモリに対して大きすぎました。
Mysqldをmysqlユーザーとして直接実行することでこれを見つけました。
# su mysql
# mysqld
これにより、実際にエラー出力が表示されます。
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
同様の問題もありました。以下の項目は、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
/etc/mysql/my.cnf
および/etc/mysql/conf.d/
にあるMySQL構成のエラーに要約されるようです。
私の場合、これは間違ったbind-address
値でした。マシンのIPアドレスが変更され、MySQLがバインドできなくなったためです。これについては このブログ記事 でお気軽にご覧ください。
起動後プロセス(/etc/init/mysql.conf
)の失敗をデバッグする良い方法は、upstartログを確認することです:
Sudo tail -f /var/log/upstart/mysql.log
それは私にソケットエラーを与えました:
エラー: 'ソケットを介してローカルMySQLサーバーに接続できません
私の場合、[mysqld]
のmy.cnf
グループの下にuser
設定がないことが原因でした。
/tmp
権限を確認してください。私がこの問題を抱えていたのは、何度もグーグルして再起動した後、/tmp
パーミッションが755であることがわかりました。
777に変更すると、mysql
がうまく起動します。
同じ問題がありました。 mysql my.cnfマスタースレーブレプリケーションであることが判明しました。 /var/log/mysql/error.log
を確認してください。
それが少し助けになることを願っています。正常に動作するapparmorで2時間を無駄にする前に、まずmysqlの設定を確認してください。
11.10から12.04にアップグレードした後、同様のMySQLエラー(「ジョブが開始できませんでした」)が発生した場合、 https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1のコメント#27/+ bug/573318?comments = all 完璧に機能しました。見積もり:
私にとっての問題は、アップグレード後にファイル/etc/apparmor.d/local/usr.sbin.mysqldが存在しなかったことです。空のファイルの1つから手動でコピーしました(つまり、ヘッダーコメントのみがありました)。
私にとっての解決策は、行を削除することでした...
set-variable = max_connections=200
...これはMySQL 3.x構文であり、変更する必要があります
max_connections=200
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
同じ問題がありました。私にとっては、bind-address
が/etc/mysql/my.cnf
ファイルに不適切に設定されていました。したがって、my.cnfに正しくないものはすべてこの問題を引き起こす可能性があります。これを問題として示しているログには何も見つかりませんでした。
私の問題は空き容量の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 も参照してください
私の場合、問題は/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つのエラーのうち2つがなくなりました。同様のエラーメッセージが1つありますが、mysqlの起動を妨げませんでした。
お役に立てれば...
私の場合、間違ったbind-address
宣言がありました。 ifconfig
を実行してEC2のプライベートIPアドレスを検出し、/etc/mysql/my.cnf
ファイルで更新しました。
私の場合、/ tmpでパーミッションの問題が見つかりました。 tmpのディレクトリ許可を766に設定し、mysqlサービスを再起動しました。修正済み。
Amazon ec2インスタンスで実行されているUbuntu 12.04でこの問題を修正するために、MySQLとAppArmorのバージョンを推奨どおり更新しました here それでも数回エラーが表示されますが、MySQLは自動的に再起動します。