非DBAからの質問:SQL Serverインスタンスをバックアップ/復元を介して別のサーバーに簡単にコピー/移動する方法は?


11

新しいサーバーができたので、既存のSQL Server 2008インスタンスを古いdbボックスからコピーする必要があります。

私は通常、.mdfとログファイルをコピーしてそれらを添付することでこれを行いますが、データベースを24時間年中無休で使用しているため、データベースをオフラインにできないため、データベースをバックアップし、新しいデータベースに復元しました機械。しかし、私はいくつかの問題を抱えており、そのうちの1つは孤立したユーザーに関連しています。だから私が探しているのは、すべてを最小限の手間/母/頭痛で動かすフェイルセーフプロセスです。私は.Net開発者であり、かなりの量のSQLを身につけていますが、SQL Serverの内部の仕組みはほとんど謎であり、MSのドキュメントはトロールするのに苦労します。

助けてください。


1
この前の質問でいくつかのアイデアを見つけることができます。しかし、以前の答えはかなり説明的です。すべてのデータベースに対してミラーリングを確立してミラーリングを解除するか、ログ配布(ウィザードからのみ実行可能)して、必要なログバックアップをさらに復元するのが最善の方法だと思いますが、DBAでない場合は、それからおそらくバックアップ方法がより良いでしょう。
マリアン

回答:


10

データベースをオフラインにできない場合は、バックアップ/復元を行う必要があります。私は以下を提案します:

  1. MDFおよびLDFファイル用の古いボックスと同じファイル構造を使用して、SQL 2008を新しいボックスにインストールします。
  2. 古いボックスのすべてのデータベースのバックアップを取ります。
  3. SQLをシングルユーザーモードで起動して、古いボックスから新しいボックスにマスターを復元します。マスターメソッドの復元
  4. 将来の差分またはTログバックアップを適用できるようにするために、NORECOVERYオプションを使用して各データベースを古いボックスから新しいボックスに復元します。
  5. 古いボックスから新しいボックスにmsdbを復元します。

新しいボックスを構築して古いボックスとまったく同じように構成すると、手間が最小限に抑えられます。

データベースのサイズがわからないので、この方法には時間がかかる場合があります。最も簡単な方法は、古いボックスをシャットダウンしてMDFファイルとLDFファイルをコピーし、(マスターを復元した後)データベースをオンラインにするためにSQLを再起動するだけです。しかし、データベースをオフラインにすることは許可されていないため、これはオプションではないと述べました。


3
バックアップを取った後に加えられたデータ変更をコピーすることを忘れないでください。差分バックアップまたはtlogバックアップを取得して、起動後、スイッチオーバーする前に新しいサーバーに適用できます。
エリックハンフリー-lotsahelp

良い点、私もそれを言及するのを忘れていました。おそらく私は、後で壊れる可能性があるdbミラー構成を含める必要がありますか?
SQLRockstar 2011年

1
サーバーを移行するさまざまな方法に関する広範な記事をすでに誰かが持っていると思います。また、新しいサーバーへのログインの転送に関する記事もここにあります:support.microsoft.com/kb/246133
Eric Humphrey-lotsahelp

8

24時間年中無休の運用について言及しているので、これを行う最良の方法は、新しいシステムにデータベースミラーを作成することです。その後、アプリケーションの構造に応じて、最小-おそらくゼロに切り替えることができます-クライアントを使用したダウンタイム-サイドリダイレクト。基本的な手順は次のとおりです。

  1. プライマリデータベースが完全復旧モードで実行されていることを確認します。
  2. プライマリをバックアップし、ミラーに復元します WITH NORECOVERY
  3. 両方のサーバーに「エンドポイント」を作成し、接続(ファイアウォールルールなど)を確認し、ポートとIPアドレスを正しく設定します)例:

    CREATE ENDPOINT endpoint1
    STATE=STARTED AS TCP(LISTENER_PORT = 5222, LISTENER_IP = 192.168.1.5) 
    FOR DATA_MIRRORING(ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = REQUIRED ALGORITHM RC4)
    
  4. ミラーでミラーリングを設定し、プライマリをポイントします。

    ALTER DATABASE GaiusMirrorDB SET PARTNER = 'TCP://192.168.1.5:5222'
    go
    EXEC sys.sp_dbmmonitoraddmonitoring
    go
    
  5. そして、プライマリで、ミラーを指します(異なるデータベース名とIPアドレスのみ)。

  6. 次に、時間が来たら、プライマリをミラーに切り替えます。

    ALTER DATABASE GaiusDB SET PARTNER FAILOVER
    GO
    

注:これら2つのサーバーは同じネットワーク上にあると想定しているため、同期モードで操作しても問題ありません。これがWANリンク経由の場合は、非同期モードを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.