web-dev-qa-db-ja.com

MySQLデーモンロックの問題

昨夜、MySQLサーバーが突然ダウンしました。再起動しようとすると(_service mysql restart_-私はrootです)、単にハングアップします。 _mysql -u root -p_コマンドを使用すると、ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)が得られます。次に、デーモンを手動で起動しようとしました(mysqld)。プロンプトは約2秒間ハングしてから戻ります。エラーログを詳しく調べると、次のことがわかりました。

_2016-01-22T19:18:32.399584Z 0 [ERROR] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock._

_2016-01-22T19:18:32.399622Z 0 [ERROR] Unable to setup unix socket lock file._

_2016-01-22T19:18:32.399646Z 0 [ERROR] Aborting_

次に、_chown mysql /var/run/mysqld_、_chmod -R 775 /var/run/mysqld_、_touch /var/run/mysqld/mysqld.sock.lock_および_apt-get install mysql-community-server --reinstall_を試しました。運が悪い。

私は周りを見回しましたが、解決策を見つけることができませんでした。ここで何か助けはありますか?

注:MySQLコミュニティサーバー5.7.10でDebian 8(Jessie)を実行しています

6
SamboyCoding

修繕。 my.cnfセクションの下の[mysqld]にskip-external-lockingを追加し、システム全体を再起動します。これを見つけた人は誰でも、これで解決するはずです。また、データをバックアップしてから、復元を試み、rm ib*に機能させるように指示された場合は、ibdataファイルが必要です。

1
SamboyCoding

今後の旅行者へのメモ:特定の構成によって異なりますが、これはvery apparmorの問題である可能性があります。ロックを無効にしたくない場合は、syslogを見て、そのファイルでapparmorが拒否されているかどうかを確認してください。

次のようなものが表示されます:apparmor="DENIED" operation="open" parent=29871 profile="/usr/sbin/mysqld" name="/run/mysqld/mysqld.sock.lock"

他の/run/mysqld/mysqld.sock.lock rwエントリの近くに/etc/apparmor.d/usr.sbin.mysqld/run/*に追加し、apparmorをリロードすることで修正できます。

11
anq

同じ正確なエラーメッセージで同じ問題が発生しましたが、私の場合は、アプリリポジトリのアップグレードが原因で、想定どおりに動作しませんでした。したがって、私の場合は、手動でmysql_upgrade -u adminname -pを実行し、サーバーを再起動するだけでうまくいきました。

0
Andyc