私は、パートタイム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の間で、元の実稼働サーバーを変更のキューに入れ、それらをスペアにマージする方法はありますか?他のアイデアはありますか?