다음을 통해 공유


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

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 배포를 보호합니다. 다음 표와 함께 제공되는 그림에서는 백업할 데이터베이스를 보여 줍니다. 이러한 데이터베이스를 배포에 물리적으로 배포하는 방법에 대한 예제를 제공합니다.

데이터베이스 유형 Product 필수 구성 요소인가요?
구성 데이터베이스 Azure DevOps Server
Warehouse 데이터베이스 Azure DevOps Server
프로젝트 컬렉션 데이터베이스 Azure DevOps Server
보고 데이터베이스 SQL Server Reporting Services 아니요
분석 데이터베이스 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에 대한 캐시를 수동으로 지워야 할 수 있습니다.

백업할 데이터베이스

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

Important

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

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

    Important

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

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

백업에 대한 고급 준비

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

Important

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

데이터베이스를 백업하고 복원할 때 네트워크 주소(예: 네트워크 드라이브로 공유된 테이프 및 디스크)를 사용하여 데이터를 미디어에 백업해야 합니다. 백업 계획에는 다음 전술과 같은 미디어 관리를 위한 프로비전이 포함되어야 합니다.

  • 백업 세트를 저장하고 재활용하기 위한 추적 및 관리 계획입니다.
  • 백업 미디어를 덮어쓰기 위한 일정입니다.
  • 다중 서버 환경에서는 중앙 집중식 또는 분산 백업을 사용하기로 결정합니다.
  • 미디어의 유용한 수명을 추적하는 방법입니다.
  • 백업 세트 또는 백업 미디어(예: 테이프)의 손실 영향을 최소화하는 절차입니다.
  • 백업 집합을 현장 또는 오프사이트에 저장하기로 결정하고 이 결정이 복구 시간에 어떤 영향을 미칠 수 있는지 분석합니다.

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에서 사용하는 데이터베이스는 둘 이상의 SQL Server 인스턴스 또는 둘 이상의 서버에 분산될 수 있습니다.

참고 항목

기본적으로 접두사 TFS_ Azure DevOps Server를 설치하거나 작동하는 동안 자동으로 생성되는 모든 데이터베이스의 이름에 추가됩니다.

데이터베이스 설명
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와 별도로 구성, 백업 및 복원해야 합니다. 그러나 표시된 트랜잭션을 사용하고 데이터베이스 유지 관리를 동기화하여 동기화 오류를 방지해야 합니다.