sql >> データベース >  >> RDS >> Mysql

MySQLデータベースの一般的な問題を修正する方法は?

    概要: この記事では、MySQLテーブルが破損したときに発生する可能性のある一般的なエラーのいくつかをリストします。また、MySQLデータベーステーブルの破損の背後にある考えられる理由についても概説します。この記事では、破損したテーブルを修正するためにできることと、MySQLデータベース修復ソフトウェアがテーブルおよび他のすべてのデータベースオブジェクト内のデータを回復するのにどのように役立つかについても説明しています。

    MySQLデータベースユーザーとして、次のエラーのいずれかが発生する可能性があります。

    • 「テーブルはクラッシュしたとマークされているため、修復する必要があります」
    • 「テーブルがクラッシュし、最後の修復に失敗しました」
    • 「テーブルtbl_nameは存在しません」
    • 「テーブルのキーファイルが正しくありません:「…」。修理してみてください」など

    これらは、MySQLテーブルが破損していることを示す警告サインです。

    MySQLデータベーステーブルの破損の原因は何ですか?

    MySQLデータベーステーブルの破損につながる可能性のある理由は次のとおりです。

    • ディスクサブシステム、ドライバー、コントローラーなど、MySQLで使用される基盤となるプラットフォームの問題。
    • システムの突然のシャットダウンまたはサーバーのクラッシュ
    • データベースへの書き込み中にMySQLプロセスが強制終了されます
    • ソフトウェアのバグまたはハードウェアの障害

    これらのMySQL破損エラーのいずれかに遭遇すると、テーブル内のデータにアクセスできなくなる可能性があります。破損したテーブルを修正するための解決策について話し合いましょう。

    MySQLデータベースの破損エラーを修正する方法

    データベースの更新されたバックアップがある場合は、バックアップからデータベースを復元して、アクセスできないテーブルデータを回復します。バックアップが利用できない場合は、以下の手順を実行して、破損したMySQLテーブルを修正し、データを回復します。

    注: MySQLデータベースとテーブルのバックアップを取り、修復および回復プロセス中のさらなる損傷を防ぎます。

    ステップ1:テーブルにエラーがないか確認する

    まず、データベーステーブルで破損エラーを確認する必要があります。 チェックテーブルを使用できます 破損したInnoDBおよびMyISAMテーブルを診断するコマンド:

    CHECKTABLEtbl_nameオプション;

    ここで、「tbl_name」を破損したデータベーステーブルの名前に置き換えます。そして、「オプション」を次のオプションのいずれかに置き換えます:QUICK、FAST、MEDIUM、EXTENDED、およびCHANGED。

    InnoDBおよびMyISAMテーブルのより高速な修復を実行します。行のスキャンをスキップして、誤ったリンクを探します 正しく閉じられていないMyISAMテーブルのみをチェックしてください。 InnoDBテーブルには適用しないでください。 最後のチェックが実行されてから閉じられていないMyISAMテーブルのみをチェックします。 InnoDBテーブルには適用しないでください。
    オプション 説明
    クイック
    高速
    変更
    行をスキャンして、削除されたリンクが有効かどうかを確認します。 MyISAMテーブルにのみ適用されます。
    拡張 MyISAMテーブルの各行のすべてのキーに対して完全なキールックアップを実行します。実行には長い時間がかかります。

    複数のテーブルの破損を確認するには、次のコマンドを使用します。

    CHECK TABLE tbl_name1、tbl_name2、tbl_name3オプション;

    注: CHECK TABLEコマンドは、MySQLプロセスが実行されている場合にのみ使用できます。ただし、プロセス/サーバーが実行されていない場合は、次の「myisamchk」コマンドを使用して、MyISAMテーブルの破損を確認できます。

    myisamchk[オプション]tbl_name…

    このコマンドは単一のテーブルをチェックします。

    次のコマンドを実行して、MySQLデータベース内のすべてのテーブルが破損していないかどうかを確認します。

    myisamchk /path/to/datadir/*/*.MYI

    myisamchkユーティリティはInnoDBテーブルでは機能しません。

    ステップ2:破損したテーブルを修復する

    注: myisamchkコマンドは、MyISAMテーブルにのみ適用され、InnoDBテーブルには機能しません。 Innodbテーブルの修復と回復については、ステップ3にスキップしてください。

    myisamchkユーティリティは、破損した(破損した)MyISAMテーブルの修復にも役立ちます。破損したテーブルを修復するためのユーティリティを使用するには、次の手順を実行します。

    1. 次のように入力してMySQLサービスを停止します:
    service mysqld stop

    cd / var / lib / mysql

    1. データベースが配置されているディレクトリに移動します。
    cd / var / lib / mysql / table_name

    myisamchk<表>

    1. 破損したテーブルを修復するには、TABLEを修復するテーブルの名前に置き換えて、次のコマンドを実行します。
    myisamchk –recover
    1. MySQLサービスを再起動します。
    service mysqld start

    ステップ3:InnoDBリカバリを強制する

    InnoDBテーブルの破損を修正するには、「innodb_force_recovery」を使用します オプション。このオプションを使用すると、バックグラウンド操作なしでInnoDBデータベースエンジンが強制的に起動され、テーブルをダンプできます。

    1. MySQL構成ファイル(my.cnf)を開き、[mysqld]セクションに以下を追加します。
    [mysqld]

    innodb_force_recovery =1

    service mysql restart

    値1でinnodb_force_recoveryを開始し、必要に応じて値を増やすことができます。 innodbリカバリを開始したら、MySQLサーバーを再起動してから、テーブルをダンプします。ただし、状況によっては、値を4から6に設定する必要がある場合があります。これにより、データが破損する可能性があります。

    注意! innodb_force_recovery =3以下の値でテーブルをダンプできる場合は、リカバリプロセスを安全に実行できます。ただし、innodb_force_recoveryを4より大きい値に設定すると、データ損失のリスクが伴います。

    1. データベースを起動できる場合は、次のmysqldumpコマンドを実行して、すべてのデータベースをSQLファイル(つまり、データベースを復元するためのすべてのステートメントを含むバックアップファイル)にエクスポートします。
    mysqldump –all-databases –add-drop-database –add-drop-table> mydump.sql
    1. MySQLサービスを開始し、DROP DATABASEコマンドを使用して、影響を受けるテーブルを含むデータベースの削除を試みます。データベースを削除できない場合は、MySQLサーバーを停止した後、以下の手順を実行してデータベースを手動で削除してみてください。
    cd / var / lib / mysql

    rm -rf

    1. 上記のコマンドを実行した後、[mysqld]の以下の行をコメントアウトして、InnoDBリカバリを無効にします。
    #innodb_force_recovery=…
    1. my.cnfファイルに加えたすべての変更を保存してから、サーバーを起動します。
    service mysqld start
    1. 手順2で作成したMySQLダンプ(バックアップファイル)からデータベースとテーブルを復元します。
    mysql -u user -p

    これらの手順を実行すると、MySQLデータベースとそのテーブルが復元されます。それでもデータが欠落している場合は、MySQLのステラリペアなどのプロのMySQLデータベース修復ソフトウェアを使用する必要があります。 データベースを復元し、そのデータを回復します。ソフトウェアは、データをそのまま維持して、InnoDBテーブルとMyISAMテーブルの両方を修復できます。 WindowsおよびLinuxシステムでのMySQLテーブルの修復をサポートしています。

    結論

    MySQLデータベーステーブルは、突然のシステムシャットダウン、サーバークラッシュ、ハードウェア障害、MySQLコードのバグなどが原因で破損する可能性があります。MySQLテーブルが破損すると、この記事に記載されているエラーが発生します。 「myisamchk」ユーティリティを使用するか、InnoDBリカバリを強制することで、破損したMyISAMテーブルの修復を試みることができます。ただし、MyISAMテーブルを修復し、InnoDBリカバリを手動で実行するにはかなりの時間がかかる場合があります。また、手動リカバリプロセスにより、データが失われる可能性があります。より良い代替手段は、MySQLソフトウェアにStellarRepairを使用することです。このソフトウェアを使用すると、元のデータに変更を加えることなく、MyISAMとInnoDBの両方のデータベーステーブルを修復できます。


    1. postgresqlでのn番目のパーセンタイル計算

    2. EssentialPostgreSQLモニタリング-パート1

    3. MySQLとPostgreSQLのHAProxy統計を理解する

    4. PERFMONを介したパフォーマンスカウンターの監視| SQLServerのパフォーマンスのトラブルシューティング-3