条件

  • サーバAとサーバBの2台のサーバがある
  • SQLServer2000にはSP4が適用されている

手順確認

以下の手順を確認する。

  1. サーバAを使った業務を止める(データの更新が起きなくなる)
  2. サーバAからサーバBにデータベースを丸ごとコピーする
  3. サーバBを使って業務を行う
  4. サーバBを使った業務を止める(データの更新が起きなくなる)
  5. サーバBからサーバAへデータの差分コピーを行う

確認結果

そのものずばりのデータベースの差分バックアップとトランザクションログを使った差分バックアップの2つの方法があった。諸事情でトランザクションログを使う方法を採用しました。SQLServeに備わっている差分バックアップ機能が使いたいのであれば、下の参考URLにある別の記事を参照してください。

トランザクションログを使った差分バックアップの概要

差分はトランザクションログとして記録されている。従って、トランザクションログのリストアをすれば差分バックアップ・リストアが実現できる。
また、あるタイミングでトランザクションログを切り捨てる操作を行うと、トランザクションログが空になる。そして、切り捨てた後のDB編集履歴がトランザクションログに溜まっていく。

手順に従った具体的な方法

  1. 「2. サーバAからサーバBにデータベースを丸ごとコピー」する前にサーバAのトランザクションログを切り捨てておきます。
    backup log Northwind to disk='C:\temp\Northwind_ServerA_transactionlog' with init

    with initはファイルを上書きするという設定。
    これで、C:\temp\Northwind_ServerA_transactionlogというトランザクションログファイルが生成されます。また、ファイルに書き出した後でトランザクションログは自動的に切り捨てられます。

  2. 「5. サーバBからサーバAへデータの差分コピーを行う」でサーバBの差分バックアップファイルを作成します。
    backup log Northwind to disk='C:\temp\Northwind_ServerB_transactionlog' with init

    これで、C:\temp\Northwind_ServerB_transactionlogというトランザクションログファイル(=差分バックアップファイル)が生成されます。

  3. 先ほど作成した差分バックアップファイルをサーバAへコピーします。
  4. 差分バックアップファイルをサーバAへリストアします。
    restore log Northwind from disk='c:\temp\Northwind_ServerB_transactionlog' with recovery

    with recoveryは最後の差分バックアップファイルを適用し終わったたという意味。複数の差分バックアップファイルを適用するにはwith norecoveryを指定して何回もrestore logすればよいです。
    また、差分を適用するには差分開始前のデータベース内容がサーバAとサーバBで一致している必要があります。

参考URL

カテゴリー: 技術情報