SQL Server/SQL Server 이중화_백업

[MsSQL] 이중화 로그 전달 Log Shipping 방식 설정하기

꽁담 2019. 1. 22. 22:18

MsSQL 에서는 로그 전달이라고 하는 이중화 방식도 지원하고 있습니다.

현재 서비스 하는 서버(주 서버)와 같은 서버(보조 서버)를 구성한 후 주 서버의 데이터베이스를 보조 서버에 복사해 놓습니다.

그러고 주 서버의 데이터베이스에 트랜잭션이 발생하면 보조 서버에도 전달되게끔 설정하는 방식입니다.


로그 전달 순서는 다음과 같습니다.

1. 사용자가 주 서버에서 트랜잭션을 발생시키면 원본 DB의 젖아된 내용이 변경

2. 변경된 후 트랜잭션 로그의 백업 파일(*.TRN)이 주 서버의 지정된 폴더에 일정한 주기마다 백업

3. 백업된 로그 파일이 보조 서버의 지정된 폴더에 전달

4. 보조 서버의 지정된 폴더에 복사된 로그 파일(*.TRN)을 일정한 주기마다 보조 DB에 복원


* 주 서버(SQLTEST01)

* 보조 서버(SQLTEST02)



초기 환경 설정


1. 주 서버와 보조 서버의 SQL Server 에이전트를 실행합니다.


2. 서버에 TCP/IP 를 사용으로 변경합니다. 이 때는 SQL Server 가 재구동이 필요합니다.


3. 주 서버와 보조 서버에서 사용할 폴더를 생성합니다. 해당 폴더는 공유로 지정되어야 합니다.

폴더 우클릭 - 속성 - 공유 - 공유 - Everyone 추가 - 읽기/쓰기 권한 부여합니다.



주 서버 설정


4. 주 서버에 테스트에 사용될 데이터베이스와 테이블을 생성한 뒤 데이터를 적재합니다.


5. 주 서버 우클릭 - 태스크 - 트랜잭션 로그 전달을 선택합니다.


6. 이 데이터베이스를 로그 전달 구성의 주 데이터베이스로 사용에 체크한 뒤 백업 설정으로 들어갑니다.


7. 백업 폴더의 네트워크 경로를 지정합니다. 작성법은 \\컴퓨터이름\경로 입니다.

경로와 폴더 경로를 입력한 뒤 일정을 선택합니다.


8. 1분 단위 간격으로 변경합니다. 이는 짧으면 짧을 수록 부하는 증가하나 유실되는 트랜잭션은 적기 때문에 신뢰성이 높아집니다.


9. 추가를 선택합니다.


10. 보조 서버(SQLTEST02)를 선택합니다. 이 후 보조 데이터베이스 명을 입력합니다.


11. 파일 복사를 선택 후, 보조 서버를 위해 생성한 폴더를 입력합니다.

일정을 선택 후 마찬가지로 1분단위로 변경합니다.


12. 트랜잭션 로그 복원을 선택후 일정을 클릭, 1분 단위로 변경합니다.


13. 확인을 눌러 로그 전달 구성을 완료합니다.


14. 구성이 완료되면 닫기로 종료합니다.


15. 주 서버와 보조 서버에 복원에 필요한 파일이 생성됩니다.



이렇게 까지 진행하면 주 서버와 보조 서버는 이중화 관계가 구축됩니다.

단, 주 서버가 정상인 경우 보조 서버는 사용할 수 없습니다.

따라서, 주 서버가 비정상 적인 상황을 만들어 낸 후 보조 서버를 복구하여 테스트를 진행합니다.


16. 주 서버에 트랜잭션 발생 후 몇 분정도 있다가 오프라인 상태로 변경합니다.

INSERT INTO platTeam VALUES('')

INSERT INTO platTeam VALUES('')

GO


-- 3분 대기


USE tempdb

GO

ALTER DATABASE ShipSampleDB SET OFFLINE

GO


17. 보조 서버에서 복구하여 데이터베이스를 사용합니다.

USE tempdb

GO

RESTORE DATABASE ShipSampleDB WITH RECOVERY

GO