web-dev-qa-db-ja.com

複数のSQL Serverデータベースを移行する最良の方法は何ですか?

データベースサーバーを新しいサーバーに移行したい。現在、Windows Server 2008を備えたデータベースサーバーがあり、Windows Server 2012を備えた新しい別のサーバーに移行しています。

約50〜100のデータベースがあります。

クライアントに影響を与えずに(ダウンタイムなし)データベースサーバーを移行するための最良の方法は何ですか?

4
Tushar Maru

ゼロダウンタイム?を使用して、50〜100のデータベースを完全に新しいサーバーにコピーします。それが起こるとは思わない。移行について話す場合、計画的なダウンタイムは絶対的な必須です。

この場合、データベースのサイズに応じて、スクリプトを使用してこれを実行します。 PowerShellに習熟している場合は、すべてのデータベースをループしてバックアップを作成し、新しいサーバーのアクセス可能なストレージに保存できます。次に、新しいサーバーで、すべてのデータベースの復元のスクリプトを作成できます。

サーバーレベルの項目(ログイン、ジョブなど)を忘れないでください。これらもスクリプト化できますが、この特定の要件により、SSISは実際にveryを簡単にします。これらのサーバーレベルの項目をすべて実行するタスクがあります。

ダウンタイムが予想されない場合、クライアントはどのようにして要求を新しいデータベースサーバーにリダイレクトしますか?これにはいくつかの外部ソリューションがありますが、「ゼロダウンタイム」を約束するときに考慮すべき点があります。

3
Thomas Stringer

現在利用可能なハードウェアでダウンタイムを最小化するために使用できるオプションがいくつかあります。

最も重要なステップは、Upgrade Advisorを実行することです(SQL Serverのバージョンが新旧のサーバーと異なる場合)。

また、すべてのデータベースについて、最初にフルバックアップを実行します。何か問題が発生した場合に備えてください。

方法1:Log Shippping

  1. 古いサーバーと新しいサーバーの間でログ配布を設定します(おそらく1分ごと)。
  2. フェイルオーバーする場合は、最初にログ末尾のバックアップを作成してから、すべてのデータベースのログ末尾のバックアップを復元してから、新しいサーバーでデータベースを復元します。

  3. もちろん、事前に準備作業を行って、ログインやSQLエージェントジョブなどを作成できます。

方法2:データベースミラーリング

  1. 高パフォーマンス(非同期)のすべてのデータベースのミラーリングを作成し、ミラーサーバーでトランザクションがコミットされてからプリンシパルによって確認応答されるのを待つ場合のパフォーマンスのオーバーヘッドを回避します。

  2. フェイルオーバーする場合は、SYNCHRONOUSモード(高可用性モード)に変更してから、フェイルオーバーを開始します。処理中のトランザクションのみが中断されます。

これらの方法は、各テクノロジが達成できることの概要にすぎません。

アプリケーション/ユーザーを新しいサーバーに再ポイントする必要がある場合、常にダウンタイムが発生します。

注: Powershellベースのdbatoolsは自動化に役立ちます

0
Kin Shah