- - PR -
タイムスタンプがないデータの差分抽出について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-10-12 10:34
あるシステムのデータ移行で、ちょいと困った問題があります。
システムの切替日に全データを一括して移行できればよいのですが、 データが大量にあるためサービス停止の許容時間3時間以内で、 全データを移行するのは不可能です。 そこで、特に大きなデータを5日前に移行しておき、その後、切替日 までの間、差分だけを毎日移行したいと考えました。 ところが、そのデータにタイムスタンプや更新日時を表す項目がない ことが判明し「差分が取れないじゃないか!」となり... ここで質問です。 SQL Serverでタイムスタンプや更新日時を表す項目がない場合、 ある時点から現時点までの間に追加・更新されたデータだけを抽出する ことは可能でしょうか。(CSVで出力) ご存知でしたら教えて下さい。 正直言って「無理だろ・・・」と思っていますが、あまり詳しくないので、 お尋ねする次第です。宜しくお願い致します。 |
|
投稿日時: 2006-10-12 11:53
5日前に移行したデータをDBにインポート。プライマリキーを比較して、5日前のデータに含まれていないデータを抽出すれば良いです。・・・けど、素直に全データをインポート&エクスポートするほうが早い予感。
なので、そのほかの方法を・・・ 1.トランザクションログを利用してデータベースをインポートする。もちろん新旧のサーバーのトランザクションログに互換性がある事が前提ですけど。 2.レプリケーションの機能を使って、切替日前から同じ状態に保っておく。もちろん旧データベースがレプリケーションに対応しているのが前提ですけど。 3.ストアドプロシージャを登録して、データに対して行われた操作をCSVファイルなどに出力する。もしかしたら、旧データベースのパフォーマンスが著しく低下するかも。 4.十分な停止時間を確保できる日まで、切り替え日を伸ばす。もしかしたら、永遠に切り替えできないかも。 |
|
投稿日時: 2006-10-12 13:33
甕星さま、ご指導ありがとうございます。
>5日前に移行したデータをDBにインポート。プライマリキーを比較して、 >5日前のデータに含まれていないデータを抽出すれば良いです。・・・ >けど、素直に全データをインポート&エクスポートするほうが早い予感。 → 同感です。 >1.トランザクションログを利用してデータベースをインポートする。 >もちろん新旧のサーバーのトランザクションログに互換性がある事が前提ですけど。 → 調査検討してみます。(実現性あり) >2.レプリケーションの機能を使って、切替日前から同じ状態に保っておく。 >もちろん旧データベースがレプリケーションに対応しているのが前提ですけど。 → 調査検討してみます。(実現性低い) >3.ストアドプロシージャを登録して、データに対して行われた操作をCSVファイル >などに出力する。 >もしかしたら、旧データベースのパフォーマンスが著しく低下するかも。 → 直感的にこれは難しいと思われます。(旧DB負荷大) >十分な停止時間を確保できる日まで、切り替え日を伸ばす。 → 停止時間は3時間以内 ・・・ これは上層部からの御達し。 現実的には6時間まではOKかなと。・・・ ありがとうございました。 |
|
投稿日時: 2006-10-12 14:12
差分バックアップを使用してしまうというのはどうでしょう?
一旦全データバックアップを取得する 移行先にnorecoveryで復元 翌日後、差分バックアップを取得 移行先にnorecoveryで復元 。。。。。。。(繰り返し) 最終日、差分バックアップを取得 移行先にrecoveryで復元 未テストなのでなんともいえませんが、途中の日で移行先がDownしたり DatabaseのServiceが停止したとき、どうなるかが、ちょっと不明です。 ちなみに五日前ってのは取り込み時間が、五日かかるってことですか? どの方法を選択するにしても一日で済むなら、差分の移行も一回(計二回) で済むとおもいますが、、、 |
1