Cachéを停止せずにバックアップを行いたいです。どのような方法がありますか?

Cachéを停止しないバックアップ方法は、3種類あります。

① 外部バックアップ
② オンライバックアップ
③ レガシー並行外部バックアップ

各詳細については、以下ドキュメントをご参照ください。
バックアップ方法について


それぞれの特徴について、簡単に解説します。

① 外部バックアップ

外部バックアップでは、SANシステムの機能を利用して、データベースファイル(CACHE.DAT)のスナップショットを作成する間だけ、データベースへの書き込みを停止させます。
スナップショット作成中は、データベースへの書き込みは停止されますが、ユーザ・プロセスによるメモリ内の更新は引き続き実行できます。

しかし、スナップショット機能がなく、バックアップ対象のデータベースを、退避エリアにコピーするような場合、CACHE.DATのファイルサイズが大きければ大きい程、コピーに時間がかかります。

コピーに時間がかかれば、データベースへの書き込み停止時間も長くなります。また停止時間が長時間に及ぶことで、ユーザからの更新量も増え、データベースキャッシュが一杯になる事も予測され、その結果、ユーザプロセスが停止してしまいます。

データベース書き込み停止状態が、長時間に及ぶ事が予測できるような場合は、③のレガシー並行外部バックアップ を利用したほうが、Cachéの書き込み停止時間を短くできます。

② オンラインバックアップ

オンラインバックアップでは、データベース内でデータに割り当てられているブロック全てがバックアップされます。

オンラインバックアップ中も、データベース内のブロックが更新されることがあるため、更新が継続する限り、繰り返し更新ブロックのバックアップを行います。

最終的には、完全なバックアップを取る必要があるため、必ずどこかの時点で静止状態を作る必要があります。

このためオンラインバックアップでは、データベースへの書き込みを停止する状態が、何度か続きます。

データベースへの書き込み停止については、①の外部バックアップと同様で、ユーザ・プロセスによるメモリ内の更新は引き続き実行できます。

しかし、オンラインバックアップの場合、バックアップ対象のデータベース容量が大きければ大きいほど、バックアップにかかる時間は長くなるため、「書き込み停止」合計時間が長くなります。

できるだけ、Cachéの書き込み停止時間を短くしたい場合には、①の外部バックアップ、または、③のレガシー並行外部バックアップ を利用します。

③ レガシー並行外部バックアップ

レガシー並行外部バックアップは、Cachéのユーティリティを利用して、CACHE.DATのスナップショットの作成(または、バックアップエリアへの退避)と、オンラインバックアップの差分バックアップを組み合わせたバックアップ方法です。

方法は、以下の通りです。

================================================================
(1) バックアップ開始のフラグをデータベースにセットし、
(2) Cachéのデータベースファイル「CACHE.DAT」をコピーし、
(3) そのコピー時間中に変更されたデータに対して、Caché差分バックアップを実行する
================================================================

Cachéが書き込み停止状態になるのは、(3)の差分バックアップの最終処理のみですが、バックアップ対象のデータベース容量は、CACHE.DATコピー中に変更されたデータであるため、データベース全体をオンラインバックアップをするのに比べると、停止時間は極端に短くなります。

実際の利用方法は以下の通りです。
(詳細については、ドキュメントもご参照ください。バックアップのリストアについて


===============================================================
(1) バックアップ開始のフラグをデータベースにセット
 

set ^ClearOK=$$CLRINC^DBACK("QUIET")


(2) OS上で CACHE.DATをコピー

(3) 外部バックアップユーティリティを使用したことを示すための実行
 

set x=$$BACKUP^DBACK("","E","dirty backup","","","")


(4) Caché差分バックアップを実行
 

set x=$$BACKUP^DBACK("","I","incremental",bckfile,logfile,"QUIET","Y","Y","Y","")


===============================================================

上記、Caché内の処理をルーチンやクラスメソッド化し、バッチ処理と組み合わせることで、運用できます。
添付ファイルは、Caché2009.1以降で動作するサンプルルーチンです。ご参照ください。

レガシー並行外部バックアップで利用する^DBACKルーチンについて詳細は、以下ドキュメントをご参照ください。
^DBACKルーチンについて
 


関連トピック: Cachéのバックアップにはどのような方法がありますか?
関連トピック:データベースをバックアップする際のCachéの停止時間をできるだけ短くしたいのですが。
添付ファイル: 参考資料(zip)

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る