スマートコネクト マネージドサーバ

ユーザーサポートサイト>操作マニュアル>データベース関連>MySQL>データベースの修復

データベースの修復

データベースの修復方法

マネージドサーバでMySQLをご利用されている場合、何らかの要因でデータベースが破損する場合がございます。
その場合、以下の手順により復旧する場合がございます。

1.破損データベーステーブルの確認

WEBのエラーログに以下のようなログが表示されます。

[Sat May 25 00:00:00 2019] [error] [client 203.0.113.5] PHP Warning: mysqli_query(): (HY000/1194): Table ‘テーブル名’ is marked as crashed and should be repaired in /data/domain/41DA66FF-5F7F-11F5-A2F1-061A0C123456/html/wp-includes/wp-db.php on line 107

エラーログ等の内容を”is marked as crashed and should be repaired”などで検索するとこのようなエラーが表示されます。

2.データベースのチェック

エラーログなどで前項目にあるようなエラーが散見された場合、以下の手順でMySQLのチェックを行い以下のようなエラーが表示されればデータベースの修復が必要となります。

  1. コントロールパネルからWEBコンソールを開き、該当ドメインでSSH接続してください。
    WEBコンソールへのアクセスは以下をご参照ください。
    WEBコンソール
  2. 以下のコマンドを入力し、MySQLにアクセスしてください。

    mysql -p -u “ユーザ名” “破損DB名”エンターキー

    エンターキーを押しますとパスワードを聞かれますので、DBパスワードを入力しエンターキーを押してください。

  3. 以下SQLコマンドを入力し、エンターキーを押してください。

    check table “破損テーブル名”;

  4. 以下の様なエラー情報が散見される場合は、次項目のデータベース修復を行ってください。
+---------------------------+-------+----------+----------------------------------------------------------+
| Table                     | Op    | Msg_type | Msg_text                                                 |
+---------------------------+-------+----------+----------------------------------------------------------+
| データベース名.テーブル名  | check | warning  | Table is marked as crashed                               |
| データベース名.テーブル名  | check | warning  | 2 clients are using or haven't closed the table properly |
| データベース名.テーブル名  | check | error    | Record at pos: 555944 is not remove-marked               |
| データベース名.テーブル名  | check | error    | record delete-link-chain corrupted                       |
| データベース名.テーブル名  | check | error    | Corrupt                                                  |
+---------------------------+-------+----------+----------------------------------------------------------+
5 rows in set (0.04 sec)

3.データベースの修復手順

前項でエラーになっているデーブルがある場合、以下の手順でデータベースの修復を行ってください。

  1. 前項の1~2でデータベースにアクセスしてください。
    ※前項でまだセッションが残っている場合はそのまま以下のSQLコマンドを入力し、エンターキーを押してください。

    repair table “破損テーブル名”;

  2. 再度、前項のチェックを実施し、以下のような表示になれば、データベースが修復されております。
+---------------------------+-------+----------+----------+
| Table                     | Op    | Msg_type | Msg_text |
+---------------------------+-------+----------+----------+
| データベース名.テーブル名  | check | status   | OK       |
+---------------------------+-------+----------+----------+
1 row in set (0.00 sec)