none
トランザクションログ容量の見積方法について RRS feed

  • 質問

  • 現在、SQLServer 2000で運用しているシステムを
    SQLServer 2008にマイグレーションする事になりました。

    現行のSQLServer 2000では、復旧モデルを”単純”で運用しているのですが、
    マイグレーションを機に、障害直前までリカバリできるよう、
    復旧モデルを”完全”に変更しようと計画しています。

    復旧モデルを変更するにあたり、トランザクションログの容量見積を行なう必要がありますが、
    現行システムでの出力容量の実績値を確認できれば、正確な見積もりが可能と考えています。

    現行が単純モデルでの運用であるため、トランザクションログのファイルサイズを見ても
    参考にならないため、困っています。

    出力容量を確認する良い方法があれば教えて頂けますでしょうか?

    (データベース上に出力量の累積値みたいなものを持っていれば、
    例えば日次で取得する事で見積の参考になるかなぁと勝手に思っています。)

    以上、よろしくお願いいたします。
    2010年2月12日 2:32

回答

  • 返信が遅れました。

    トランザクションログのバックアップファイルサイズを確認するよりは、日々のトランザクションログの物理ファイルサイズを確認したほうが良いような気がします。
    例えば、復旧モデルを完全に変更後、トランザクションログのバックアップを実行せずに、数日様子を見ることにより、拡張の推移(ベースライン情報) を確認することが出来ると思います。
    ※ パフォーマンスカウンタログ "SQL Server: Databases オブジェクト - Log File(s) Size (KB)/Log File(s) Used Size (KB) " が便利かもです。
    ※ 復旧モデル 完全の機能を有効にするためには、復旧モデルを完全に変更後、完全バックアップを実施する必要がございます。

    "単純" のままで、目安を見積もる方法については、思いつかないです。 すみません。(恐らくないです。)
    ただ、 復旧モデル "単純" 時の、現在のトランザクションログファイルサイズを確認することにより、移行対象の環境(SQL Server 2000) における アクティブなトランザクションの最大値は把握することが出来るのではないかと思います。

    • 回答としてマーク アライ 2010年2月18日 9:27
    2010年2月18日 2:48

すべての返信

  • 残念ながら、計算にて見積もる方法は無いと思います。
    また、SQL Server 2000 と SQL Server 2008 内部のシステムテーブルなどの構造が違うため、例え SQL Server 2000 環境上にて実績値を確認出来たとしましても、あくまで参考情報で、正確な見積もりは出来ないと思います。

    ご存知かとは思いますが、データベース復旧モデルをフルにした場合は、トランザクションログのバックアップを実施するまで、トランザクション情報が溜まり続けます。 そのため、トランザクションログのサイズは、実行されているトランザクション数、トランザクションログのバックアップを実施する間隔によって決まります。

    少しでも正確な見積もりを実施する必要があるのであれば、検証時、現在ご使用のSQL Server 2000 のデータベースを、SQL Server 2008 に移行した上で、手間はかかりますが、SQL Server 2000 にて実行されているクエリ (Insert,Update,Delete) と同等の量のクエリを実行すれば、ある程度 分かるかもしれません。

    話が変わりますが、データベース復旧モデルをフルにする運用にて大事なポイントとしては、トランザクションログのバックアップをどれくらいの間隔にて実施するかだと思っています。
    例えば、15分間隔にてバックアップを実施した場合、 サーバー障害が発生し、かつ 障害発生後に既存のトランザクションログのバックアップが実施できない場合においても、障害発生時から 15分前までの状態にリカバリすることが可能となります。
    そのため、最低 いつまでのデータに復旧させる必要があるのか、また 許容できるリカバリ時間をどれくらいに設定するのかという、リカバリ計画についても、ご検討されることをお勧めします。

    2010年2月12日 17:31
  • ご回答ありがとうございます。

    >残念ながら、計算にて見積もる方法は無いと思います。
    >また、SQL Server 2000 と SQL Server 2008 内部のシステムテーブルなどの構造が違うため、
    >例え SQL Server 2000 環境上にて実績値を確認出来たとしましても、
    >あくまで参考情報で、正確な見積もりは出来ないと思います。

    2008環境において、本番相当のトランザクションを発生させる事で、
    精度の高い見積もりが行なえそうな事が理解できました。
    ただ、準備に時間がかかってしまうため、
    まずは目安程度でも構わないので、2000環境での実績値を把握できればと考えています。

    もし復旧モデルが”完全”で30分ごとにトランザクションログバックアップ運用を行なっている環境の場合は、
    バックアップしたトランザクションログの一日分の総容量を何日か継続して取得する事で目安として考えても良いでしょうか?

    ※ 現行の運用を変更する事はリスクが高いため、実施しない方針ですが、
    ”単純”で情報を取得できない場合は、こういう設定であれば、取得可能というのを知りたいです。

    また復旧モデル変更による運用設計の考慮点について、アドバイスありがとうございます。
    参考にさせて頂きたいと思います。
    2010年2月15日 3:26
  • 返信が遅れました。

    トランザクションログのバックアップファイルサイズを確認するよりは、日々のトランザクションログの物理ファイルサイズを確認したほうが良いような気がします。
    例えば、復旧モデルを完全に変更後、トランザクションログのバックアップを実行せずに、数日様子を見ることにより、拡張の推移(ベースライン情報) を確認することが出来ると思います。
    ※ パフォーマンスカウンタログ "SQL Server: Databases オブジェクト - Log File(s) Size (KB)/Log File(s) Used Size (KB) " が便利かもです。
    ※ 復旧モデル 完全の機能を有効にするためには、復旧モデルを完全に変更後、完全バックアップを実施する必要がございます。

    "単純" のままで、目安を見積もる方法については、思いつかないです。 すみません。(恐らくないです。)
    ただ、 復旧モデル "単純" 時の、現在のトランザクションログファイルサイズを確認することにより、移行対象の環境(SQL Server 2000) における アクティブなトランザクションの最大値は把握することが出来るのではないかと思います。

    • 回答としてマーク アライ 2010年2月18日 9:27
    2010年2月18日 2:48