web-dev-qa-db-ja.com

SQLサーバー(2000および2005)データベースをバックアップするにはどうすればよいですか?

現在、ソフトウェアを使用してMSSQL 2000および2005データベースをバックアップし、ファイルをテープに毎晩コピーしています。データベースのサイズは14〜16Gbおよび500Mbです。

SQLサーバーはデータベースをファイルにバックアップできるので、バックアップファイルを作成するようにSQLサーバーをスケジュールしてから、これらのファイルをテープにバックアップする方がよいでしょうか。また、この方法を使用すると、最後のバックアップ以降に完了したトランザクションのログを何らかの方法で作成して、データベースを再作成し、追加のトランザクションを適用することができますか?

6
Swinders

SQLServerのネイティブバックアップ機能を使用しない理由は実際にはありません。それは素晴らしく、トランザクションログを理解し、必要な機能のほとんどを提供します。 (サードパーティのSQL Serverバックアップソリューションは、Microsoftが公開しているAPIと連携し、通常は暗号化と圧縮のサポートを提供するため、優れています。圧縮は、ディスクスペースを節約するだけでなく、通常、バックアップと復元の時間を短縮します。)

そうですね... SQLServerでバックアップを行うことをお勧めします。

また、必ず定期的なトランザクションログのバックアップを行ってください。 (15分以内に実行することをお勧めします-定期的なログファイルのバックアップは、ログファイルを無駄のない/平均的な状態に保つのに役立ちます 1 何らかの理由で、サーバーがクラッシュしたときにエンドユーザーは常に不機嫌になります最後のログファイルまたは完全/差分バックアップ以降の過去x時間のすべての作業をやり直します。)次に、冗長性の目的で、robocopy、syncback、ファイルシステムレプリケーションなどを使用して、これらのバックアップのコピーを別の場所に移動し、保護します。データセンターなどでハードウェア/ディスクがクラッシュまたは起動します。

詳細とアイデアについては、次の2つの無料ビデオをご覧ください。

http://www.sqlservervideos.com/video/backup-options

http://www.sqlservervideos.com/video/sqlbackup-best-practices/

[ 1 ] [SQL Server Magazine:ストレージパフォーマンスの最大化]

2

注:SQL Server(すべてのエディション)での私の最大のバグベアは、トランザクションログのバックアップです。

SQLデータベースの夜間およびトランザクションログの完全バックアップを30分ごとに実行し、ディスク(別のサーバー、別のSAN)に、日付がスタンプされたファイル(かなり単純なSQLスクリプトとSSIS)を作成します。

このスクリプトは、「restore.sql」スクリプトも作成して、最後の完全バックアップとその日付までのすべてのトランザクションログを復元します。

次に、2日以上経過したファイルを圧縮し、30日以上経過したファイルを削除します(ただし、月末のバックアップはアーカイブに保存します)。このドライブをオフサイトで複製します(大規模なサイトと大規模なWAN接続)の間に200マイルあるのは幸運です。)

次に、これをテープにバックアップします。 (ベルト、ブレース、その他のブレース!主に政治的な理由で)

私たちは多くのSQL Serverデータベースを実行しており、商用ツールは高すぎるか、または単にお金を稼ぐことができません。しかし、小規模なインストールにはRedGate SQLBackupをお勧めします

2
Guy

私はこれらの指示がより好きです: http://www.sqldbatips.com/showarticle.asp?ID=27

1
djangofan

現在、データベースMDFおよびLDFファイルをテープにバックアップしているということですか?データベースがオフラインである限り(つまり、データベースのデタッチまたはSQLサービス)、これで問題ないと思います。シャットダウン)。ただし、データベースの使用中にこれを実行しようとすると、コピー中にファイルが変更されるため、バックアップが機能しなくなる可能性があります。

完全なSQLバックアップを作成し、それをテープに保存することは、私の経験でははるかに一般的です。

また、2番目の質問に答えるために、SQLServerはトランザクションログのバックアップをサポートしています。 Full Recovery Model に関するMSDNドキュメントは、読み始めるのに適した場所です。

1
codeulike

回答からわかるように、ほとんどの人は最初にディスクにバックアップし、次にテープにバックアップします。私がよく見た(そして推奨した)のは、サーバー自体にあるディスクにすぐにバックアップすることです(これは、SAN接続されたストレージである可能性があります。重要なのは、バックアップがこの即時バックアップが完了すると、中央のバックアップサーバーにコピーされます。ローカルで復元する必要があるものの即時コピーを保持します。そのバックアップサーバーでは、数日分のバックアップを保持します。前日または2日にロールバックする必要があり、テープを要求していません。もちろん、その中央バックアップサーバーをテープにバックアップします。これでリカバリ機能がカバーされます。

実行する必要のあるバックアップの種類に関して、すべてのトランザクションを回復し、ポイントインタイム回復と呼ばれるものを実行できるようにする場合は、データベースの回復モデルが完全回復に設定されていることを確認する必要があります。トランザクションログのバックアップと一緒に完全バックアップを実行する必要があります。復元するファイルの量を減らすために、差分バックアップを散在させることをお勧めします。これらすべてはオンラインの本でカバーされており、フォーラムの投稿で私たちの誰よりも良い説明を提供します。

LiteSpeedやRedGateのSQLバックアップなどのサードパーティ製品に関しては、以前はネイティブバックアップよりも高速でした。これは、SQLServerが使用しなかったAPIを使用しているためです。これはSQLServer 2000にも当てはまりましたが、それでも当てはまるかどうかはわかりません。ただし、暗号化と圧縮を行うため、DBのサイズを考えると検討する価値があります。

1
K. Brian Kelley

ディスクへのスクリプトバックアップは簡単で、非常に迅速に動作します。

osql -S [ip_of_server] -Q "BACKUP DATABASE [database_name] TO DISK = 'C:\ Backups\Backup.bak'"

UNCパスを使用して、ネットワーク上の別の場所にバックアップすることはできません(とにかくこれは良い考えではありません)。とにかく、バックアップをローカルで作成して暗号化して保存する方が簡単です。

ハードディスクは安価で、信頼性が高まっています。私たちはしばらく前にテープを取り除き、振り返ったことはありません。

1
nedm