バックアップ(mysqldump, コールドバックアップ)

バックアップと復元方法について説明します。「コールドバックアップ」と「mysqldumpを利用したSQLベースのバックアップ」の方法があります。

MySQLのデータベースファイル

DBを作成するとmy.iniファイルdatadirで指定したディレクトリ配下にDBディレクトリが作成されます。
作成されるファイルは指定されたDBエンジンによって異なります。

データベースファイル

ファイル名 DBエンジン 概要
テーブル名.frm MyISAM
InnoDB
テーブルのカラム構成など、テーブル構造のデータを格納します。
DBディレクトリ配下に作成されます。
テーブル名.MYD MyISAM テーブルの実データを格納します。
DBディレクトリ配下に作成されます。
テーブル名.MYI MyISAM インデックスの実データを格納します。
DBディレクトリ配下に作成されます。
ibdataX InnoDB テーブルの実データを格納します。
my.iniファイルの「innodb_data_home_dir」で指定したディレクトリ配下に作成されます。
ib_logfoleX InnoDB トランザクションログを格納します。
my.iniファイルの「innodb_log_group_home_dir」で指定したディレクトリ配下に作成されます。

MyISAM

テーブル毎にデータファイルが作成されます。DBディレクトリ内にある『frmファイル』、『MYDファイル』、『MYIファイル』をコピーするだけでバックアップできます。

InnoDB

テーブル毎に『frmファイル』のみ作成します。レコードとインデックデータは、『ibdataXファイル』に格納します。1つの『ibdataXファイル』内に複数のInnoDBテーブルが格納されます。バックアップするには、『frmファイル』と『ibdataXファイル』、『ib_logfileXファイル』のコピーが必要です。

※設定によっては、InnoDBでもテーブル毎にデータファイルを作成することができるようです。

コールドバックアップ

コールドバックアップの手順です。

1. mysqld停止
2. データベースファイルのコピー
3. mysqld起動

mysqldump

mysqldumpを利用するとSQLベースでバックアップを取得できます。

mysqldump -uユーザ名 -pパスワード データベース名 > .dump.sqlファイル
mysqldump -uユーザ名 -pパスワード --all-databases > .dump.sqlファイル

復元は以下の通りです。

mysql -uユーザ名 -pパスワード データベース名 < .dump.sqlファイル
mysql -uユーザ名 -pパスワード < .dump.sqlファイル

パスワードを指定する場合、コマンドラインの履歴(ヒストリー)に残るので注意する必要があります。