バックアップと復元方法について説明します。「コールドバックアップ」と「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ベースでバックアップを取得できます。
# DB指定
mysqldump -uユーザ名 -pパスワード データベース名 > .dump.sqlファイル
# 全DB
mysqldump -uユーザ名 -pパスワード --all-databases > .dump.sqlファイル
復元は以下の通りです。
# DB指定
mysql -uユーザ名 -pパスワード データベース名 < .dump.sqlファイル
# 全DB
mysql -uユーザ名 -pパスワード < .dump.sqlファイル
パスワードを指定する場合、コマンドラインの履歴(ヒストリー)に残るので注意する必要があります。