Инструменты для управления зеркалированием базы данных SQL 2008?

Инструменты для управления зеркалированием базы данных SQL 2008?

Мы собираемся перенести около 20 баз данных, работающих на одном экземпляре SQL 2000, в среду SQL 2008 R2 с зеркалированием баз данных.

Я ищу инструмент или скрипты, которые помогут мне легко управлять преобразованием и управлением этими 20db в этой новой зеркальной среде. Настройка каждой базы данных состоит из множества шагов, и я хочу максимально автоматизировать.

Редактировать: Вот шаги, которые я выполнял вручную:

  1. Создайте те же имена пользователей и пароли со старого сервера SQL 2000 на новом сервере SQL 2008. Затем синхронизируйте этих пользователей и пароли на другом сервере SQL 2008 с теми же SSID, чтобы при резервном копировании и восстановлении базы данных они совпадали.
  2. Сделайте резервную копию каждой базы данных SQL 2000.
  3. Скопируйте их на сервер А.
  4. Восстановите резервную копию на сервере A.
  5. Резервное копирование с сервера a, копирование на сервер b, восстановление там.
  6. Запустите мастер настройки безопасности зеркала.
  7. Начните зеркалирование.

Мне бы очень хотелось иметь возможность написать скрипт или инструмент, который сделает это за меня. Спасибо! Пол

решение1

Я создал ряд пакетных файлов и скриптов SQL для выполнения следующих шагов. Я включил только скрипты для зеркалирования, но другие упомянутые скрипты SQL являются довольно простыми командами SQL (за исключением скрипта восстановления базы данных, он довольно сложен из-за того, как я его реализовал), и их создание даст вам возможность изменить переменные режима SQLCMD. Если вы хотите, напишите мне в Twitter (@jcumberland) свой адрес электронной почты, я могу отправить вам полный набор скриптов. Я также удалил полные пути в именах файлов.

  • устанавливает режим восстановления для базы данных
  • удаляет зеркалирование
  • удалить зеркальную базу данных
  • резервная база данных
  • журнал резервного копирования
  • копирует bak-файл
  • копирует файл trn
  • восстанавливает резервную копию базы данных
  • восстанавливает резервную копию журнала
  • удаляет bak-файл
  • удаляет файл trn
  • настроить зеркалирование между основным и зеркальным сервером
/*------------------------------------------------------*/
-- ЗАМЕНИТЕ ЭТИ ЗНАЧЕНИЯ
/*------------------------------------------------------*/











/*------------------------------------------------------*/
-- ПАКЕТНЫЙ ФАЙЛ 1, ВЫЗЫВАЕТ ПАКЕТНЫЙ ФАЙЛ УТИЛИТЫ
/*------------------------------------------------------*/
@эхо выкл.

установить PRIMARYHOST=
установить MIRRORHOST=
установить ИНСТ=
установить ПРИВОД=
установить DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\"
установить LOGDIR="%ДИСК%:\MSSQL.1\MSSQL\DATA\"
установить ПОРТ=
установить ПЕРВИЧНЫЙИНСТ=%ПЕРВИЧНЫЙХОСТ%\%ИНСТ%
установить MIRRORINST=%MIRRORHOST%\%INST%

@echo на


вызов drdbsetup.bat %PRIMARYHOST% %MIRRORHOST% %PRIMARYINST% %MIRRORINST% %DRIVE% %DRTARGETDIR% %PORT% %LOGDIR%

Пауза







/*------------------------------------------------------*/
-- ПАКЕТНЫЙ ФАЙЛ 2 - ВЫЗЫВАЕТ СКРИПТЫ SQL
/*------------------------------------------------------*/
rem -- установить режим полного восстановления
sqlcmd /E /S%3 -i SetRecoveryMode.sql -v DATABASE="%8"

rem -- удалить зеркалирование
sqlcmd /E /S%3 -i MirroringRemove.sql -v DATABASE="%8"

sqlcmd /E /S%4 -i MirroringRemoveMirror.sql -v DATABASE="%8"

rem -- полная резервная копия
sqlcmd /E /S%3 -i Резервная_База_ДанныхПолная.sql -v РЕЗЕРВНАЯ_БАЗА_ДАННЫХ="%5:\" -v БАЗА_ДАННЫХ=%8

rem -- резервное копирование журнала
sqlcmd /E /S%3 -i Резервная_Баз_ДанныхЖурнал.sql -v РЕЗЕРВНАЯ_ПАТЕНТУРА="%5:\" -v БАЗА_ДАННЫХ=%8

rem -- копирование резервных файлов на зеркало
копировать \\%1\%5$\*.bak %6 /y
копировать \\%1\%5$\*.trn %6 /y

rem -- удалить резервные файлы с основного
дель \\%1\%5$\*.bak
дель \\%1\%5$\*.trn

rem -- восстановить базу данных из резервной копии
sqlcmd /E /S%4 -i RestoreDatabase.sql -v BKDIR=%6 -v DATADIR=%6 -v LOGDIR=%9

rem -- восстановить журнал базы данных
sqlcmd /E /S%4 -i RestoreLog.sql -v BACKUPPATH=%6 -v DATABASE=%8

rem -- удалить резервные копии файлов с зеркала
дель %6\*.bak
дель %6\*.trn

rem -- настроить зеркалирование
sqlcmd /E /S%4 -i MirroringSetup.sql -v PRINCIPAL="%3" -v MIRROR="%4" -v PRINCIPAL_DNS="%1." -v MIRROR_DNS="%2.yourdomain.local" -v ИМЯ_БАЗЫ_ДАННЫХ="%8" -v ПОРТ=%7







/*------------------------------------------------------*/
-- MirroringSetup.sql
/*------------------------------------------------------*/


/*-----------------------------------------------------*/
-- работает на основе принципала
/*-----------------------------------------------------*/
:подключить $(ГЛАВНЫЙ)
ИДТИ

-- создает конечную точку
если не существует (выберите * из sys.endpoints, где имя = 'Зеркалирование')
начинать
    СОЗДАТЬ КОНЕЧНУЮ ТОЧКУ Зеркалирование
    АВТОРИЗАЦИЯ []
    СОСТОЯНИЕ = ЗАПУЩЕНО КАК TCP (
        LISTENER_PORT = $(PORT)
        ,LISTENER_IP = ВСЕ
    )
    ДЛЯ ЗЕРКАЛЬНОГО_ОТОБРАЖЕНИЯ ДАННЫХ (
        РОЛЬ = ПАРТНЕР
        ,АУТЕНТИФИКАЦИЯ = СОГЛАСОВАНИЕ WINDOWS
        ,ШИФРОВАНИЕ = ТРЕБУЕМЫЙ АЛГОРИТМ RC4
    )
конец
идти

/*-----------------------------------------------------*/
-- запустить на зеркале
/*-----------------------------------------------------*/
:подключить $(ЗЕРКАЛО)
ИДТИ

-- создает конечную точку
если не существует (выберите * из sys.endpoints, где имя = 'Зеркалирование')
начинать
    СОЗДАТЬ КОНЕЧНУЮ ТОЧКУ Зеркалирование
    АВТОРИЗАЦИЯ []
    СОСТОЯНИЕ = ЗАПУЩЕНО КАК TCP (
        LISTENER_PORT = $(PORT)
        ,LISTENER_IP = ВСЕ
    )
    ДЛЯ ЗЕРКАЛЬНОГО_ОТОБРАЖЕНИЯ ДАННЫХ (
        РОЛЬ = ПАРТНЕР
        ,АУТЕНТИФИКАЦИЯ = СОГЛАСОВАНИЕ WINDOWS
        ,ШИФРОВАНИЕ = ТРЕБУЕМЫЙ АЛГОРИТМ RC4
    )
конец
идти

-- Устанавливает зеркальное партнерство
ИЗМЕНИТЬ БАЗА ДАННЫХ [$(ИМЯ_БАЗЫ_ДАННЫХ)] УСТАНОВИТЬ ПАРТНЕРА = N'TCP://$(PRINCIPAL_DNS):$(ПОРТ)'
идти

-- Удаляет мониторинг зеркала
если существует (выберите * из msdb..sysjobs, где [name] = 'Database Mirroring Monitor Job')
начинать
    EXEC sp_dbmmonitordropmonitoring
конец
идти

-- Настраивает зеркальный мониторинг
EXEC sys.sp_dbmmonitoraddmonitoring — по умолчанию 1 минута
идти


/*-----------------------------------------------------*/
-- работает на основе принципала
/*-----------------------------------------------------*/
:подключить $(ГЛАВНЫЙ)
ИДТИ

-- Устанавливает зеркальное партнерство
ИЗМЕНИТЬ БАЗА ДАННЫХ [$(ИМЯ_БАЗЫ_ДАННЫХ)] УСТАНОВИТЬ ПАРТНЕРА = N'TCP://$(MIRROR_DNS):$(ПОРТ)'
идти

-- Удаляет мониторинг зеркала
если существует (выберите * из msdb..sysjobs, где [name] = 'Database Mirroring Monitor Job')
начинать
    EXEC sp_dbmmonitordropmonitoring
конец
идти

-- Настраивает зеркальный мониторинг
EXEC sys.sp_dbmmonitoraddmonitoring — по умолчанию 1 минута
идти






/*------------------------------------------------------*/
-- DRMirroringRemove.sql
/*------------------------------------------------------*/
если существует (выберите * из sys.database_mirroring, где db_name(database_id) = '$(DATABASE)' и mirroring_guid не равен null)
начинать
    ИЗМЕНИТЬ БАЗА ДАННЫХ [$(DATABASE)] ОТКЛЮЧИТЬ ПАРТНЕРА
конец
идти

ОЖИДАНИЕ ЗАДЕРЖКИ '00:00:10'
идти







/*------------------------------------------------------*/
-- DRMirroringRemoveMirror.sql
/*------------------------------------------------------*/
если существует (выберите * из sys.database_mirroring, где db_name(database_id) = '$(DATABASE)' и mirroring_guid не равен null)
начинать
    ИЗМЕНИТЬ БАЗА ДАННЫХ [$(DATABASE)] ОТКЛЮЧИТЬ ПАРТНЕРА
конец
идти

ОЖИДАНИЕ ЗАДЕРЖКИ '00:00:10'
идти

УДАЛЕНИЕ БАЗЫ ДАННЫХ [$(DATABASE)]
идти

решение2

как насчет встроенногоМонитор зеркалирования базы данных?

Связанный контент