このページは機械翻訳したものです。
このセクションでは、いくつかの種類のクラッシュ後にデータをリカバリできるようにするバックアップを実行するための手順について説明します。
オペレーティングシステムのクラッシュ
停電
ファイルシステムのクラッシュ
ハードウェアの問題 (ハードドライブ、マザーボードなど)
コマンド例には、mysqldump および mysql クライアントプログラム用の --user
や --password
などのオプションは含まれていません。 クライアントプログラムが MySQL サーバーに接続できるようにする必要に応じて、それらのオプションを含めてください。
データは、トランザクションと自動クラッシュリカバリをサポートする InnoDB
ストレージエンジンに格納されているとします。 さらに、MySQL サーバーはクラッシュ時に負荷がかかっているとします。 そうでなければ、リカバリは必要ないことがあります。
オペレーティングシステムのクラッシュや停電の場合、再起動後、MySQL のディスクデータを使用できるものと考えることができます。 InnoDB
データファイルにはクラッシュのために一貫したデータが格納されていない可能性がありますが、InnoDB
はそのログを読み取り、データファイルにフラッシュされていないコミット保留中のトランザクションやコミットされていないトランザクションのリストを見つけます。 InnoDB
はまだコミットされていないトランザクションを自動的にロールバックし、コミットされたものはデータファイルにフラッシュします。 このリカバリプロセスに関する情報は、MySQL エラーログによってユーザーに伝えられます。 次はログの抜粋の例です。
Press CTRL+C to copyInnoDB: Database was not shut down normally. InnoDB: Starting recovery from log files... InnoDB: Starting log scan based on checkpoint at InnoDB: log sequence number 0 13674004 InnoDB: Doing recovery: scanned up to log sequence number 0 13739520 InnoDB: Doing recovery: scanned up to log sequence number 0 13805056 InnoDB: Doing recovery: scanned up to log sequence number 0 13870592 InnoDB: Doing recovery: scanned up to log sequence number 0 13936128 ... InnoDB: Doing recovery: scanned up to log sequence number 0 20555264 InnoDB: Doing recovery: scanned up to log sequence number 0 20620800 InnoDB: Doing recovery: scanned up to log sequence number 0 20664692 InnoDB: 1 uncommitted transaction(s) which must be rolled back InnoDB: Starting rollback of uncommitted transactions InnoDB: Rolling back trx no 16745 InnoDB: Rolling back of trx no 16745 completed InnoDB: Rollback of uncommitted transactions completed InnoDB: Starting an apply batch of log records to the database... InnoDB: Apply batch completed InnoDB: Started mysqld: ready for connections
ファイルシステムのクラッシュやハードウェアの問題の場合、再起動後、MySQL ディスクデータを使用できないものと考えることができます。 これは、ディスクデータの一部のブロックが読み取り不可能になったため、MySQL が正常な起動に失敗することを意味します。 この場合、ディスクを再フォーマットするか、新しいディスクをインストールするか、または根本的な問題を修正する必要があります。 さらに、バックアップから MySQL データをリカバリする必要があります。これはバックアップがすでに行われていることを意味します。 それが確実に当てはまるようにするには、バックアップポリシーを設計し、実装します。