MySQL 資料一覧

リストアの方法

2007/12/19更新

対応バージョン: 5.0.51

リストアはその目的に応じていろいろな方法があるが、ここでは代表的なものを示す。

テーブルのリストア

ある特定のテーブルについて、前回バックアップ取得時点までのリストアを行う場合はまずそのテーブルを再作成した後に全データをロードすればよい。

# mysql <DB> < <テーブル定義ファイル>
# mysql <DB> -e "LOAD DATA INFILE '<データファイル>' INTO TABLE <対象テーブル>;"

例) test.petテーブルをリストアする

# mysql test < pet.sql
# mysql test -e "LOAD DATA INFILE '/tmp/pet.txt' INTO TABLE pet;"

データベース全体のリストア

サーバダウンからの復旧

カーネルクラッシュやデータベースサーバの強制終了のような場合、データベースサーバを再起動すれば自動的にデータベースが復旧する可能性が高い。

(ログファイル)

071218 19:20:05  mysqld started
071218 19:20:05  InnoDB: Started; log sequence number 0 43655
071218 19:20:05 [Note] Recovering after a crash using mysql-bin
071218 19:20:05 [Note] Starting crash recovery...
071218 19:20:05 [Note] Crash recovery finished.
071218 19:20:05 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
Version: '5.0.51-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution

(*) ストレージエンジンはInnoDBとする。

自動的に復旧しない場合、次項のバックアップファイルからのリストアが必要となる。

ファイルシステムクラッシュからのリストア

ハードウェア障害等でファイルシステムがクラッシュしたような場合は自動的に復旧しないと考えられるのでバックアップファイルからのリストアが必要となる。

# mysql < <バックアップファイル>

さらにこのバックアップファイル以降のデータはインクリメンタルバックアップとしてログファイルに記録されているので、続けて以下の操作を行って直近の整合性が取れている状態までリストアする。

尚、この例ではバックアップファイル以降のインクリメンタルバックアップは以下の2ファイルとする。

# cd /usr/local/mysql/var
# mysqlbinlog mysql-bin.000007 mysql-bin.000008 | mysql

関連資料・記事