24時間365日のシステムでデータベースのメンテナンスを実行する方法


2

私は、パートタイムDBAの役割を引き継いだソフトウェア開発者です。私は、SQL Server 2008上の小規模で大容量の24時間365日のデータベースによるアプリケーションバックエンドを担当しています。

DBには他にもデータがありますが、重要な部分は50GB、7.5Mの行テーブルであり、ピーク負荷時に1秒あたり100Kのリクエストを処理します。これは99%以上の読み取りトラフィックですが、書き込みは一定であり、必要です。

メンテナンスウィンドウなしで定期的なメンテナンスを実行できる必要があります。インデックスの再構築、古いデータを削除するジョブ、Windows Update、またはハードウェアのアップグレードを言ってください。私が見たアドバイスのほとんどは、「メンテナンスウィンドウの作成」に沿っています。私は感情に感謝していますが、別の方法があることを願っています。この問題が解決する場合、新しいハードウェアを購入したり、データベース、クライアント(Webサービスサーバーのセット)、およびアプリケーションコード(ADO.NET + ASP.NET)の多くを変更することができます。

私は、ウォームスペア(または3番目のサーバー)を使用してメンテナンスを行い、それを運用環境に "スワップ"するという方針に沿って考えていました。
1現在のトランザクションログを含むバックアップを復元して、スペアを同期します。
2メンテナンスタスクを実行します。3予備サーバーに接続するようにクライアントを再構成します。既存の接続は1分程度で終了します。4予備サーバーが本番サーバーになりました。

残っている問題は、新しい実稼働サーバーがメンテナンスの実行にかかった時間が古くなっていることです。ステップ2と3の間で、元の実稼働サーバーを変更のキューに入れ、それらをスペアにマージする方法はありますか?他のアイデアはありますか?


どのSQL Serverですか?ENTERPRISEには、そのための特別な規定があります-使用中にインデックスを再構築する機能(つまり、再構築中に古いインデックスをオンラインに保持するなど)。
トムトム

現在は2008 Standard Editionです。Enterpriseにアップグレードしてオンラインで再構築することもできますが、それはその特定の問題のみを処理します。私はまだ他の深刻なメンテナンス作業で小川にいるだろう。
可溶性魚

1
ただの質問ですが、これが24時間年中無休のマシンで、オフにできない場合、カーネルセキュリティアップデートをどのようにインストールしますか?MSサーバーが再起動せずにカーネルのメモリ更新を実行できることを知りませんでした。
Unix Janitor

Eneterpriseにはさらにいくつかの規定があります。基本的に、24時間年中無休で稼働する場合は、エンタープライズが必要です。...その他のすべてのehterpriseツール。
トムトム

@ user37899-重要な更新または構成変更のための現在のソリューションは、基本的には更新中はアプリケーションを無効にすることです。その間、毎分お金を失います。したがって、より良い方法を求めています。
可溶性魚

回答:


3

SQL 2008が提供する高可用性機能について読む必要があります。ホワイトペーパーについては、こちらを参照してください。カバーするシナリオが多すぎます。

[石鹸箱に登る]

ただし、メンテナンスウィンドウは必要です。これは毎週または毎月を意味するものではありませんが、改善のためにサーバーを停止する必要がある場合があります。長期間(年)にわたって100%操作可能な、または必要なシステムはほとんどありません。メンテナンスウィンドウの目的は、ダウンタイムを最小限に抑え、予測可能にすることです。そのため、ビジネスはそれに対処できます。メンテナンスウィンドウをすべて一緒に却下することをお勧めします。クラスタリングなどに移行して構成を変更した場合、移行中にわずかなダウンタイムが発生しますが、それはわずかではあります。[クライミングバック]

いくつかのオプション:

  1. ミラーリング
  2. 分類
  3. ログ配布
  4. オンラインインデックス操作
  5. オンラインインデックス操作とパーティションテーブルを使用したアーカイブ
  6. ピアツーピア複製

私の2セント。


1
変更または改善のためにサーバーを停止する必要があることを理解しています。これが私があなたの助けを探している主な理由です。オフライン中に別のサーバーでアプリケーションを実行できるアーキテクチャを見つけたいと思っています。私は非常に大きなサイトがそれを成し遂げるのを知っていますが、どのように私は知りません。
可溶性魚

2

2回目のミラーリングを行い、本当に 24時間年中無休で必要な場合は、会社が予算を増やして、これを支援するDBAまたはコンサルタントを含める必要があることを指摘します。

何回もミラーリングすることで、24時間365日のニーズを「十分に」解決できます。


0

このデータベースはインフラストラクチャの重要な部分であるため、とにかくウォームスペアをお勧めします。それにより、メンテナンスも可能になります。


この状況では、ウォームスペアよりもクラスター化セットアップの方が便利ではないでしょうか?
-iPaulo

元のコメントから、現在のセットアップには冗長性はまったくないようです。おそらく、クラスタ化されたセットアップの方が良いでしょう、あなたは正しいです。
ダンアンドレッタ

クラスターを忘れてください。クラスターには24時間年中無休の重大な問題があります。たとえば、クラッシュによりデータベースが起動できなくなる場合があります。最初に、ミラーリング監視サーバーでミラーリングが必要です。その後、カスタリングを決めることができます。最初のクラスタリングは無視です。サーバーがクラッシュし、データベースを使用するのを見てきました。
トムトム

@iPaulo-それは可能性があり、それは私たちが検討していることの1つですが、それを正しく理解していれば根本的な問題を実際には解決しません。@Dan-自動的な冗長性はありませんが、ログシッピングによるウォームスペアにより接近できます。障害が発生した場合、数分ダウンします。これは無料ではありませんが、衰弱させるものでもありません。
可溶性魚
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.