none
システムDBと作成したDBのバックアップタイミングを揃える必要があるのではないか RRS feed

  • 質問

  • msdnなどを参照すると、システムDB(masterなど)と、作成したDB(testDBなど)のバックアップを実行するタイミングは、
    非同期で各々スケジュールすれば良いようにみえます。

    しかし、oracleでいう制御ファイルにあたる情報が、システムDBにあるとすると(下記、URL)
    http://www.microsoft.com/japan/sqlserver/2005/prodinfo/compare/fororacle/sqlserver_01_chap2_02.mspx

    トランザクションログがどこまで適用されたか、トランザクションログの切捨てはどこまで実施してよいか等の情報が、
    システムDB上にあるのではと思います。

    すると、システムDBと作成したDBの、バックアップタイミングは揃える必要があるように思います。(かつ、リストアするときは、全て
    一緒に戻す必要がある。)

    正確にタイミングを揃えることは、できなさそうなので、
    ・CHECKPOINTを、作成したDBで実行。
    ・作成したDBをバックアップ。
    ・システムDBをバックアップ。
    を続けて実行することで、できるだけ、同タイミングに近づけることができるように思います。

    いかがでしょうか。

    2009年7月10日 10:58

回答

  • こんにちは、nagino です。

    > トランザクションログがどこまで適用されたか、トランザクションログの切捨てはどこまで実施してよいか等の情報が、
    > システムDB上にあるのではと思います。
    ありません。
    トランザクションログ内にあります。

    > すると、システムDBと作成したDBの、バックアップタイミングは揃える必要があるように思います。(かつ、リストアするときは、全て
    > 一緒に戻す必要がある。)
    ありません。
    ただし、ログイン等インスタンスレベルの情報に関してはシステム DB に記録されていますので、それらに変更があった場合はシステム DB もあわせて復元する必要があります。

    SQL Server では、トランザクションログに記録する各処理毎に LSN(Log Sequence Number) という一意な番号を振っています。
    LSN は、データファイルのページと、トランザクションログと、両方に記録されています。
    この LSNと、チェックポイント、コミット等の情報を元に、復元時にロールフォワード(REDO)、ロールバック(UNDO)すべき内容を特定します。
    そのため、データファイルとトランザクションログのみでリストアが行えます。


    MCITP(Database Developer/Database Administrator)
    • 回答としてマーク さび 2009年7月12日 8:35
    2009年7月10日 13:16
  • master データベースには、ユーザー情報、データベースの配置情報などを保持しているため、ユーザー情報(Windows ログイン/SQL ログイン)を追加、新たなユーザーデータベースを追加、もしくは、SP、修正モジュールを適用する前に、バックアップを実施されたら良いと思います。

    Oracle と SQL Server の大きな違いは、Oracle は1インスタンス、1データベースですが、SQL Server は、1インスタンス、複数データベースを保持できる点ですかね。

    • 回答としてマーク さび 2009年7月12日 8:47
    2009年7月11日 2:37

すべての返信

  • こんにちは、nagino です。

    > トランザクションログがどこまで適用されたか、トランザクションログの切捨てはどこまで実施してよいか等の情報が、
    > システムDB上にあるのではと思います。
    ありません。
    トランザクションログ内にあります。

    > すると、システムDBと作成したDBの、バックアップタイミングは揃える必要があるように思います。(かつ、リストアするときは、全て
    > 一緒に戻す必要がある。)
    ありません。
    ただし、ログイン等インスタンスレベルの情報に関してはシステム DB に記録されていますので、それらに変更があった場合はシステム DB もあわせて復元する必要があります。

    SQL Server では、トランザクションログに記録する各処理毎に LSN(Log Sequence Number) という一意な番号を振っています。
    LSN は、データファイルのページと、トランザクションログと、両方に記録されています。
    この LSNと、チェックポイント、コミット等の情報を元に、復元時にロールフォワード(REDO)、ロールバック(UNDO)すべき内容を特定します。
    そのため、データファイルとトランザクションログのみでリストアが行えます。


    MCITP(Database Developer/Database Administrator)
    • 回答としてマーク さび 2009年7月12日 8:35
    2009年7月10日 13:16
  • master データベースには、ユーザー情報、データベースの配置情報などを保持しているため、ユーザー情報(Windows ログイン/SQL ログイン)を追加、新たなユーザーデータベースを追加、もしくは、SP、修正モジュールを適用する前に、バックアップを実施されたら良いと思います。

    Oracle と SQL Server の大きな違いは、Oracle は1インスタンス、1データベースですが、SQL Server は、1インスタンス、複数データベースを保持できる点ですかね。

    • 回答としてマーク さび 2009年7月12日 8:47
    2009年7月11日 2:37
  • ご回答ありがとうございます。

    トランザクションログ自身に、どこまで、トランザクションログを反映したかの情報があるのですね。
    勉強になりました。

    1インスタンス、複数DB
    複数DBは、個々にバックアップリストアできるのですから、確かに、システムDBに情報を持っているのはおかしいですね。
    ご指摘受けるまで、気づきませんでした。。

    ありがとうございました。
    2009年7月12日 8:46