월요일, 7월 02, 2012

데이터베이스 백업파일 과 차등백업 파일을 통한 데이터베이스 마이그레이션


개요

대용량 데이터베이스 서버 마이그레이션 전략 중 하나로서, 서비스 다운타임을 최소화하기 위해 데이터베이스 백업파일과 차등 백업 파일을 가지고

데이터베이스를 마이그레이션 하는 방법을 제시하고 이를 검증한다.

1.원본 서버
SQL Server 2000 Ent
대상 데이터베이스











Northwind데이터 베이스

2.목표 서버
SQL Server 2008 Ent

3.마이그레이션 절차
SQL Server 2000 원본 서버
전체 백업 수행




Orders 테이블 데이터 변경











차등 백업 수행





SQL Server 2008R2 에서의 전체 데이터베이스 복원
이때, No Recovery 모드로 복원

restore FILELISTONLY

from disk = 'D:\temp\DB\NorthWind_Full.bak'

go



RESTORE DATABASE
Northwind

FROM DISK
= 'D:\temp\DB\NorthWind_Full.bak'

WITH MOVE
'Northwind' TO 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\northwind.mdf',

MOVE
'Northwind_log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\northwind.ldf',

FILE
= 1, NORECOVERY

GO


/*

파일1에서데이터베이스'Northwind', 파일'Northwind'에대해384개의페이지를처리했습니다.

파일1에서데이터베이스'Northwind', 파일'Northwind_log'에대해1개의페이지를처리했습니다.

RESTORE DATABASE이(가) 385개의페이지를0.061초동안처리했습니다(49.212MB/초).

*/


이 때, 풀 백업 본의 데이터파일에 대한 버전 업그레이드가 이루어진다.


다음, 차등 백업 파일로 완전 복원



RESTORE DATABASE Northwind

FROM DISK
= 'D:\temp\DB\NorthWind_Diff.bak'


/*

파일1에서데이터베이스'Northwind', 파일'Northwind'에대해40개의페이지를처리했습니다.

파일1에서데이터베이스'Northwind', 파일'Northwind_log'에대해1개의페이지를처리했습니다.

데이터베이스'Northwind'을(를) 버전539에서현재버전661(으)로변환하는중입니다.

데이터베이스'Northwind'을(를) 버전539에서버전551(으)로업그레이드하는중입니다.
..생략..

RESTORE DATABASE이(가) 41개의페이지를0.013초동안처리했습니다(24.113MB/초).

*/


차등 백업본의 데이터 파일 업그레이드가 이루어 진다.
당연한 말이겠지만, 차등 백업 본에 해당하는 업그레이드만 발생하니,
작업이 매우 짧게 끝난다.

또한, 차등복원시 데이터 파일 디렉토리 지정 같은 옵션은 생략해도 된다.
(이미 풀 백업 본에 지정되어 있으므로)




SQL Server 복제환경에서 구독자의 호스트명(IP) 변경



1.     개요
이미 구성되어 운영중인 복제 서비스에서 구독자의 서버 정보가 서버 명 즉, 호스트 명이 아닌 IP로 등록되어 있을 경우, 해당 IP가 변경되면 복제 서비스가 더 이상 동작되지 않는 일이 발생하게 된다.

이러한 문제가 발생했을 때, 조치 할 수 있는 일반적인 방법은 구독자를 삭제하고 다시 구성하는 것이나
,초를 다투는 운영서버 환경에서 다운타임이 어느 정도 될지 예측하는 것은 쉬운 일이 아니다.

따라서, 이 문서에서는 구독자의 속정정보인 메타데이터를 변경하는 방법을 제시하고자 한다.
하지만 주의할 것은, 이 방식은 알려지지 않는 시스템 테이블을 변경하는 작업이 수반되며
이는 시스템에 심각한 영향을 줄 수 있으므로, 반드시 관리자는 주의 깊게 수행해야 한다.

위와 같은 문제를 근본적으로 피해갈 수 있는 방법은 복제 구성 시 공식문서에 나와있듯이 호스트 명 혹은 도메인 명으로 등록하는 것이 가장 바람 직 하다.


2.     구독자 서버의 속성 변경 절차
a.     먼저 도메인 명으로 구독서버를 게시자에 등록한다.


다음 명령어를 통해 등록된 서버를 확인한다.


b.   배포 데이터베이스에서 해당 호스트 네임에 해당하는 subscriber_id를 업데이트 한다.
다음 테이블을 보면 등록된 구독자에 대한 구독 서버 id가 설정되어 있고, 이 값을
Hostname으로 매핑한 srvid 값으로 변경한다.





또한 배포자데이터베이스의 배포에이전트 테이블의 subscriber_id도 역시 동일하게 수정한다.



  
[수정 후]


c.   다음은 게시 데이터베이스(여기서는 northwind)내의 시스템 테이블인 sysSubscriptions 테이블의 srvid
동일하게 Hostname과 매핑된 srvid값으로 수정한다.






d.  배포 에이전트의 속성에서 배포에이전트 시작 파라미터 값 중 구독 서버 값(아마 IP값일 것이다)
을 호스트 명으로 수정하고 다시 시작한다.





e.   작업 결과 확인
게시데이터베이스에서 다음 명령어 sp_helpsubscription 로 구독 서버 명 확인