>> データベースエンジンで違うバックアップの仕組み |
|
前回の講座で、バックアップ対象となるファイルについて考えてみましたが、その中でも一番重要とされるのが、バックアップがないと復旧できないデータベース関連のユーザー・ファイルです。
しかし、ひと口にMySQLと言っても他のデータベースとは異なり、複数のデータベース・エンジンから選択が可能です。その中でも、NetVaultの対応するエンジンは、MyISAMとInnoDBとなっています。今回はまず、もっとも基本的で初期インストール時にMySQL自体の管理情報も保存されているMyISAMから考えて見ましょう。
>> MyISAMのデータ形式 |
|
例えば、XOOPS Cubeを標準インストールした場合には、/var/lib/mysql/xoops以下にデータベースが格納されています。
mysql> use xoops Database changed mysql> show tables; +-----------------------------+ | Tables_in_xoops | +-----------------------------+ | xoops_avatar | | xoops_avatar_user_link | | xoops_banner | ~中略~ | xoops_xoopsnotifications | +-----------------------------+ 44 rows in set (0.00 sec)show tablesにより、xoopsデータベース以下にある、テーブルの状況を確認すると、デフォルトでは44ありますが、例えばこの時、ディレクトリの中のファイルを確認すると、各テーブル毎にファイルが3種類存在していることがわかります。
[root@lamp ~]# cd /var/lib/mysql/xoops/ [root@lamp xoops]# ls db.opt xoops_avatar.MYD xoops_avatar.MYI xoops_avatar.frm xoops_avatar_user_link.MYD xoops_avatar_user_link.MYI xoops_avatar_user_link.frm xoops_banner.MYD xoops_banner.MYI xoops_banner.frm ~以下略~
それぞれ、以下のような意味を持つファイルとなっていますが、データベースが稼動している状態では無理矢理これらのファイルをバックアップすることはできません。
- 拡張子 MYD : 表データファイル
- 拡張子 MYI : 索引データファイル
- 拡張子 frm : 表定義ファイル
>> MyISAMのバックアップ方法 |
|
MyISAM形式の場合には、データがテーブル単位で分かれているため、それぞれのテーブル単位でのロックを行うことで、各テーブルへの書き込みを一時的に停止し、その間にバックアップするようになっています。バックアップ中も他のテーブルへの書き込みはロックされません。またバックアップ対象のテーブルについても読み取りは可能になっています。
具体的なNetVaultのMySQL APM内部における動きは次のようになっています。
- MySQL APMの設定に基づいてmysqlにて接続
- show databases like '%'によりすべてのデータベースの存在を確認
- 各データベースに接続後、show tables like '%'により、テーブルの存在を確認
- 存在を確認したテーブルに対して、順次、下記動作によりバックアップを実行
a) show table status like 'テーブル名'により状況を確認
b) LOCK TABLES 'テーブル名' READにより、リード専用になるようロック
c) FLUSH TABLE 'テーブル名' によりテーブルのフラッシュ
d) 対象テーブルのファイルをバックアップ
e) テーブルのロックを解除
この4の動作を順次実施することにより、複数のテーブルが存在していても、一貫した操作方法でバックアップができるようになっています。
>> MySQL APMを使用したバックアップ |
|
MySQL APMでは初期設定後は、ほとんどの設定を直感的に行うことができるようになっています。
MySQLのサービス名のアイコンの下に、すべてのデータベース、そしてさらにドリルダウンすることで、各テーブルが表示され、バックアップの指定はデータベース単位で行うことができます。
特にデータ量が多くない場合には、すべてのデータベースを指定してバックアップしておけば特に問題ありません。
もし、ここでテーブルがない空のデータベースをドリルダウンした場合は、テーブルがありませんというダイアログが表示されます。
この状態でバックアップを実行すると、バックアップ・ジョブのログ内に、やはりテーブルがありませんというメッセージが表示され、ジョブ自体は終了しますが、警告付になってしまいます。標準で用意されているtestデータベースなどは必要なければdropしておくことをお勧めします。
次に、バックアップ・オプションですが、大きく分けて、下記2つの項目しかありません。
- Unrecognized table action - バックアップ対象にできない形式のテーブルがあった場合のバックアップのステータスについて設定します。前述のとおり、様々なデータベース・エンジンに対応しているため、時として他の形式が含まれている可能性があり、デフォルトではその場合失敗としますが、問題を認識してあえてバックアップできるところはしたいというようなケースでは、他の項目を選んで使用することも可能です。
- Fail (デフォルト): バックアップジョブを失敗として終了させる
- Ignore with Warning: バックアップジョブを警告付で正常終了にさせる
- Ignore Silently: バックアップジョブを完全な正常終了にさせる - Full Backup と Binary Log Backup - こちらの項目で、バックアップの種類を指定します。デフォルトでは、Full Backupになっており、このバックアップだけでリストア可能です。Binary Log Backupは、Full Backupと組み合わせて使用します。特に、Point in Timeバックアップに関連してくるため、その内容の回で解説します。
以上のように、MySQL APMを使用すると、バックアップ対象ファイルとわずかなオプションを指定するだけで、バックアップすることが可能です。その他のタブの項目は通常のNetVaultによるファイル・システムのバックアップと違いはありません。
最終的に、バックアップしたデータは、リストア時に表示されますが、その際にはテーブル名だけでなく、各テーブルを構成するファイル群もドリルダウンにより表示することができるようになっています。
>> 次回は・・・ |
|
次回は、MyISAM形式のデータベースのバックアップ後の、リストア方法等について確認していきます。