• 締切済み
  • すぐに回答を!

SQL Serverの復旧モデルについて

SQL Serverの復旧モデルについてご教授願います。 (質問が分かりにくいかもしれませんが、ご容赦ください。。。) 現在、あるシステムで 復旧モデルが「フル」であるDBがあります。 しかし、トランザクションログのバックアップをとっていないため、 ログファイルが肥大化し、当該DBを格納しているディスクドライブ(C)を 逼迫している状況です。 これを機に、復旧モデルを「シンプル」に変更し、 ログファイル肥大化を防ごうという方針で話が進んでいます。 そこで、「シンプル」した場合、以下の点についてを確認したいと思います。  ○障害発生時の復旧は最後にデータをバックップした時点までである。   (データは、毎日フルでバックアップ)    ⇒「シンプル」の場合、ログのサイズが、全体のログファイルの70%に達した場合は      チェックポイントが発生し、ログが切り捨てられるというのを聞いたのですが、      これは「ログが全く残らない」ということでよろしいでしょうか?      たとえば、10/1に最後にデータバックアップができ、      10/2に新たにデータ更新等があったとします。      その過程で、ログ量が全体の70%に達した場合は10/2更新分のログも切り捨てられ      その後障害が発生した際には、10/2更新分のデータは復旧できない      という認識で間違いないでしょうか? 説明足らずな箇所が多大に含まれているかと思いますが ご教授よろしくお願いします。     

共感・応援の気持ちを伝えよう!

みんなの回答

  • 回答No.1

こんにちは。 バックアップの取得直後にしか復元できません。 例として記載いただいたケースでは、 チェックポイントが発生するかどうかにかかわらず、 10月1日のバックアップ取得時点にしか復元できません。 単純復旧モデルはトランザクションログのバックアップを行えないため、 トランザクションログにしか残っていないデータは一切復元できません。 また、念のためチェックポイントの発生についても回答します。 チェックポイントは通常、ログの使用率とは無関係に定期的に発生します。 その定期実行に加えて、使用率のが発生条件として定義されていて、 70%になった場合に実行されます。 ログはチェックポイントの実行ごとに切り捨てられますので、 定常的に切り捨てが行われていることになります。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • SQL-Server トランザクションログの肥大化

    初めまして。 稼働中のシステム保守において問題が発生しています。 早急に解決したいのでお力をお借りしたいです。 稼働中サーバー(SQL-Server2008)にてトランザクションログが肥大化しております。この手の問題はネットで検索すると解決方法が出ているので実行してみました。 まずは…ログファイルの圧縮。 ManagementStudioより操作をGUIで行いましたが、処理自体が一瞬で完了してしまいLDFファイルを見ても圧縮前と何も変わっておりません。 続いて…ログファイルのバックアップ バックアップすることでログファイルの切り捨てができるとの事で、同様にManagementStudioよりバックアップを実行してみました。かなり処理に時間が掛かるようでしたが、30分程待ったところ(進捗20%)でエラーが発生し、空き容量が足りないのでバックアップに失敗したようです。 160GB程残っていますが、これでも容量不足とは…。 上記のような事態に陥った場合にどうするのが賢明でしょうか? ちなみに通常はメンテナンスプランにより、1日1回完全バックアップを取って保存しています。 ログファイル自体はバックアップを取っていませんでした。(必要性が理解できなかったもので…) 稼働中システムに問題が発生した場合は基本的には前日のデータに戻すような対応をする契約ですので、復元時点は厳密にN時間前等を指定する必要性がない為、ログファイル自体はあまり必要ではないという認識で良いのでしょうか? また今後、定期的にログファイルのバックアップを取るにしても、ログファイルのバックアップ容量が大きい為、Nヶ月分残すような運用をする場合、従来のデータバックアップに加えてログファイルのバックアップが加算され200GB程度のHDDでは追いつかないのですが、ログファイルのバックアップは上書きしていき、データの完全バックアップのみNヶ月分残すというような運用でも問題なく復元できるのでしょうか? 以上、3点質問してしまいましたが、どなたかご回答していただけると幸いです。 よろしくお願い致します。

  • トランザクションログからの復旧について。

    PostgreSQLのバックアップについて質問です。 24時間稼動しているPostgreSQLのバックアップを1日1度pg_dumpコマンドでとって、復旧時に使用しておりますが、完全に復元する方法がわかりません。 例えば1日の途中にデータが破損した場合、前日までのデータは pg_dumpで復旧できますが、その後のデータが破損する直前までを WALを使ってどのように復旧させるのでしょうか。 /usr/local/pgsql/data/pg_xlog/の直下に"000000070000006D"という名前のファイルはあるのですが、そのログを使ってRedoするやり方がわかりません。 更にトランザクションログのチェックポイントを1時間に1回と設定したりしてログ日付・時間の名称で保存の後次の日には新しい名称で ログをとりたいのですが、そのようなことはできるのでしょうか。

  • SQL Server 2008を用いたデータベースリカバリについて2点

    SQL Server 2008を用いたデータベースリカバリについて2点教えてください。 1.SQL Serverを構成している「システムデータベース」と「ユーザデータベース」ですが、   例えば、「ユーザデータベース」が壊れてリカバリを行うことになった際、   ユーザデータベースだけ戻せばデータベースは復旧できるのでしょうか?   システムデータベースもあわせて戻さないと戻りませんか?   トランザクションログの用いて更新直前にまで戻す必要はありません。 2.データベースをバックアップしている最中に、そのバックアップ対象のデータベースに   更新がかかった場合、バックアップデータはどうなるのでしょうか?   更新内容も反映されるのか?それともバックアップが始まったときのものだけが   バックアップできて更新内容は反映されないのか?   そもそも更新を始めようとすると排他がかかって勝手に更新させないとかあったりするのでしょうか? 調べがつかず困っております。 有識者のご回答をよろしくお願いいたします。

  • SQL Server 2000の物理ファイルデータ破損からの復旧について

    こんにちは。アべです。 SQL Server 2000の物理ファイルデータ破損からの復旧について アドバイスを頂きたいと思い、登校させて頂きました。 経緯 データベースサーバがOS毎、緊急停止し、故障しました。 DBサーバのファイルを他のサーバに接続して復旧をかけると 下記のようなエラーになり困っております。 現在は、バックアップもない状態であり、どうしても mdfファイルとldfファイルから復旧をかけたいと考えております。 何か他にやったほうがいい復旧手順や オプションはルのでしょうか? 何かアドバスがあればご教授をお願い致します。 壊れたところ以外のデータでも復旧できると助かります。 存在するファイルは、mdfファイルとldfファイルのみで、 バックアップありません。 すみませんが、宜しくお願い致します。 ↓やって見たこと アタッチを2000、2005(SP3)、2008(SP1)で実施してみましたが、失敗しました。 EXEC sp_attach_db @dbname = N'HOGE', @filename1 = N'F:\SQLData\HOGE\HOGEBACKData.mdf', @filename2 = N'F:\SQLData\HOGE\HOGEBACK_log.LDF' メッセージ 824、レベル 24、状態 6、行 1 SQL Server で、一貫性に基づいた論理 I/O エラーが検出されました: 正しくないページ (必要な署名: 0xaaaaaaaa、実際の署名: 0x3ee6da2a)。このエラーは、ファイル 'F:\SQLData\HOGE\HOGEBACK_log.LDF' のオフセット 0000000000000000 にあるデータベース ID が 0 のページ (0:0) の 読み取り 中に発生しました。SQL Server エラー ログまたはシステム イベント ログ内の別のメッセージで詳細情報が報告されることもあります。このエラー状態は深刻で、データベースの整合性を損なう可能性があるので、すぐに解決する必要があります。完全なデータベース一貫性確認 (DBCC CHECKDB) を実行してください。このエラーには多くの要因があります。詳細については、SQL Server Books Online を参照してください。 ↓ログをリビルドで復旧もやってみましたが、これも駄目でした。 CREATE DATABASE HOGE ON PRIMARY (FILENAME = 'F:\SQLData\HOGE\HOGEBACKData.mdf') FOR ATTACH_REBUILD_LOG ファイル アクティブ化エラー。物理ファイル名 "D:\DATA\SQLDATA\HOGEBACK_log.LDF" が正しくない可能性があります。 データベースが明確にシャットダウンされなかったので、ログを再構築できません。 メッセージ 1813、レベル 16、状態 2、行 1 新しいデータベース 'HOGE' を開けませんでした。CREATE DATABASE は中止されます。 以上

  • SQLServer2000-トランザクションログ

    SQLServer2000を使用しています。 復旧モデルをシンプルで運用しているのですが、トランザクションログが 数G程度まで肥大化していまいます。 シンプルにも関わらずトランザクションログがここまで肥大化してしまう 原因がわからず、困っております。 原因や対処法をご教授けないでしょうか。 宜しくお願いします。

  • 【SQL Server2005】mdfファイルが壊れた後のトランザクションログバックアップ

    OS:Windows Server 2003、DB:SQL Server 2005 Developer Edition を使用しています。 データファイル:test.mdf、ログファイル:test_log.ldfでtestデータベースを構成後、SQL Serverサービスを停止し、test.mdfファイルの名前を変更、test.mdfが壊れたものと仮定します。 その後、SQL Serverサービスを起動すると、testデータベース上にmdfファイルが見つからないエラーが発生します。 この状態でトランザクションログを救出するため、SQL Server Management Studioでトランザクションログバックアップを実行させます。 しかし、この際、右クリックのメニューからバックアップを選択することができず、トランザクションログバックアップができません。 この状態でトランザクションログバックアップを行うにはどのようにすればよいのでしょうか。 どなたかご存知の方がいらっしゃれば教えてください。

  • Serverの復旧について。

    Server2012の環境で運用していたとします。 もしServer本体に不具合が発生し、本体が故障しすぐに復旧できない場合、是正処置に詳しい方いらっしゃいますでしょうか。 なお、初期状態のServer代替機はございます。 バックアップデータと代替機Serverがあれば、一時的に、不具合が、発生する前の状態に(インストールしてあるソフト含む)復旧できるかアドバイスお願いします。

  • SQL Server2005 トランザクションログの圧縮ができない

    SQL Server2005でトランザクションログをバックアップ後、下記コマンドで圧縮を行いましたが、 DBCC SHRINKFILE (N'*****' , 1000) 下記メッセージが表示されてファイルサイズが圧縮されません。 「ログ ファイル 2 (*****) を圧縮できません。すべての論理ログ ファイルが使用中です。」 TRUNCATEONLYで実行しても同様のメッセージが出て圧縮できません。 DBCC SHRINKFILE (N'*****' , 0, TRUNCATEONLY) 現在トランザクションログファイルは100GBと巨大になっています。 バックアップにより中身は99%が未使用になっているのに物理ファイルを小さくできなくて困っております。 何か解決策はありますでしょうか?

  • OracleにおけるH/W障害によるリカバリ

    Oracleデータベースのバックアップ/リカバリについて検討しているのですが、 サーバ本体のH/W障害等により、 Oracleシステム(或いは、OS自体)が破壊された場合の リカバリ方法が見当つきません。 Oracleにおける各データ(表領域や制御ファイルなど)に障害が起こった場合は、 ・各表領域データファイル ・制御ファイル ・アーカイブRedoログ のオンラインバックアップにより対処できるということは分かってます。 しかし、Oracle自体が起動できないときは、 例えば、予備のサーバ(DBデータの同期は一切無し、 全く新規のサーバと考えてください)で復旧したいとき、 どのように対処したらよろしいのでしょうか? 上記のオンラインバックアップでは復旧できないのでしょうか? また、Export/Importによる論理バックアップで対処できるのでしょうか?

  • SQLServer2000SP4のトランザクションログ削除方法

    DBをバックアップする際にトランザクションログを削除したいのですが、「データベースの保守計画」では、そのような設定はありません。そこで、「データベースの保守計画」後にトランザクションログを削除するSQLを流そうと考えているのですが、どのようなSQLかが分かりません。当サイトの過去ログを確認したところ BACKUP LOG [データベース名] WITH NO_LOG で削除可能とのことですが、全くトランザクションログは削除されません。削除方法を知っている方がおりましたら、教えてください。