このセクションでは、いくつかの種類のクラッシュ後にデータをリカバリできるようにするバックアップを実行するための手順について説明します。
オペレーティングシステムのクラッシュ
停電
ファイルシステムのクラッシュ
ハードウェアの問題 (ハードドライブ、マザーボードなど)
コマンド例には、mysqldump および mysql クライアントプログラム用の --user
や --password
などのオプションは含まれていません。 クライアントプログラムが MySQL サーバーに接続できるようにする必要に応じて、それらのオプションを含めてください。
データは、トランザクションと自動クラッシュリカバリをサポートする InnoDB
ストレージエンジンに格納されているとします。 さらに、MySQL サーバーはクラッシュ時に負荷がかかっているとします。 そうでなければ、リカバリは必要ないことがあります。
オペレーティングシステムのクラッシュや停電の場合、再起動後、MySQL のディスクデータを使用できるものと考えることができます。 InnoDB
データファイルにはクラッシュのために一貫したデータが格納されていない可能性がありますが、InnoDB
はそのログを読み取り、データファイルにフラッシュされていないコミット保留中のトランザクションやコミットされていないトランザクションのリストを見つけます。 InnoDB
はまだコミットされていないトランザクションを自動的にロールバックし、コミットされたものはデータファイルにフラッシュします。 このリカバリプロセスに関する情報は、MySQL エラーログによってユーザーに伝えられます。 次はログの抜粋の例です。
InnoDB: 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 データをリカバリする必要があります。これはバックアップがすでに行われていることを意味します。 それが確実に当てはまるようにするには、バックアップポリシーを設計し、実装します。