Все точки elses являются великими поэтому просто несколько комментариев.
30 минут невозможно гарантировать, специально для всего. Можно сказать, что это - цель, но нет никакого способа, которым это может быть гарантия, потому что всегда существует The X Factor. У Вас могло быть 2 строки ISP, и грузовик врезался в здание и берет их обоих, потому что Вы не думали, что маршрутизация их от противоположных концов здания имела значение, один пример.
Как запуск для стоения, дважды всего. У Вас есть 5 серверов, таким образом, необходимо удвоиться, это. Этому не нужно ко всем быть на аппаратных средствах, можно виртуализировать, но Вы видите то, что я имею в виду. Вдобавок ко всему, все должно быть HA, знающим, который также добавит к стоимости, можно узнать, что Вы оказываетесь перед необходимостью заменять свой маршрутизатор новым, и о Вам нужны 2 из них. Не забывайте удваивать кабель питания и получать генератор, потому что Вы не можете гарантировать, что энергетическая компания вернется в течение 30 минут.
Эти примеры думают более или менее установка горячего резервирования, которая является тем, что я подозреваю, что Ваш босс думает.
То, что я нахожу лучше для малого бизнеса, должно разработать план восстановить и классифицировать все.
Фигура, которая сервисы
очень важный (бизнес-остановки)
важный (бизнес замедляется),
стандартная программа (бизнес может суметь обойтись без него некоторое время).
Например, Ваши телефоны центра обработки вызовов являются critial, настолько возможно, что каждый стоит купить второй сервер и второй ISP, и Ваше отключение электричества средней мощности составляет приблизительно 15 минут, таким образом, мы доберемся, UPS для этого продлится, 60 минут (не забывайте рабочие станции ни один). Теперь позволяет, говорят, что ERP только важен, означание Вашего может функционировать без него некоторое время. Возможно, Ваши люди центра обработки вызовов используют его, но если это снижается, они могут вернуться назад к перу и бумаге или блокноту и затем обновить ERP после. Процедура, чтобы сделать это, если это снижается на желание, может быть более дешево затем попытка сделать это критическим сервисом. И стандартные могли бы быть чем-то как принтеры, хорошо это - боль, но мы можем сделать должным в течение нескольких дней, если они все понижаются.
Это также дает Вам распоряжение зафиксировать материал, если s ** t действительно поражает вентилятор однажды :)
Я создал серию пакетных файлов и сценариев SQL, чтобы сделать шаги ниже. Я только включал сценарии для материала зеркального отражения, но другие сценарии SQL, на которые ссылаются, являются довольно основными командами SQL (кроме сценария базы данных восстановления, что каждый довольно хитер из-за того, как я реализовал его), и создание их даст Вам возможность заменить переменные режима SQLCMD. Если Вы хотите к Прямому, передают меня в Твиттере (@jcumberland) с Вашим адресом электронной почты, я могу отправить Вам полный набор сценариев. Я удалил полные пути на именах файлов также.
/*------------------------------------------------------*/ -- 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
как насчет встроенного Монитора Зеркального отражения Базы данных?