私は、ディスクI / Oで大いに苦労している1.4TBのSQL Serverデータベースを持っています。私たちはすべての問題を解決する新しいSSDアレイをサーバーにインストールしました。データベースを移動する最良の方法について議論しているだけです。理想的には、ダウンタイムなしでそれを実行できれば、それが最善です。ただし、2日間のパフォーマンスの低下(データのコピー中など)と2時間のダウンタイムのどちらを選択するかは、後者の方が望ましい場合があります。
これまでのところ、私たちが考え出したソリューションは次のとおりです。
簡単なコピー。DBをオフラインにして、ファイルをコピーし、SQL Serverの場所を変更して、オンラインに戻します。大まかな数値では、これには5時間ほどかかると見積もられていますが、これは実際には許容できませんが、最も簡単な解決策です。
ブロックレベルのコピー。rsyncのようなユーティリティを使用して、DBの稼働中にファイルをバックグラウンドでコピーします。移行の準備ができたら、DBをオフラインにして、このユーティリティを使用して差分コピーを実行し、SQLサーバーで新しいファイルを指定してオンラインにします。ここでのタイミングは不明です。1.4TBの差分分析を実行してそれをコピーするのにどのくらい時間がかかるかはわかりません。もう1つの懸念は、ブロックレベルのコピーによって、SQL Serverがファイルを読み取り不可能な状態にして、時間を浪費することです。
SQLマイグレーション。新しいディスクに新しい1.4TB SQLデータファイルを作成し、他のすべてのファイルで自動拡張を無効にします。次に、他のすべてのデータファイルに対してDBBC SHRINKFILE(-file_name-、EMPTYFILE)を順番に実行します。すべてのデータが揃ったら、ある時点でスケジュールされたウィンドウを使用して、MDFファイルをSSDに移動し、他の未使用のファイルを削除します。ダウンタイムを最小限に抑えるので、私はこれが好きです。しかし、これにどれくらい時間がかかるか、またそれが実行中にパフォーマンスの低下を引き起こすかどうかはわかりません。
これをテストするための負荷とパフォーマンスの環境はありません。戦略がステージング環境で機能することは確認できますが、影響やパフォーマンスは確認できません。
don't know how long it will take to do a differential analysis of 1.4TB
少なくともそのデータを読み取るのにかかる限り。私は、rsyncのアイデアが何かを節約することはないと思います。rsyncは遅いネットワークに対処するために作られました。