オンライン・バックアップはRDBMSの機能だけでも実現できるが,処理性能の低下に配慮する必要がある。そのほかRDBMSの複製機能を利用する方法や,ディスク装置の「スプリット・ミラー」機能を使う方法もある。それぞれ解説しよう。

 ここでは,システムを止めないままバックアップするための手法を紹介する。特に,リレーショナル・データベース管理システム(RDBMS)のデータをオンラインでバックアップする方法について見ていく。ファイル・サーバーでオンライン・バックアップする際は,さほど難しくはない。開いているファイルがある場合に,それが閉じられるのを待つ,といった注意が必要なだけだ。

 RDBMSをオンライン・バックアップする手法は大きく分けて三つある。(1)ソフトウエアの機能だけでオンライン・バックアップする方法,(2)通常時は別サーバーにレプリケーション(複製)を取っておいてその別サーバーでバックアップを実行する方法,(3)ディスクのミラーリング技術を利用してバックアップする方法,である(図1)。

図1●主なオンライン・バックアップの手法<br>大きく分けて3種類ある。(1)ソフトだけでオンライン・バックアップする方法,(2)通常時は別のサーバーにレプリケーションしておき,別サーバーでバックアップを実行する方法,(3)ミラーリングしたディスクを切り離してバックアップする方法――である。バックアップ要件やコストで,最適な手法が決まる
図1●主なオンライン・バックアップの手法
大きく分けて3種類ある。(1)ソフトだけでオンライン・バックアップする方法,(2)通常時は別のサーバーにレプリケーションしておき,別サーバーでバックアップを実行する方法,(3)ミラーリングしたディスクを切り離してバックアップする方法――である。バックアップ要件やコストで,最適な手法が決まる
[画像のクリックで拡大表示]

 (1)は比較的安価に構築できるが,バックアップ終了後の性能低下に注意が必要だ。(2)はバックアップやリストアの方法に選択肢があり,システムの状況によっては性能面に注意すべきである。(3)はこれらの注意は必要無いが,(1)(2)より機器のコストが比較的高い。

 オンライン・バックアップの手法を見る前に,RDBMSのバックアップで一般的に注意する点を確認しておこう。RDBMSで管理するデータだけをバックアップしていても,ディスクが壊れた場合は元に戻すことができない。RDBMSが管理するシステム・ファイル類を同時にバックアップしておく必要がある。Oracle Databaseで言えば,システム表領域に置かれたテーブルなどである。また,障害が発生した直前までデータを戻したければ,RDBMSがデータをディスクに書き込んだ記録(ログ)も同時にバックアップしておく必要がある。こうした点は通常のバックアップでもオンライン・バックアップでも同様である。

ソフトウエアの機能を利用

 まず,特別なハードウエアを用いず,ソフトウエアの機能だけでオンライン・バックアップする方法を説明する。多くのRDBMSはオンライン・バックアップ機能を備えている。

 オンライン・バックアップを開始すると,指定したテーブルの領域などはオンラインから切り離される。このタイミングでテープにバックアップを取る。バックアップが終了すると指定したテーブルの領域などがオンラインとなり,バックアップ中に書き込みがあったデータは,ログを基に実行される。

 もし,バックアップ時間が長くかかり,その間の書き込み処理が多ければログも多くたまるため,オンラインに戻した時点の負荷が一気に高まることになる。オンライン・バックアップであったとしても,静的なバックアップの時間は短くした方がよい。

レプリケーション機能を活用

 ソフトウエアのオンライン・バックアップのように本番機に負荷をかけることを避けるには,バックアップ用サーバーを用意する方法がある。バックアップ用サーバーを用意し,バックアップ時にはオンラインと切り離す。その実装方法の一つが,RDBMSのレプリケーション機能の利用である。レプリケーション機能は,複数のサーバーがある場合,あるサーバーに対するデータの更新を,別のサーバーに自動的に反映する仕組みだ(図2)。

図2●レプリケーションでバックアップ用サーバーを利用する方法
図2●レプリケーションでバックアップ用サーバーを利用する方法
通常時にレプリケーション(複製)したデータを,バックアップするやり方は2つある。バックアップ中も複製を継続する方法としない方法だ。また,障害発生時のリストア方法も選択肢が2つある。バックアップ・データを本番機に戻すか,バックアップ機を本番機として稼働させるか,である

 通常運用では,本番機に対する更新処理を,バックアップ機に反映するように設定しておく。バックアップを開始する時点では二つの選択肢がある。一つは,いったんレプリケーションを切り離し,バックアップを開始する方法。もう一つは,レプリケーションを継続したまま,オンライン・バックアップを実行する方法である。

 レプリケーションを切り離した場合,バックアップ時の処理は高速になる。その代わり,バックアップ終了後にレプリケーションを再開した際,それまでの処理が一度に開始されるため,一般に本番機の負荷も急に高まる。レプリケーションを継続したままバックアップ機からバックアップを実行した場合,レプリケーション再開時でも負荷は重くならないが,一般にバックアップの処理は遅くなる。この選択は,データ量や,バックアップの時間帯におけるデータの更新頻度で決まってくる。一般に,データが多く更新頻度が高いほど,レプリケーションを再開するときの負荷が重くなる。

 さらに,リストア時においても二つの方法がある。一般的には,バックアップ機に取ったデータを本番機に戻す手法を採る。ただ,レプリケーション機能を使えば,バックアップ機を本番機として稼働させることも可能である。バックアップ機を本番機の代わりに使った上で,本番機側を再度立ち上げて使うには,双方向のレプリケーションを設定する必要がある。

 そのほか,ディスクのミラーリング技術を用いた「スプリット・ミラー」がある。ディスク製品のコストがかかるが,レプリケーションのようなパフォーマンスに関する注意点などが無いため,運用面での苦労が少ない。

 基本的な方法は,(1)データをミラーリングするボリュームを二つ以上持ち,(2)バックアップ時にそのうち一つを切り離し,(3)そのボリュームを使ってテープにバックアップする,というもの。再度接続した際には,またミラーリングが開始される(図3)。

図3●スプリット・ミラーを利用したオンライン・バックアップの例
図3●スプリット・ミラーを利用したオンライン・バックアップの例
ディスク・システム上に「A」と「B」の2つのボリュームを用意する。通常時は,AとBは同一の内容である。バックアップ時にAとBを切り離し,Bのみをバックアップに利用する。サーバーに負担をかけることなく,バックアップできる。Bを保存しておけば,高速なリストアにも利用できる