
弊社には、近々新しい運用サーバーに移行する予定の SQL Server 2005 データベースがいくつかあります。これらのデータベースは大規模ではありませんが、ダウンタイムをできるだけ短くして移行するのは難しいほどの大きさです。
最初に移動される 3 つのデータベースは、最も重要なため、サイズが 5 GB、9 GB、25 GB です (ログなしのデータのみ)。
可能性はいくつかありますが、私は本格的な DBA ではないので、ここにいる人たちの中にもっと良いアイデアや提案を持っている人がいるかもしれないと思いました。私たちが思いついたのは次のことです。
* Create a full backup, move the file and restore the backup.
これは可能ですが、データベースがかなり大きいため、データベースを移動する必要があるため、システムのダウンタイムがかなり長くなります (数時間)。
今日バックアップを作成して復元し、実際の移動時に差分復元を行うことは可能ですか? これまでのところ差分復元で見つかった問題は、差分復元が常に完全バックアップに追加されるため、ファイルのサイズが同じままになり、サーバー間でファイルを移動することによるダウンタイムが短縮されないことです。
これを「さらに」複雑にするために、新しいデータベースはミラーリングするように構成されますが、古い環境はミラーリングされません。つまり、プライマリ サーバーで差分バックアップを復元する必要があります (これで問題が発生するとは思いませんが、質問しておこうと思いました)。
ダウンタイムを最小限に抑えながらこれを行う別の簡単な方法や優れた方法があれば、もちろんそれもぜひ教えてください。
StackOverflow のユーザーは、「ミラーリングを使用してこれを行うことができます」と簡単に返信しました。詳細には触れませんが、新しい原則でミラーを作成し、そのミラーを強制的に古い運用サーバーから引き継ぐことができると思います。次に、ミラーリングを無効にして、新しいミラー サーバーへのミラーリングを再度有効にします。
それはそのように機能するでしょうか?
答え1
私はこの種の移行を何度か行いました。私にとって最善の方法は次のとおりです。
完全バックアップ(データベース使用中)
トランザクション ログは n 分ごとにバックアップされます (n は完全なバックアップをコピーする時間によって異なります)
完全なバックアップを新しいサーバーにコピーし、リカバリなしでデータベースを復元します(
RESTORE....NORECOVERY
)トランザクションログをコピーして復元する(常にリカバリなし)
新しいデータベースがほぼオンラインになったら、古いデータベースを使用しているアプリケーションを停止し、最後のトランザクション ログのバックアップを作成し、それを新しいサーバーにコピーして、リカバリを使用して復元します。
これで、ダウンタイムをほとんどかけずに、新しいサーバーにデータベースが配置されます。
答え2
データベースのバックアップと移動に関しては、私は通常 30 GB のデータベースを 30 分以内にバックアップしています。現在のサーバーに接続された外部 USB ドライブにバックアップし、USB ドライブ経由で新しいサーバーに転送して復元する場合、数分の誤差はありますが、1 時間以上かかることはないと思います。
答え3
ポイントを述べてみます。
私が間違っているかもしれませんが、これが通常の方法でない場合は他の人に言わせてください。新しいサーバーにトランザクション レプリケーションを設定し、データベースを公開およびサブスクライブして、両方のデータベースを数秒未満の遅延で継続的に実行できます。
その後、クライアントから古いデータベースへの接続を閉じて、数秒待ちます。
レプリケーションを無効にして、新しいデータベースの使用を開始します。