私は、2億2500万件を超えるレコードを含む非常に大規模なデータベース (250 GB 以上) を扱っています。データベースは、その巨大なサイズのため、扱いが困難です。このデータベースは読み取り専用です。
より高速なハードウェアの導入を検討していますが、いずれにしてもデータベースを操作する最も効率的な方法を見つけようとしています。このデータベースはマスター データベースから夜間に更新する必要があり、ダウンタイムは最小限に抑える必要があります。マスター データベースはサード パーティによって保守されています。
データベースを更新する最善の方法を見つけようとしていますが、うまくいきません。差分バックアップとトランザクション ログ バックアップを調べましたが、それらを適用するには、まず完全バックアップを復元する必要があります。これは私のケースでは差分バックアップの目的を完全に無効にします。マスター データベースで完全バックアップを実行してから、完全バックアップを毎晩復元する方が、完全バックアップを復元して差分バックアップを毎晩適用するよりも速いため、単に完全バックアップを毎晩復元する方が速いからです。
フル バックアップを 1 回 (または月に 1 回) 実行し、その後は元のフル バックアップに基づいて、相互に構築される何らかの増分バックアップを適用するだけのソリューションを望んでいました。これにより、最初のフル バックアップが完了したら、増分バックアップを夜間のみ適用するため、ダウンタイムを最小限に抑えることができます。各「増分」バックアップの後に、インデックスを再構築するだけです。このようなソリューションは、まだ見つけられていません。
私は現在、データベースのバックアップとパフォーマンスについて徹底的に調べており、MSDN を常に読んでいますが、この解決策は選択肢ではないようです。最後の手段として質問しようと思いました。きっと、夜間に復元を行うのは非現実的である大規模なデータベースを管理している人もいるはずです。
何か提案はありますか? これほど大きなデータベースを扱ったことがないので、パフォーマンスに関するページへの提案やリンクも歓迎します。
答え1
あなたが説明しているのはログシッピングただし、ログ バックアップではなく「差分」バックアップを使用したいと考えていますが、これがこのアプローチの問題です。ログ シッピングでは、データベースを 1 回復元し、ログ バックアップがプリンシパル サイトで作成されるときにそれを適用するため、最初の完全バックアップ復元をやり直す必要はまったくありません。数時間ごとにログ シッピングを適用し続けるだけで、読み取り専用コピーが使用できるようになります。
答え2
おそらくこの第三者は、複製変更を毎晩移行するには?
答え3
実稼働データベースとマスター データベースおよび読み取り専用データベースが格納されている環境へのアクセスが許可されている場合、SQL2005 / SQL2008 Enterprise エディションを実行している同じデータベース インスタンスにデータベース スナップショットを使用できます。これにより、データベースの即時の読み取り専用コピーが提供されます。
http://msdn.microsoft.com/en-us/library/ms175158.aspx
実稼働環境へのアクセスが許可されていない場合は、環境にミラー化されたデータベースを設定するかどうか尋ねることができます。これによりスナップショットも実行できるようになりますが、エンタープライズ エディションのソフトウェアとライセンスが必要になります。
エンタープライズを使用していない場合、またはライブに近いデータが必要な場合は、トランザクション レプリケーションが別のオプションになります。
復元に時間がかかりすぎる場合は、バックアップ ディスク圧縮ソフトウェアを購入することを検討してください。これにより、通常、保持されているデータの種類に応じて、バックアップ/復元が数倍高速化されます。
答え4
Remus が最初に答えましたが、ログ シッピングのシナリオは次のように機能します。
- 第三者が1/1にデータベースの完全バックアップを送信します
- スタンバイ モードで norecovery でデータベースを復元すると、データベースは読み取り専用 (dbos のみ) に設定されます。
- サードパーティが1/2にトランザクションログのバックアップ(または複数)を送信し、それをデータベースに適用して変更を最新の状態にします。バックアップが適用されると、データベースは再びスタンバイモードになり、読み取り専用になります。
- 毎日このプロセスを繰り返す