Назад | Перейти на главную страницу

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

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

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

Изменить: вот шаги, которые я делал вручную:

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

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

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

  • устанавливает режим восстановления для базы данных
  • удаляет зеркальное отображение
  • удалить зеркальную базу данных
  • резервная база данных
  • журнал резервного копирования
  • копирует bak файл
  • копирует файл trn
  • восстанавливает резервную копию базы данных
  • восстанавливает резервную копию журнала
  • удаляет bak файл
  • удаляет файл trn
  • настроить зеркалирование между главным и зеркалом
/*------------------------------------------------------*/
--  REPLACE THESE VALUES
/*------------------------------------------------------*/











/*------------------------------------------------------*/
--  BATCH FILE 1, CALLS UTILITY BATCH FILE
/*------------------------------------------------------*/
@echo off

set PRIMARYHOST=
set MIRRORHOST=
set INST=
set DRIVE=
set DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\"
set LOGDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\"
set PORT=
set PRIMARYINST=%PRIMARYHOST%\%INST%
set MIRRORINST=%MIRRORHOST%\%INST%

@echo on


call drdbsetup.bat %PRIMARYHOST% %MIRRORHOST% %PRIMARYINST% %MIRRORINST% %DRIVE% %DRTARGETDIR% %PORT%  %LOGDIR%

pause







/*------------------------------------------------------*/
--  BATCH FILE 2 - CALLS THE SQL SCRIPTS
/*------------------------------------------------------*/
rem -- set recovery mode to full
sqlcmd /E /S%3 -i SetRecoveryMode.sql -v DATABASE="%8"

rem -- remove mirroring
sqlcmd /E /S%3 -i MirroringRemove.sql -v DATABASE="%8"

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

rem -- full backup
sqlcmd /E /S%3 -i BackupDatabaseFull.sql -v BACKUPPATH="%5:\" -v DATABASE=%8

rem -- log backup
sqlcmd /E /S%3 -i BackupDatabaseLog.sql -v BACKUPPATH="%5:\" -v DATABASE=%8

rem -- copy backup files to mirror
copy \\%1\%5$\*.bak %6 /y
copy \\%1\%5$\*.trn %6 /y

rem -- remove backup files from primary
del \\%1\%5$\*.bak
del \\%1\%5$\*.trn

rem -- restore database from backup directory
sqlcmd /E /S%4 -i RestoreDatabase.sql -v BKDIR=%6 -v DATADIR=%6 -v LOGDIR=%9

rem -- restore database log
sqlcmd /E /S%4 -i RestoreLog.sql -v BACKUPPATH=%6 -v DATABASE=%8

rem -- remove backup files from mirror
del %6\*.bak
del %6\*.trn

rem -- set up mirroring
sqlcmd /E /S%4 -i MirroringSetup.sql -v PRINCIPAL="%3" -v MIRROR="%4" -v PRINCIPAL_DNS="%1." -v MIRROR_DNS="%2.yourdomain.local" -v DATABASE_NAME="%8" -v PORT=%7







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


/*-----------------------------------------------------*/
--  run on principal
/*-----------------------------------------------------*/
:connect $(PRINCIPAL)
GO

--  creates endpoint
if not exists (select * from sys.endpoints where name = 'Mirroring')
begin
    CREATE ENDPOINT Mirroring
    AUTHORIZATION []
    STATE = STARTED AS TCP (
        LISTENER_PORT = $(PORT)
        ,LISTENER_IP = ALL
    )
    FOR DATA_MIRRORING (
        ROLE = PARTNER
        ,AUTHENTICATION = WINDOWS NEGOTIATE
        ,ENCRYPTION = REQUIRED ALGORITHM RC4
    )
end
go

/*-----------------------------------------------------*/
--  run on mirror
/*-----------------------------------------------------*/
:connect $(MIRROR)
GO

--  creates endpoint
if not exists (select * from sys.endpoints where name = 'Mirroring')
begin
    CREATE ENDPOINT Mirroring
    AUTHORIZATION []
    STATE = STARTED AS TCP (
        LISTENER_PORT = $(PORT)
        ,LISTENER_IP = ALL
    )
    FOR DATA_MIRRORING (
        ROLE = PARTNER
        ,AUTHENTICATION = WINDOWS NEGOTIATE
        ,ENCRYPTION = REQUIRED ALGORITHM RC4
    )
end
go

-- Sets up mirror partnership
ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(PRINCIPAL_DNS):$(PORT)'
go

-- Removes mirror monitoring
if exists (select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job')
begin
    EXEC sp_dbmmonitordropmonitoring
end
go

-- Sets up mirror monitoring
EXEC sys.sp_dbmmonitoraddmonitoring -- default is 1 minute
go


/*-----------------------------------------------------*/
--  run on principal
/*-----------------------------------------------------*/
:connect $(PRINCIPAL)
GO

-- Sets up mirror partnership
ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(MIRROR_DNS):$(PORT)'
go

-- Removes mirror monitoring
if exists (select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job')
begin
    EXEC sp_dbmmonitordropmonitoring
end
go

-- Sets up mirror monitoring
EXEC sys.sp_dbmmonitoraddmonitoring -- default is 1 minute 
go






/*------------------------------------------------------*/
--  DRMirroringRemove.sql
/*------------------------------------------------------*/
if exists ( select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' and mirroring_guid is not null )
begin
    ALTER DATABASE [$(DATABASE)] SET PARTNER OFF
end
go

WAITFOR DELAY '00:00:10'
go







/*------------------------------------------------------*/
--  DRMirroringRemoveMirror.sql
/*------------------------------------------------------*/
if exists ( select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' and mirroring_guid is not null )
begin
    ALTER DATABASE [$(DATABASE)] SET PARTNER OFF
end
go

WAITFOR DELAY '00:00:10'
go

DROP DATABASE [$(DATABASE)]
go