2007~2011/SQL Server2009. 10. 6. 08:48
SQL Server 2008 은 대표적인 고가용성 방법으로 복제, 클러스터링, 미러링, 로그 전달이 있습니다. 로그 전달에 대해서는 아직 한 번도 포스팅을 하지 않아 간략히 기능 구현 과정을 정리하였습니다. 

Log Shipping, 이름에서도 눈치챌 수 있듯이 트랜잭션 로그를 다른 대상(보조) 서버에 전송하여 데이터베이스를 일정 주기로 복제하는 효과를 얻을 수 있는 기능입니다. 로그 전달 방법은 아래와 같습니다.

1. 기본 15분(변경 가능) 마다 원본 서버에서 백업
2. 기본 15분 주기로 원본 서버에 백업된 파일이 복제 대상 서버로 전달
3. 기본 15분 마다 전달된(복사된) 로그 파일(*.trn)을 복제 대상 서버에 복원


로그 전달의 일반적인 특징은 아래와 같습니다. 
* 로그 전달 단위는 데이터베이스 
* 문제 발생 시 관리자에 의한 수동 전환 필요 (오류 탐지 기능 없음)
* SQL Server Agent Service 사용
* 데이터베이스 복구 모델은 'Full' 또는 'Bulk-logged' 로 설정되어 있어야 합니다.


[로그 전달 구성] 
1. MSSQLSERVER TCP/IP 사용, SQL Server Agent 서비스 시작 
2. 원본 서버의 D:\SQL_Logshipping 폴더 네트워크 공유 설정
3. 원본 서버 데이터베이스 생성
CREATE DATABASE LAIGO
GO

USE LAIGO
GO

CREATE TABLE TblTeam
(
   UserID char(10) NOT NULL,
   UserName varchar(20),
   DATE DATETIME 
)

INSERT INTO TblTeam (UserID, UserName, DATE) VALUES (1, 'bhlim', getdate())
INSERT INTO TblTeam (UserID, UserName, DATE) VALUES (2, 'hjjeon', getdate())
INSERT INTO TblTeam (UserID, UserName, DATE) VALUES (3, 'phcho', getdate())

4. 원본 데이터베이스 - 데이터베이스 속성 - 트랜잭션 로그 전달 
 - '이 데이터베이스를 로그 전달 구성의 주 데이터베이스로 사용' 체크

5. 백업 설정
 가. 백업 폴더의 네트워크 경로, 백업 폴더의 로컬 경로 입력
 나. 백업 작업 일정 : 매 1분 (기본 15분)
 다. 압축 : 백업 압축 (백업 압축의 특징은 블로그에 정리되어 있습니다)


6. 원본 데이터베이스 - 데이터베이스 속성 - 보조 데이터베이스 - 추가 - 보조 데이터베이스 초기화
 가. 보조 서버 인스턴스 : 연결 
 나. 보조 데이터베이스 복원 : 예 (보조 데이터베이스는 LAIGO 데이터베이스가 없으므로 생성) 


7. 파일 복사 탭
 가. 복사한 파일의 대상 폴더 : 원본 데이터베이스로 부터 복사된 트랜잭션 로그가 저장될 위치
 나. 복사 작업 일정 : 1분 (1분 마다 보조 데이터베이스로 트랜잭션 로그 전송)


8. 트랜잭션 로그 복원 탭
 가. 복원 작업 일정 : 1분 (보조 데이터베이스로 전송된 트랜잭션 로그 파일을 복원하는 주기)


9. 완료 
 가. 원본/복제 대상 데이터베이스가 속한 SQL Server Agent 작업에 로그 전달에 필요한 작업이 생성
 나. 복제 대상 서버의 보조 데이터베이스가 생성되어 '복원중' 상태로 전환되어 있음 



[로그 전달 테스트]
1. 원본 데이터베이스에서 데이터 삽입 트랜잭션 발생 
USE LAIGO
GO

INSERT INTO TblTeam (UserID, UserName, DATE) VALUES (4, 'laigo', getdate())
INSERT INTO TblTeam (UserID, UserName, DATE) VALUES (5, 'dalee', getdate())
INSERT INTO TblTeam (UserID, UserName, DATE) VALUES (6, 'jslee', getdate())

2. 트랜잭션 로그 전송 확인
 가. 1~2분 이내 보조 데이터베이스에 복원될 트랜잭션 로그가 전송되어 파일이 생성됨을 확인할 수 있습니다.


3. 원본 데이터베이스 장애 (오프라인)
USE MASTER
ALTER DATABASE LAIGO SET OFFLINE 

4. 보조 데이터베이스 복원 및 데이터 확인
USE MASTER
RESTORE DATABASE LAIGO WITH RECOVERY  -- 보조 데이터베이스 온라인 


USE LAIGO
SELECT * FROM TblTeam 
 -- 정상적으로 데이터가 복제 되어 있음을 확인할 수 있습니다. 


[참고자료]


작성자 : Lai Go / 작성일자 : 2009.10.05
Posted by Lai Go