SQL Serverのライブバックアップ中はどうなりますか?


18

同僚の何人かは、SQL Serverデータベースがまだ実行されている間にバックアップできると言って驚いたのですが、それがどのように可能か疑問に思いました。SQL Serverがデータベースをオンラインのままバックアップできることは知っていますが、なぜそれが可能かを説明する方法はわかりません。私の質問は、これがデータベースにどのような影響を与えるかです。

バックアップの実行中にデータが(挿入、更新、または削除によって)変更された場合、バックアップにはそれらの変更が含まれますか、それともその後データベースに追加されますか?

ここではログファイルが重要な役割を果たしていると考えていますが、その方法はよくわかりません。

編集:ちょうどメモとして、私の場合は、SQL Serverエージェントを使用してデータベースをバックアップすることと、このプロセス中のデータベース変更の影響を伴います。

回答:


24

完全バックアップには、データとログの両方が含まれます。データについては、そのバックアップに単純にコピーするデータベースの各ページには、などであることがページを読み込み、現時点では。その後、バックアップメディアにすべての「関連する」ログを追加します。これには、少なくとも、バックアップ操作の開始時のLSNとバックアップ操作の終了時のLSN間のすべてのログが含まれます。実際には、バックアップの開始時にすべてのアクティブなトランザクションとレプリケーションに必要なログを含める必要があるため、通常はより多くのログがあります。完全なデータベースバックアップに関するいくつかの神話暴くを参照してください

データベースが復元されると、すべてのデータページがデータベースファイルにコピーされ、すべてのログページがログファイルにコピーされます。現時点では、データベースは互いに同期していない可能性のあるデータページイメージが含まれているため、一貫性がありません。しかし、通常の回復が実行されます。ログにはバックアップ中のすべてのログが含まれるため、リカバリの終了時にはデータベースは一貫しています。


1
素晴らしい投稿とリンクは良い例を提供するのに役立ちました。ありがとう。
ショーンハワット

とても簡潔。よくやった!
アレン

2

バックアップ中に、データベースのスナップショットが作成され、そのスナップショットからバックアップのためにデータが読み取られます。実際のライブDB操作は、バックアップ操作に影響しません。


1

質問で示唆したように、コピー中にデータベースに変更が加えられる可能性があるため、単にコピーすることはできません。

データベースの機能を認識し、OS機能を介して「スナップショット」を取得するか、ユーティリティを使用してデータベースを安全な状態(mysqlを使用する場合はmysqldumpなど)でダンプできるエージェントで実行する必要があります。

そうしないと、破損する可能性のあるバックアップが取得され、復元するまでそれを知ることができません。JoelとJeffは最近StackOverflowポッドキャストで少し話したと思う。

そして、あなたはログファイルが重要であるという点で正しいです。ジャーナル/ログファイルが実際のデータと同期していない場合、ファイルを復元すると破損します。

結局のところ、データベースの安全な状態を使用して、データベース対応エージェントまたはスナップショットアプリケーション、またはデータダンプ中に更新を妨げずにデータベースを適切にフックしてデータをドロップする方法を知っているアプリケーションを介してバックアップをバックアップします。結果のファイルを作成します。


これはより一般化された答えですが、最初はSQL Serverエージェントを使用して作業していたことを含めるのを忘れていました。この方法にもかかわらず、このプロセス中に何が起こっているのかについてのいくつかの良い詳細をまだ提供していたので、とにかく助けました!ありがとう。
ショーンハワット

0

これを行うには非常に多くの方法があります(一般的に、MSSQLが通常行う方法はわかりません)単に、データベースをファイルにダンプしながら、ダンプの完了後にコミットされるログファイルに変更を追加する-ファイルシステム固有のスナップショットを利用するWindows上のVSSなどの機能。


また、ゼロからMVCCベースのデータベース(PostGresなど)は、その一連の動作を利用して、バックアップの実行中に開始されるトランザクションによるデータファイルの更新を許可しながら、バックアップのコピー元のスナップショットを維持できます。いくつかの方法がありますが、使用される方法は、データストレージエンジンのコア設計とトランザクション処理機能に依存します。
デビッドスピレット

-1

コピーのみのバックアップと呼ばれるものを使用できます。オンライン中にデータベースに影響を与えない


コピーのみのバックアップとは何ですか?どのように実行されますか?考慮すべき注意事項はありますか?そのような獣が実行されている例へのリンクはありますか?回答を送信する場合は、2〜3年以内に誰かがこの質問に答えた場合に役立つ情報を想像してください。
rnxrx 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.