데이터베이스, 배포 토폴로지 및 백업

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019

Azure DevOps Server 의존하는 데이터베이스에 대한 정기적인 백업 일정을 만들어 데이터 손실로부터 배포를 보호할 수 있습니다. Azure DevOps Server 배포를 완전히 복원하려면 먼저 모든 Azure DevOps Server 데이터베이스를 백업합니다.

배포에 SQL Server Reporting Services 포함된 경우 Azure DevOps에서 해당 구성 요소 내에서 사용하는 데이터베이스도 백업해야 합니다. 동기화 오류 또는 데이터 불일치 오류를 방지하려면 모든 백업을 같은 타임스탬프로 동기화해야 합니다. 성공적으로 동기화하는 가장 쉬운 방법은 표시된 트랜잭션을 사용하는 것입니다. 모든 데이터베이스에서 관련 트랜잭션을 정기적으로 표시하여 데이터베이스에서 일련의 일반적인 복구 지점을 설정합니다. 보고를 사용하는 단일 서버 배포를 백업하기 위한 단계별 지침은 백업 일정 및 계획 만들기를 참조하세요.

데이터베이스 백업

데이터베이스 백업을 만들어 데이터 손실로부터 Azure DevOps 배포를 보호합니다. 다음 표와 함께 제공되는 그림에서는 백업할 데이터베이스를 보여 줍니다. 이러한 데이터베이스를 배포에 물리적으로 배포하는 방법에 대한 예제를 제공합니다.

데이터베이스 유형 제품 필수 구성 요소인가요?
구성 데이터베이스 Azure DevOps Server
웨어하우스 데이터베이스 Azure DevOps Server
프로젝트 컬렉션 데이터베이스 Azure DevOps Server
보고 데이터베이스 SQL Server Reporting Services No
분석 데이터베이스 SQL Server Analysis Services

배포 토폴로지

이 예제 토폴로지와 같이 배포 구성에 따라 백업이 필요한 모든 데이터베이스가 같은 물리적 서버에 있을 수 있습니다.

참고

이 예제에는 Reporting Services 또는 SharePoint 제품이 포함되어 있지 않으므로 보고, 분석 또는 SharePoint 제품과 연결된 데이터베이스를 백업할 필요가 없습니다.

간단한 Azure DevOps Server 데이터베이스 구조

데이터베이스가 여러 서버 및 서버 팜에 배포될 수도 있습니다. 이 예제 토폴로지에서는 6개 서버 또는 서버 팜에 걸쳐 있는 다음 데이터베이스를 백업해야 합니다.

  • 구성 데이터베이스

  • 웨어하우스 데이터베이스

  • SQL Server 클러스터에 있는 프로젝트 컬렉션 데이터베이스

  • SQL Server 실행 중인 독립 실행형 서버에 있는 컬렉션 데이터베이스

  • Reporting Services를 실행 중인 서버에 있는 데이터베이스

  • Analysis Services를 실행 중인 서버에 있는 데이터베이스

  • SharePoint 웹 애플리케이션 모두에 대한 SharePoint 제품 관리 데이터베이스 및 사이트 모음 데이터베이스

    SharePoint 데이터베이스가 여러 서버에서 확장되는 경우 예약된 백업 기능을 사용하여 백업할 수 없습니다. 해당 데이터베이스에 대한 백업을 수동으로 구성하고 해당 백업이 Azure DevOps Server 데이터베이스 백업과 동기화되는지 확인해야 합니다. 자세한 내용은 Azure DevOps Server를 수동으로 백업을 참조하세요.

복잡한 Azure DevOps Server 데이터베이스 구조

두 예제 모두 서버에 연결하는 클라이언트는 백업하지 않아도 됩니다. 그러나 복원된 배포에 다시 연결하려면 클라이언트 컴퓨터에서 Azure DevOps Server 캐시를 수동으로 지워야 할 수 있습니다.

백업할 데이터베이스

다음 목록에서는 배포 리소스에 따라 백업해야 하는 항목에 대한 추가 세부 정보를 제공합니다.

중요

다음 목록의 모든 데이터베이스는 SQL Server 데이터베이스입니다. 언제든지 SQL Server Management Studio 사용하여 개별 데이터베이스를 백업할 수 있지만 가능한 경우 이러한 개별 백업을 사용하지 않아야 합니다. Azure DevOps에서 사용하는 데이터베이스는 모두 관련되므로 개별 백업에서 복원하는 경우 예기치 않은 결과가 발생할 수 있습니다. 데이터베이스를 하나만 백업하면 해당 데이터베이스의 데이터가 다른 데이터베이스의 데이터와 동기화되지 않을 수 있습니다.

  • Azure DevOps Server 데이터베이스 - Azure DevOps Server 논리 데이터 계층에는 배포의 각 프로젝트 컬렉션에 대한 구성 데이터베이스, 웨어하우스 데이터베이스 및 데이터베이스를 비롯한 여러 SQL Server 데이터베이스가 포함됩니다. 이러한 데이터베이스는 모두 동일한 서버에 있거나, 동일한 SQL Server 배포의 여러 인스턴스에 분산되거나, 여러 서버에 분산되어 있을 수 있습니다. 데이터 손실을 방지하려면 실제 배포 방식에 관계없이 모든 데이터베이스를 같은 타임스탬프에 백업해야 합니다. 특정 시간 또는 간격으로 실행되는 유지 관리 계획을 사용하여 데이터베이스 백업을 수동 또는 자동으로 수행할 수 있습니다.

    중요

    Azure DevOps 데이터베이스 목록은 정적이지 않습니다. 컬렉션을 만들 때마다 새 데이터베이스가 만들어집니다. 컬렉션을 만들 때 해당 컬렉션의 데이터베이스를 유지 관리 계획에 추가해야 합니다.

  • Reporting Services 및 Analysis Services용 데이터베이스 - 배포에서 SQL Server Reporting Services 또는 SQL Server Analysis Services 사용하여 Azure DevOps Server 대한 보고서를 생성하는 경우, 보고 및 분석 데이터베이스를 백업해야 합니다. 그러나 복원 후에 웨어하우스 등의 특정 데이터베이스를 다시 생성해야 합니다.
  • 보고서 서버의 암호화 키 - 보고서 서버에 백업해야 하는 암호화 키가 있습니다. 이 키는 보고서 서버 데이터베이스에 저장되어 있는 중요한 정보를 보호합니다. Reporting Services 구성 도구 또는 명령줄 도구를 사용하여 이 키를 수동으로 백업할 수 있습니다.

고급 백업 준비

Azure DevOps를 배포할 때는 사용자가 만든 계정과 지정한 컴퓨터 이름, 암호 및 설정 옵션에 대한 레코드를 유지해야 합니다. 또한 모든 복구 자료, 문서, 데이터베이스 및 트랜잭션 로그 백업의 복사본을 안전해 위치에 보관해야 합니다. 화재나 지진과 같은 재해로부터 데이터를 보호하려면 서버와 다른 위치에 서버 백업의 복제본을 보관하십시오. 이렇게 하면 중요한 데이터가 손실되지 않도록 보호할 수 있습니다. 가장 좋은 방법은 백업 미디어의 복사본을 세 개 만든 다음, 적어도 하나는 제어된 환경의 오프사이트에 보관하는 것입니다.

중요

데이터 복원 시험 작업을 정기적으로 수행하여 파일이 올바르게 백업되는지 확인합니다. 평가판 복원은 소프트웨어 전용 확인과 함께 표시되지 않는 하드웨어 문제를 표시할 수 있습니다.

데이터베이스를 백업 및 복원하는 경우 네트워크 주소를 가진 미디어(예: 네트워크 드라이브로 공유된 테이프 및 디스크)에 데이터를 백업해야 합니다. 다음과 같은 미디어 관리 계획을 백업 계획에 포함해야 합니다.

  • 백업 세트의 저장과 재활용을 위한 추적 및 관리 계획
  • 백업 미디어 덮어쓰기 일정
  • 다중 서버 환경의 경우 중앙 집중화된 백업과 분산 백업 중 사용할 백업 방법 결정
  • 미디어 수명을 추적하는 방법
  • 백업 세트 또는 백업 미디어(예: 테이프)가 손실될 경우 그 영향을 최소화하는 절차
  • 백업 세트의 저장 위치(온사이트 또는 오프사이트) 결정 및 이 결정이 복구 시간에 미치는 영향 분석

Azure DevOps 데이터는 SQL Server 데이터베이스에 저장되므로 Azure DevOps 클라이언트가 설치된 컴퓨터를 백업할 필요가 없습니다. 이러한 컴퓨터와 관련된 미디어 오류 또는 재해가 발생한 경우 클라이언트 소프트웨어를 다시 설치하고 서버에 다시 연결할 수 있습니다. 클라이언트 소프트웨어를 다시 설치하면 사용자는 백업에서 클라이언트 컴퓨터를 복원하는 더 깨끗하고 신뢰할 수 있는 대안을 갖게 됩니다.

사용 가능한 예약된 백업 기능을 사용하거나 SQL Server 유지 관리 계획을 수동으로 만들어 Azure DevOps 배포와 관련된 데이터베이스를 백업하여 서버를 백업할 수 있습니다. Azure DevOps 데이터베이스는 서로 관계하여 작동하며 수동 계획을 만드는 경우 백업하고 동시에 복원해야 합니다. 데이터베이스 백업 전략에 대한 자세한 내용은 SQL Server 데이터베이스 백업 및 복원을 참조하세요.

백업 유형

사용 가능한 백업 유형을 이해하면 배포를 백업하기 위한 최상의 옵션을 결정하는 데 도움이 됩니다. 예를 들어 대규모 배포를 작업 중이며 제한된 저장소 리소스를 효율적으로 사용하면서 데이터 손실을 방지하려는 경우 전체 데이터 백업뿐 아니라 차등 백업을 구성할 수 있습니다. SQL Server Always On 사용하는 경우 보조 데이터베이스의 백업을 수행할 수 있습니다. 백업 압축을 사용하거나 백업을 여러 파일로 분할할 수도 있습니다. 다음은 백업 옵션에 대한 간략한 설명입니다.

전체 데이터 백업(데이터베이스)

배포 복구를 위해서는 전체 데이터베이스 백업이 필요합니다. 전체 백업에는 트랜잭션 로그의 부분이 포함되어 있으므로 전체 백업을 복구할 수 있습니다. 전체 백업은 백업이 완료된 시점의 전체 데이터베이스를 나타낸다는 점에서 완전히 독립적입니다. 자세한 내용은 전체 데이터베이스 백업을 참조하세요.

차등 데이터 백업(데이터베이스)

차등 데이터베이스 백업은 차등 기반이라고 하는 마지막 전체 데이터베이스 백업 이후 변경된 데이터만 기록합니다. 차등 데이터베이스 백업은 전체 데이터베이스 백업보다 작고 빠릅니다. 이 옵션을 사용하면 복잡성은 증가하지만 백업 시간을 줄일 수 있습니다. 큰 데이터베이스의 경우 차등 백업은 데이터베이스 백업보다 짧은 간격으로 발생하므로 작업 손실 가능성을 줄일 수 있습니다. 자세한 내용은 차등 데이터베이스 백업을 참조하세요.

트랜잭션 로그를 정기적으로 백업할 수도 있습니다. 이러한 백업은 전체 데이터베이스 백업 모델을 사용하는 경우 데이터를 복구하는 데 필요합니다. 트랜잭션 로그를 백업하는 경우 데이터베이스를 실패 지점 또는 이전 시점으로 복구할 수 있습니다.

트랜잭션 로그 백업

트랜잭션 로그는 각 수정을 수행한 트랜잭션 외에 데이터베이스에서 발생한 모든 수정의 직렬 레코드입니다. 또한 각 트랜잭션의 시작과 데이터 변경 내용을 기록하고, 필요한 경우 해당 트랜잭션 동안 수정된 내용을 취소하는 데 충분한 정보를 기록합니다. 데이터베이스에서 로그된 작업이 발생함에 따라 로그 크기도 지속적으로 커집니다.

트랜잭션 로그를 백업하면 데이터베이스를 이전 시점으로 복구할 수 있습니다. 예를 들어 원치 않는 데이터를 입력하거나 오류가 발생하기 전에 데이터베이스를 한 지점으로 복원할 수 있습니다. 데이터베이스 백업과 함께 트랜잭션 로그 백업도 복구 전략에 포함해야 합니다. 자세한 내용은 트랜잭션 로그 백업(SQL Server)을 참조하세요.

일반적으로 트랜잭션 로그 백업은 전체 백업보다 리소스를 적게 사용합니다. 따라서 전체 백업보다 자주 트랜잭션 로그 백업을 만들어 데이터 손실 위험을 줄일 수 있습니다. 그러나 트랜잭션 로그 백업의 크기가 전체 백업보다 큰 경우도 있습니다. 예를 들어 트랜잭션 속도가 높은 데이터베이스를 사용하면 트랜잭션 로그가 빠르게 증가합니다. 이런 경우에는 트랜잭션 로그 백업을 더 자주 만들어야 합니다. 자세한 내용은 전체 트랜잭션 로그 문제 해결(SQL Server 오류 9002)을 참조하세요.

다음과 같은 유형의 트랜잭션 로그 백업을 수행할 수 있습니다.

  • 순수 로그 백업은 일정 기간 동안의 트랜잭션 로그 레코드만 포함하고 대량의 변경 내용은 포함하지 않습니다.
  • 대량 로그 백업은 대량 작업으로 변경된 데이터 페이지 및 로그를 포함합니다. 지정 시간 복구는 허용되지 않습니다.
  • 비상 로그 백업은 손상되었을 가능성이 있는 데이터베이스로부터 만들어져 아직 백업되지 않은 로그 레코드를 캡처합니다. 이 백업은 작업 손실을 방지하기 위해 오류 발생 후에 만들어지며 순수 로그 데이터 또는 대량 로그 데이터를 포함할 수 있습니다.

데이터 동기화는 Azure DevOps Server 성공적으로 복원하는 데 중요하므로 백업을 수동으로 구성하는 경우 백업 전략의 일부로 표시된 트랜잭션을 사용해야 합니다. 자세한 내용은 백업 일정 및 계획 만들기 및Azure DevOps Server 수동으로 백업을 참조하세요.

애플리케이션 계층 서비스 백업

논리 애플리케이션 계층에 필요한 유일한 백업은 Reporting Services 암호화 키에 대한 것입니다. 예약된 백업 기능을 사용하여 배포를 백업하는 경우 계획의 일부로 이 키가 백업됩니다. 프로젝트 포털로 사용되는 웹 사이트를 백업해야 한다고 가정할 수 있습니다.

데이터 계층보다 애플리케이션 계층을 더 쉽게 백업할 수 있지만 애플리케이션 계층을 복원하는 몇 가지 단계는 여전히 있습니다. Azure DevOps Server 위해 다른 애플리케이션 계층을 설치하고, 새 애플리케이션 계층을 사용하도록 프로젝트 컬렉션을 리디렉션하고, 프로젝트의 포털 사이트를 리디렉션해야 합니다.

기본 데이터베이스 이름

데이터베이스 이름을 사용자 지정하지 않으면 다음 표를 사용하여 Azure DevOps Server 배포에 사용되는 데이터베이스를 식별할 수 있습니다. 앞에서 언급했듯이 모든 배포에 이러한 데이터베이스가 모두 있는 것은 아닙니다. 예를 들어 Reporting Services 사용하여 Azure DevOps Server 구성하지 않은 경우 ReportServer 또는 ReportServerTempDB 데이터베이스가 없습니다. 마찬가지로 랩 관리를 지원하도록 Azure DevOps Server 구성하지 않으면 SCVMM(System Center Virtual Machine Manager( VirtualManagerDB)에 대한 데이터베이스가 없습니다. 또한 Azure DevOps Server 사용하는 데이터베이스는 둘 이상의 instance SQL Server 또는 둘 이상의 서버에 분산될 수 있습니다.

참고

기본적으로 접두사 TFS_ Azure DevOps Server 설치하거나 작동하는 동안 자동으로 만들어지는 데이터베이스의 이름에 추가됩니다.

데이터베이스 Description
TFS_Configuration Azure DevOps Server 구성 데이터베이스에는 배포에 대한 카탈로그, 서버 이름 및 구성 데이터가 포함됩니다. 이 데이터베이스의 이름에는 Azure DevOps Server 설치한 사용자의 사용자 이름과 같이 TFS_ 구성 사이에 추가 문자가 포함될 수 있습니다. 예를 들어 데이터베이스 이름은 TFS_UserNameConfiguration
TFS_Warehouse 웨어하우스 데이터베이스에는 Reporting Services에서 사용하는 웨어하우스를 빌드하는 데 필요한 데이터가 포함됩니다. 이 데이터베이스의 이름에는 Azure DevOps Server 설치한 사용자의 사용자 이름과 같이 TFS_웨어하우스 사이에 추가 문자가 포함될 수 있습니다. 예를 들어 데이터베이스 이름은 TFS_UserNameWarehouse 수 있습니다.
TFS_CollectionName 프로젝트 컬렉션의 데이터베이스에는 해당 컬렉션의 프로젝트에 대한 모든 데이터가 포함됩니다. 이 데이터에는 소스 코드, 빌드 구성, 랩 관리 구성 등이 포함됩니다. 컬렉션 데이터베이스의 수는 컬렉션의 수와 같습니다. 예를 들어 배포에 세 개의 컬렉션이 있는 경우 이러한 세 개의 컬렉션 데이터베이스를 백업해야 합니다. 각 데이터베이스의 이름에는 컬렉션을 만든 사람의 사용자 이름과 같은 TFS_CollectionName 사이에 추가 문자가 포함될 수 있습니다. 예를 들어 컬렉션 데이터베이스의 이름은 TFS_UserNameCollectionName 수 있습니다.
TFS_Analysis SQL Server Analysis Services 데이터베이스에는 Azure DevOps Server 배포하기 위한 데이터 원본 및 큐브가 포함되어 있습니다. 이 데이터베이스의 이름에는 Analysis Services를 설치한 사용자의 사용자 이름과 같이 TFS_ 및 Analysis 사이에 추가 문자가 포함될 수 있습니다. 예를 들어 데이터베이스 이름은 TFS_UserNameAnalysis 수 있습니다.
참고: 이 데이터베이스를 백업할 수 있지만 복원된 TFS_Warehouse 데이터베이스에서 웨어하우스를 다시 빌드해야 합니다.
ReportServer Reporting Services 데이터베이스에는 Azure DevOps Server 배포에 대한 보고서 및 보고서 설정이 포함되어 있습니다.
참고: Reporting Services Azure DevOps Server 별도의 서버에 설치된 경우 이 데이터베이스가 Azure DevOps Server 데이터 계층 서버에 없을 수 있습니다. 이 경우 Azure DevOps Server 별도로 구성, 백업 및 복원해야 합니다. 동기화 오류를 방지하려면 데이터베이스의 유지 관리를 동기화해야 합니다.
ReportServerTempDB Reporting Services의 임시 데이터베이스에는 특정 보고서를 실행할 때 일시적으로 정보가 저장됩니다.
참고: Reporting Services Azure DevOps Server 아닌 별도의 서버에 설치된 경우 이 데이터베이스는 Azure DevOps Server 위해 데이터 계층 서버에 없을 수 있습니다. 이 경우 Azure DevOps Server 별도로 구성, 백업 및 복원해야 합니다. 그러나 동기화 오류가 발생하지 않도록 하려면 데이터베이스의 유지 관리를 동기화해야 합니다.
VirtualManagerDB SCVMM의 관리 데이터베이스에는 가상 컴퓨터, 가상 컴퓨터 호스트, 가상 컴퓨터 라이브러리 서버 및 해당 속성과 같이 SCVMM 관리자 콘솔에서 볼 수 있는 정보가 포함됩니다.
참고: SCVMM이 Azure DevOps Server 아닌 별도의 서버에 설치된 경우 이 데이터베이스가 Azure DevOps Server 데이터 계층 서버에 없을 수 있습니다. 이 경우 Azure DevOps Server 별도로 구성, 백업 및 복원해야 합니다. 그러나 동기화 오류가 발생하지 않도록 하려면 표시된 트랜잭션을 사용하고 데이터베이스의 유지 관리를 동기화해야 합니다.