
우리는 SQL 2000의 단일 인스턴스에 있는 약 20개의 데이터베이스를 데이터베이스 미러링을 사용하는 SQL 2008 r2 환경으로 이동할 예정입니다.
제가 찾고 있는 것은 20db를 이 새로운 미러링 환경으로 쉽게 변환하고 관리하는 데 도움이 되는 도구 또는 스크립트입니다. 각 DB를 설정하는 데는 여러 단계가 있으며 최대한 자동화하고 싶습니다.
편집: 제가 수동으로 수행한 단계는 다음과 같습니다.
- 이전 SQL 2000 서버의 동일한 사용자 이름/비밀번호를 새 SQL 2008 서버에 만듭니다. 그런 다음 해당 사용자/비밀번호를 동일한 SSID를 사용하여 다른 SQL 2008 서버에 동기화하여 db 백업 및 복원을 수행할 때 일치하도록 합니다.
- 각 SQL 2000 DB를 백업하십시오.
- 서버 A에 복사합니다.
- 서버 A에 백업을 복원합니다.
- 서버 a에서 백업하고 서버 b에 복사한 후 그곳에서 복원합니다.
- 미러 "보안 구성" 마법사를 실행합니다.
- 미러링을 시작합니다.
나는 이것을 스크립트로 작성하거나 나를 위해 이를 수행하는 도구를 갖는 것을 좋아합니다. 감사해요! 폴
답변1
아래 단계를 수행하기 위해 일련의 배치 파일과 SQL 스크립트를 만들었습니다. 미러링에 대한 스크립트만 포함했지만 참조된 다른 SQL 스크립트는 매우 기본적인 SQL 명령입니다(데이터베이스 복원 스크립트는 제외, 구현 방법으로 인해 다소 까다롭습니다). 이를 생성하면 다음과 같은 기회를 얻을 수 있습니다. SQLCMD 모드 변수를 변경합니다. 귀하의 이메일 주소를 트위터(@jcumberland)로 직접 메시지로 보내시려면 전체 스크립트 세트를 보내드릴 수 있습니다. 파일 이름의 전체 경로도 제거했습니다.
- 데이터베이스의 복구 모드를 설정합니다.
- 미러링 제거
- 미러 데이터베이스 제거
- 백업 데이터베이스
- 백업 로그
- bak 파일을 복사합니다.
- trn 파일을 복사합니다.
- 데이터베이스 백업을 복원합니다.
- 로그 백업을 복원합니다.
- bak 파일을 삭제합니다
- trn 파일을 삭제합니다
- 주 서버와 미러 간의 미러링 설정
/*------------------------------------------------ ------*/ -- 이 값을 바꾸세요 /*------------------------------------------------ ------*/ /*------------------------------------------------ ------*/ -- 배치 파일 1, 유틸리티 배치 파일 호출 /*------------------------------------------------ ------*/ @에코 꺼짐 PRIMARYHOST= 설정 MIRRORHOST=로 설정 INST=로 설정 드라이브= 설정 DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" 설정 LOGDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" 설정 포트 설정= PRIMARYINST=%PRIMARYHOST%\%INST% 설정 MIRRORINST=%MIRRORHOST%\%INST% 설정 @에코 켜짐 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 BackupDatabaseFull.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem -- 로그 백업 sqlcmd /E /S%3 -i BackupDatabaseLog.sql -v BACKUPPATH="%5:\" -v DATABASE=%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 DATABASE_NAME="%8" -v 포트=%7 /*------------------------------------------------ ------*/ -- MirroringSetup.sql /*------------------------------------------------ ------*/ /*------------------------------------------------ ---*/ -- 주체에 따라 실행 /*------------------------------------------------ ---*/ : $(PRINCIPAL) 연결 가다 -- 엔드포인트 생성 존재하지 않는 경우(이름 = '미러링'인 sys.endpoints에서 * 선택) 시작하다 엔드포인트 미러링 생성 승인 [] 상태 = TCP로 시작됨( LISTENER_PORT = $(포트) ,LISTENER_IP = 전체 ) DATA_MIRRORING의 경우( 역할 = 파트너 ,인증 = WINDOWS 협상 ,암호화 = 필수 알고리즘 RC4 ) 끝 가다 /*------------------------------------------------ ---*/ -- 거울 위에서 실행 /*------------------------------------------------ ---*/ : $(미러) 연결 가다 -- 엔드포인트 생성 존재하지 않는 경우(이름 = '미러링'인 sys.endpoints에서 * 선택) 시작하다 엔드포인트 미러링 생성 승인 [] 상태 = TCP로 시작됨( LISTENER_PORT = $(포트) ,LISTENER_IP = 전체 ) DATA_MIRRORING의 경우( 역할 = 파트너 ,인증 = WINDOWS 협상 ,암호화 = 필수 알고리즘 RC4 ) 끝 가다 -- 미러 파트너십 설정 ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(PRINCIPAL_DNS):$(PORT)' 가다 -- 미러 모니터링 제거 존재하는 경우(msdb..sysjobs에서 * 선택, 여기서 [이름] = '데이터베이스 미러링 모니터 작업') 시작하다 EXEC sp_dbmmonitordrop모니터링 끝 가다 -- 미러 모니터링 설정 EXEC sys.sp_dbmmonitoraddmonitoring -- 기본값은 1분입니다. 가다 /*------------------------------------------------ ---*/ -- 주체에 따라 실행 /*------------------------------------------------ ---*/ : $(PRINCIPAL) 연결 가다 -- 미러 파트너십 설정 ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(MIRROR_DNS):$(PORT)' 가다 -- 미러 모니터링 제거 존재하는 경우(msdb..sysjobs에서 * 선택, 여기서 [이름] = '데이터베이스 미러링 모니터 작업') 시작하다 EXEC sp_dbmmonitordrop모니터링 끝 가다 -- 미러 모니터링 설정 EXEC sys.sp_dbmmonitoraddmonitoring -- 기본값은 1분입니다. 가다 /*------------------------------------------------ ------*/ -- DRMirroringRemove.sql /*------------------------------------------------ ------*/ 존재하는 경우(db_name(database_id) = '$(DATABASE)'이고 mirroring_guid가 null이 아닌 경우 sys.database_mirroring에서 * 선택) 시작하다 ALTER DATABASE [$(DATABASE)] 파트너 설정 끄기 끝 가다 지연 대기 '00:00:10' 가다 /*------------------------------------------------ ------*/ -- DRMirroringRemoveMirror.sql /*------------------------------------------------ ------*/ 존재하는 경우(db_name(database_id) = '$(DATABASE)'이고 mirroring_guid가 null이 아닌 경우 sys.database_mirroring에서 * 선택) 시작하다 ALTER DATABASE [$(DATABASE)] 파트너 설정 끄기 끝 가다 지연 대기 '00:00:10' 가다 데이터베이스 삭제 [$(DATABASE)] 가다
답변2
내장은 어때요?데이터베이스 미러링 모니터?