본문 바로가기
DATABASE/MsSQL

[MsSQL] SQL Server - Log Shipping 을 활용한 이중화 (DR 구성)

by DANEW 2024. 7. 22.

SQL Server - Disaster Recovery

데이터베이스를 운영하며 제일 중요한 것 중 하나는 HA를 활용한 이중화를 통해 서비스가 끊김없이 동작 할 수 있도록 하는 것이라고 말한 적이있다.

 

HA ( High Availability )를 구성하는 것은 서비스에 당연한 수순이라 생각되지만, 조금 중요도가 낮거나 특정 시간에 한번 정도만 동기화를 해도 된다하면 재해복구 - DR ( Disaster Recovery )를 구성하는 것도 좋은 방법이라 생각이 된다.

 

DR은 서비스의 연속성을 보장하지는 못하지만, 특정 시점으로 복구를 해두는 것으로 서비스의 안정성을 조금이나마 올려줄 수 있다.

 

MsSQL에서 일반적으로 많이 사용하는 DR을 구성 Log Shipping에 대해서 한번 알아보도록 하자.

 

Log Shipping 이란?

SQL Server 에는 트랜잭션 로그의 백업과 복원의 기능이 있다.

전체 백업의 이후에 발생하는 트랜잭션들에 대한 로그를 백업하여, 해당 LSN까지의 복구를 하는 것이다.

 

SQL Server에서 트랜잭션 로그 백업파일을 보조 서버로 전송하여 복구하는 방식으로 DR을 구성하는 것을 Log Shipping이라고 한다.

 

Log Shipping은 백업, 전송, 복구 각 단계별로 시간이 소요되며, 그만큼의 실제 서비스 데이터와 격차가 벌어질 수 있다.

 

Log Shipping Setting - Windows Server

Log Shipping 을 구성하기 위해서는 최소 2대의 서버가 필요하다.

서비스에 사용할 Master 서버와 DR을 구성항 Sub 서버 총 2대가 최소한 필요하다.

 

되도록이면 서버 사양이 비슷하면 좋은데, 긴급상황에 Sub 서버를 Master로 승격하여 사용해야하기 때문이다.

 

2대의 Windows Server에 동일한 버전의 SQL Server 를 설치하고 진행하도록 한다.

 

SQL Server 설치 방법은 아래의 링크를 참고바란다.

[MsSQL] SQL Server 2019 Standard 기본 설치 (Windows Server)

 

계정 설정

 

Windows Server의 계정을 동일한 계정/ 동일한 패스워드를 사용해야한다.

우리는 권한 등의 편의성을 위해 administrator 계정을 사용하며, 패스워드는 각자 동일하게 맞춰주면된다.

 

동일한 ID/PW를 맞췄다면, SQL Server의 구성 관리자를 실행한다.

SQL Server 구성관리자 -> SQL Server 서비스 탭에서 SQL Server / SQL Server 에이전트 2개의 로그온 계정을 administrator로 변경한다.

SQL Server / SQL Server 에이전트 -> 속성 -> 로그온

계정을 변경 한 후 SQL Server / SQL Server 에이전트가 재실행된다.

 

공유 폴더 설정

넉넉한 용량이 확보 되어있는 디스크에 원하는 경로에 폴더를 만든다.

 

Master 서버의 폴더에는 서비스중인 데이터베이스의 트랜잭션 로그 백업이 저장되며, Sub 서버의 폴더에는 Master 서버에서 전송받은 트랜잭션 로그 백업이 저장되게 된다.

 

해당 폴더는 Master / Sub 각각 다른경로의 다른 이름으로 만들어도 상관없다.

Master 서버에는 matser_ship / Sub 서버에는 sub_ship으로 생성하도록 하겠다.

 

각 폴더를 생성 후,  폴더 속성 -> 공유 탭 -> 공유 -> administrator 계정으로 공유 폴더 지정을 한다.

 

Log Shipping  Setting - SQL Server

Windows server에서의 세팅을 완료하였다면, 이제 SQL Server에서의 세팅을 진행하도록 하자.

 

Master Server에서 SQL Server의 클라이언트 툴 SSMS를 실행하여, Log Shipping을 진행 할 데이터베이스를 선택한다.

Database 우 클릭 -> 태스크 -> 트랜잭션 로그 전달 을 선택하여 Log Shipping 설정을 하는 메뉴얼로 들어간다.

Log Shipping  - 주 데이터베이스 선택 및 백업 설정

메뉴얼로 접근하였다면, 아래와 같은 창을 만나 볼 수 있다.

Master Server의 선택한 TEST_DB라는 데이터베이스를 주 데이터베이스로 사용하도록 체크를 한다.

 백업 설정 버튼을 클릭하여, 트랜잭션 로그 백업에 대해 설정을 한다.

 

각 폴더 경로가 들어가는 곳에는 master_ship을 생성한 네트워크 경로 / 로컬 경로에 대해서 입력을 한다.

추가로 일정 버튼을 통해 트랜잭션 백업이 진행 될 Agent에 대해 설정한다.

 

Log Shipping  - 보조 데이터베이스 초기화 및 파일 복사 / 복원 설정

보조서버 인스턴스 및 데이터베이스에 추가 버튼을 누르면 아래와 같은 창이 나타난다.

연결 버튼을 눌러 보조 데이터베이스 서버를 연결한다.

보조 데이터베이스 초기화 탭에서는 총 3가지 방법이 있다.

반응형

1. 주 데이터베이스의 전체 백업을 생성하고 보조 데이터베이스에 복원합니다.

해당 옵션은 주 데이터베이스에만 해당 데이터베이스가 있고 보조 데이터베이스에 해당 데이터베이스가 없을 때,

주 데이터베이스를 전체 백업하여 이동하여 복원하는 작업을 포함하여 Log Shipping을 세팅하는 방법이다.

 

2. 주 데이터베이스의 기존 백업을 보조 데이터베이스에 복원합니다.

해당 옵션은 이미 주 데이터베이스의 전체 백업이 존재하여, 해당 백업파일을 이동하며 복원하는 작업을 포함하여 Log Shipping을 세팅하는 방법이다. (즉, 1번의 작업에서 전체 백업의 작업이 빠지는 것)

1, 2번에 대해서 복원 옵션이 있는데, 해당 옵션은 보조서버에 mdf, ldf 파일의 위치를 정하는 옵션이다. 여러개의 데이터 파일이 있을경우 해당 옵션으로는 한계가 있다.

 

3. 보조 데이터베이스가 초기화되었습니다.

해당 옵션은 이미 보조 데이터베이스에 주 데이터베이스와 같은 데이터베이스가 복구되어 있는 경우이다. 복구는 norecovery 모드로 복구되어 있어야한다.


다음으로는 파일복사 탭의 설정이다.

트랜잭션 백업 파일이 복사될 보조 서버의 폴더를 선택한다. 우리가 생성한 sub_ship의 네트워크 경로를 입력한다.

일정 버턴을 클릭하여, 트랜잭션 로그가 보조서버로 복사되는 Agent에 대해 설정한다.


마지막으로 트랜잭션 로그 복원 탭의 설정이다.

트랜잭션 로그를 복원 후 보조데이터베이스에 대한 상태를 설정 할 수 있다.

복구 안 함 모드는 데이터베이스가 복구 완료가 되지 않은 상태로 해당 데이터베이스를 읽을 수도 없는 상태로 두는 모드이다.

대기 모드의 경우 복구는 완료하여 대기상태로 만들어 읽기 전용으로 사용하는 모드 이다.

 

마찬가지로 일정 버튼을 눌러 트랜잭션 로그를 복구하는 Agent를 설정한다.

이렇게 설정을 완료하면, 해당 데이터베이스들에 대해 설정이 진행되며, 각 Agent를 생성한다.

트랜잭션 백업을 진행하는 Agent의 경우 주 데이터베이스에 생성되며, 파일 이동/ 트랜잭션 로그 복구를 진행하는 Agnet는 보조 데이터베이스에 생성된다.

 

Related Posts

[MsSQL] SQL Server 2019 Standard 기본 설치 (Windows Server)

[MsSQL] SQL Server - AlwaysOn Basic 구성 (AD 없이 처음부터 끝까지)

[MariaDB][Linux] Galera Cluster 설치 - 이중화 / HA 구성

 

반응형