Не-DBA запитує: як безболісно скопіювати / перемістити екземпляр SQL Server на інший сервер за допомогою резервного копіювання / відновлення?


11

Ми щойно отримали новий сервер, тому мені потрібно скопіювати існуючий екземпляр SQL Server 2008 із старого вікна db.

Зазвичай я це роблю, копіюючи .mdf і файли журналу та додаючи їх, але я не в змозі зняти dbs оф-лайн, оскільки вони використовуються 24/7, тому я створив резервну копію баз даних і відновив їх на новій машина. Однак я закінчився декількома проблемами, одна з яких стосується дітей-сиріт . Тож, що я шукаю - це безпечний процес переміщення всього попереду з мінімальною суєтою / турботою / головним болем. Я. Net Dev із неабиякою кількістю SQL під поясом, але внутрішня робота SQL Server для мене в основному загадка, і я вважаю, що документація на MS болісно тралиться.

Будь ласка, допоможіть.


1
Деякі ідеї ви можете знайти в цьому попередньому запитанні . Але попередні відповіді досить пояснювальні. Я думаю, що найкращою ідеєю було б встановити дзеркальне відображення та розірвати його після, або доставку журналу (можна зробити лише з майстра) для всіх dbs та просто відновити необхідні резервні копії журналу, але якщо ви скажете, що ви не DBA , то, ймовірно, метод резервного копіювання є кращим.
Маріан

Відповіді:


10

Якщо ви не можете взяти бази даних в автономному режимі, вам потрібно зробити резервне копіювання / відновлення. Я б запропонував таке:

  1. Встановіть SQL 2008 у новому вікні, використовуючи ту саму структуру файлів, що і стару рамку для файлів MDF та LDF.
  2. Зробіть резервні копії всіх баз даних у старому вікні.
  3. Відновити майстер зі старого вікна до нового вікна із запуском SQL в режимі одиночного користувача. Відновити головний метод
  4. Відновіть кожну базу даних зі старого поля до нового вікна за допомогою параметра NORECOVERY, щоб мати можливість застосувати майбутні резервні копії Diff або T-log.
  5. Відновити msdb зі старого поля до нового.

Якщо ви будете створювати та налаштовувати нове вікно так, щоб воно було схоже на старе, то у вас буде мінімальна суєта.

Я поняття не маю, наскільки великі ваші бази даних, тому цей метод може зайняти тривалий час. Найпростіше зробити це закрити старе вікно та скопіювати файли MDF та LDF, а потім (після відновлення майстра) вам потрібно буде лише перезапустити SQL, щоб мати ваші бази даних в Інтернеті. Але ви заявили, що це не є варіантом, оскільки бази даних не можуть бути в автономному режимі.


3
Не забудьте скопіювати будь-які зміни даних, зроблені після створення резервних копій. Ви можете взяти різну резервну копію або реєструвати резервну копію та застосувати їх до нового сервера після його створення, але перед тим, як переключитися.
Ерік Хамфрі - лотахельп

хороший момент, я забув згадати і це. можливо, я повинен включати конфігурацію дзеркала, що може бути зламано згодом?
SQLRockstar

1
Я думаю, у когось вже є велика стаття про різні способи міграції серверів. Також ось стаття про перенесення входів на новий сервер: support.microsoft.com/kb/246133
Ерік Хамфрі - lotahelp

8

Ви згадуєте операцію 24/7, тому найкращий спосіб зробити це - створити дзеркало баз даних у новій системі, тоді ви можете просто переключитися на мінімальний - можливо, нульовий, залежно від структури вашого додатка - простою з використанням клієнта- бічне переадресація. Основні етапи:

  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

Примітка. Я припускаю, що ці два сервери знаходяться в одній мережі, тому працювати в синхронному режимі буде нормально. Якщо це посилання через WAN, використовуйте режим асинхронізації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.