さくらのVPSサーバでROOTパスワードが分からない&MySQLが動かない&動作が不安定というサーバをレスキューした話

スポンサーリンク
Live2D
スポンサーリンク
↑管理人が個人でUnity+Live2Dで作成しているスマホゲームです

タイトルにあるように、さくらのVPSサーバで「rootパス不明」、「MySQLが起動しない(WordPressが死んでる)」「動作が不安定」という三重苦のサーバを依頼されて解決した時の話です。

スポンサーリンク

さくらのVPSサーバのrootパスをリセットする

さくらのVPSサーバは一般的なレンタルサーバよりも自分の裁量で何でも行う事ができて便利です。
しかし、サーバのROOTパスワードを忘れてしまった場合には、管理画面からの強制再起動や、WordPressやMySQLAdminなどのインストール済みWebアプリの操作、その他開いているポートからのリモートアクセス以外の事ができなくなってしまいます。
そんな時、管理画面からROOTパスワードをリセットする方法が(少し面倒ですが)あります。

※CentOS7がインストールされている時の方法です。

さくらのVPS管理画面に入り、「コンソール」>VNCコンソールを押し、コンソール画面を立ち上げます。
画面右上にある「Ctrl + Alt + Del」をクリックします。
確認ダイアログが出るのでOKを押します。
サーバが再起動されます。色々出てきますのでPress any key to continue.が出てきたら何かキーを押します。
「Booting CentOS ~ in * seconds…」と表示されているのですぐになにかキーを押します。

CentOS Linux(3.10.0-693.5.2.e17.x86_64) 7 (Core)

というようなカーネルの一覧が出てきたら、使っているカーネルを上下キーで選んでeを押します(Rescureとかでなく、バージョンが一番新しいもの?)。
エディタが開くので下を押して進み、「ro」の文字をバックスペースで削除します。
削除した所に「systemd.debug rw init=/bin/bash」と入力します。
「console=ttyS0,115200n8r LANG=C」をバックスペースで削除します。
「Ctrl + X」で再起動します。
コンソールのプロンプトが「bash-.#」であれば、シングルユーザモードでログイン完了しています。
passwdでパスワードを変更します。
exitを入力してシングルユーザモードを終了します。
(参考:CentOS6 CentOS7

サーバの調査

ようやくサーバに入れたのでサーバの状態の調査です。
WordPressのバックアップスケジュールが失敗しているという情報もあったので、容量逼迫を疑いました。dfコマンドで確認すると、やはり100%使用率。
どのディレクトリが容量を食っているのかduコマンドで絞り込みます。
「du -sm」で対象のディレクトリの総容量をMバイト単位で表示させます。
MySQLのDBディレクトリは容量は小さかったのですが、varが数十GBを占めており、更に絞り込んでいくとwordpressのuploadディレクトリのバックアップ用ディレクトリに行き当たりました。
1つのバックアップが10GB近くあり、これが原因だったようです。バックアップの古いものを削除し、(全て復旧したあとで)WordPress管理画面でバックアップのローテーション数を2個まで減らしました。
サーバの動作不安定はこれで治るでしょう。

MySQL(MariaDB)の復旧

どうやらディスクが一杯なのが原因でMySQLが落ちており、以降の再起動も失敗していたようです。
MySQLを立ち上げようとしたのですが、何度やっても失敗してしまいます。

service mysqld status

すると

Redirecting to /bin/systemctl status mysqld.service
 ● mariadb.service - MariaDB 10.1.37 database server
    Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Drop-In: /etc/systemd/system/mariadb.service.d
            mqmigrated-from-my.cnf-settings.conf
    Active: failed (Result: exit-code)

といったエラーが出ているようです。
ログには「[ERROR] Can’t init tc log」というメッセージが。ディスクいっぱい状態でMySQLが落ちて再起動しようとすると、このファイルが初期化失敗してぶっ壊れてしまうようです。

rm -f  /var/lib/mysql/tc.log

をしてログファイルを削除し、MySQLを再起動。今度は成功しました!

まとめ

・rootパスはどこかにメモる。
・rootパスリセットはさくらに頼んでもしてもらえるらしいが有料らしい。
・WordPressで画像の多い記事を大量に書いてる場合はバックアップファイルサイズの増大ペースをチェックして、バックアップスケジュールをよく計画し、定期的に改善する。
・WordPressしか動かしてないならレンタルサーバでもいいかも?

1 Star2 Stars3 Stars4 Stars5 Stars (まだ投票されていません)
読み込み中...

コメント

広告ブロッカーを無効にしてください。

タイトルとURLをコピーしました