更新:今私は問題が破損したデータベースであることを知っていますが、それを識別するのは少し面倒でした。衣類が予想以上に長い間原因のようだった。
私が最初に投稿したときに気づかなかったのは、mysqlを文句なしモードに設定し、衣類とstop
コマンドteardown
を送信した後も私のsyslogにまだ服のメッセージが表示されることです...保護層に対する非合理的な恐怖がさらに悪化しています。それでもなぜこのようなことが起こったのかわかりません。ついに服からmysqlを切り離しましたが、それでも自分のファイルをロックすることはできません。だからデータベースが破損しています。くそー。私のバックアップは新しいサーバーで正しく実行されています。
初期投稿:
MySQLサーバーは(私は考える)衣服がありますが、どうするかわからず、理由/方法を判断することはできません。私は衣類についてよく知らない。
私は少なくとも2つの理由で衣類を取り除いてはいけないことを知っていますが、それについて考えていないほど悪口を十分に使用しました(そして質問に時間がかかりすぎました)。うまくいけば、私は簡単なものを見逃してここで学ぶことを願っています。
停電は今日始まり、システムの変更は発生しませんでした。 MySQLエラーログは権限を嘆いています。
Can't open and lock privilege tables: Table 'servers' is read only
この問題が発生しました。現在、プライマリデータベースストアを移動していない人が見つかりませんでした。私も2年前に引っ越しました。衣装構成は2014/04/21以降の変更はありません:
/files/bak/tmp/ rw,
/files/bak/tmp/* rwk,
/files/bak/mysql/ rw,
/files/bak/mysql/** rwk,
ファイルシステム権限を確認しました。
# find mysql/ -type d -exec chmod 700 {} \;
# find mysql/ -type f -exec chmod 660 {} \;
# chown -R mysql: mysql
apparmorを再ロードし、apparmor-utilsをインストールし、mysqlをプッシュして文句を言います。
# aa-complain mysql
# apparmor_status
apparmor module is loaded.
5 profiles are loaded.
4 profiles are in enforce mode.
/sbin/dhclient
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/connman/scripts/dhclient-script
/usr/sbin/tcpdump
1 profiles are in complain mode.
/usr/sbin/mysqld
1 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
1 processes are unconfined but have a profile defined.
/sbin/dhclient (495)
...しかし、syslogを見ると、まだ服がmysqlをブロックしているように見えますservice mysql start
。
apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=13899 comm="apparmor_parser"
衣類の問題を発見する前に、バックアップからデータベースを復元しようとしましたが、書き込み権限も失敗しました。
Can't create/write to file '/files/bak/mysql/dbCooper/wp_cb_contact_form.MYI'
ファイルシステムが「rw」であることを確認しました(とにかく上記の方法はfind -exec
失敗しますが)。
mount
/dev/xvdf on /files/bak type ext4 (rw,noatime)
衣類を停止しようとしましたが、can't open and lock privilege tables
その後もsyslogが表示され続けます。
# service apparmor stop
[...redacted teardown msg...]
# /etc/init.d/apparmor teardown
* Unloading AppArmor profiles
# service apparmor status
apparmor module is loaded.
0 profiles are loaded.
0 profiles are in enforce mode.
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
mysqlがデータベースファイルをロックしてデーモンがクラッシュした場合、ロックを解除できないのは可能ですか?では、どのようにロックを解除しますか?
現在データベースを実行しています。
mysqld --skip-grant-tables
...それで、実行可能ファイルが機能し、データベースが少なくともある程度有効であることがわかります(サイトはすべて大丈夫です)。私は何を逃したことがありませんか?
読んでくれてありがとう。
答え1
データベースの破損。
オカムのかみそりの日が勝ちます。バックアップを新しいサーバーに移動し、データベースの場所/機器構成を更新しました。すべてを再起動したとき、私はつぶやきました。私はAppArmorが信じられないほど複雑で難しい獣だと自信を持って何時間も過ごしましたが、私の無言は全く根拠がありませんでした。最初の試みで完璧に動作しました。
どうやって驚くべきか通常の仕事ファイルが破損していない場合は、Apple広告である必要があります。
これでWordPressサイトを復元できる場合、Web開発者は私の実行中にいくつかの更新を行いますが、原因が何であるかを--skip-grant-tables
理解する前はそうではありませんでした。 :-/