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
関連資料・記事