このセクションでは、クラッシュなどで、リカバリが必要にあるデータのバックアップ手順について説明します。クラッシュとは次に示す事柄です。
オペレーティング システムのクラッシュ
停電
ファイルシステムのクラッシュ
ハードウェアの問題 (ハード ドライブ、マザーボードなど)
例示のコマンドには、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 データのリカバリを行います。つまり、このときにはすでにバックアップを取っていることが必要です。このような場合を回避するためには、バックアップのポリシーをデザインしなければなりません。(次のセクションを参照のこと。)