RDS for SQL Server에서 SQL Server 엔진 버전을 업그레이드하거나 다운그레이드하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2022년 9월 20일

Relational Database Service(Amazon RDS) for SQL Server에서 SQL Server 엔진 버전을 업그레이드하거나 다운그레이드하려고 합니다. 어떻게 해야 하나요?

간략한 설명

Amazon RDS for SQL Server는 Express, Web, Standard, Enterprise 버전을 지원합니다. RDS 콘솔이나 AWS Command Line Interface(AWS CLI)를 사용하여 SQL Server 버전 변경을 인플레이스 수정으로 수행할 수 없습니다.

SQL Server 버전을 업그레이드하려면 스냅샷을 생성한 다음, 상위 엔진 버전을 사용하여 복원합니다. 다운그레이드하려면 다음 방법 중 하나를 사용합니다.

  • RDS for SQL Server의 기본 백업 및 복원 옵션을 사용합니다.
  • AWS Database Migration Service(AWS DMS)를 사용합니다.
  • 다른 도구를 사용하여 SQL Server 데이터를 가져오고 내보냅니다.

해결 방법

SQL Server 엔진 버전 업그레이드

SQL Server 엔진 버전을 업그레이드하려면 RDS 스냅샷을 생성한 다음, 해당 스냅샷에서 복원합니다. 업그레이드 제한 사항은 Microsoft SQL Server 고려 사항을 참조하세요.

스냅샷을 사용하여 업그레이드하려면 다음 단계를 수행합니다.

1.    RDS for SQL Server의 원본 인스턴스에 대한 스냅샷을 생성합니다.

2.    1단계에서 생성한 스냅샷을 복원하여 새 RDS 인스턴스를 생성합니다. 복원 중에 원하는 버전을 상위 버전으로 변경합니다.

3.    RDS for SQL Server의 원본 인스턴스 이름을 바꾸거나 해당 인스턴스를 삭제하여 재사용을 위해 DNS 엔드포인트 이름을 해제합니다. 자세한 내용은 RDS 인스턴스 이름 바꾸기 섹션을 참조하세요.

Standard 버전에서 Enterprise 버전으로 업그레이드하는 단계 및 자세한 지침은 Standard 버전에서 Enterprise 버전으로 Amazon RDS for SQL Server 인스턴스 수정를 참조하세요.

다음 업그레이드에서는 동일한 스냅샷 및 복원 방법을 사용할 수 있습니다.

  • Standard 버전에서 Enterprise 버전으로
  • Web 버전에서 Standard 버전 또는 Enterprise 버전으로
  • Express 버전에서 Web 버전, Standard 버전 또는 Enterprise 버전으로

중요 참고 사항: 버전을 업그레이드하는 동안 스냅샷을 복원하면 새 RDS for SQL Server 인스턴스가 생성됩니다. 새 인스턴스에는 스냅샷 소스 인스턴스와 다른 RDS 엔드포인트가 있습니다.

SQL Server 버전 다운그레이드

SQL Server 제품의 제한 사항 때문에 RDS for SQL Server 인스턴스를 상위 버전에서 하위 버전으로의 인플레이스 다운그레이드 기능은 지원되지 않습니다. 하지만 나중에 언급하는 해결 옵션에 따라 해당 조합 중 하나로 RDS for SQL Server 버전을 다운그레이드할 수 있습니다.

  • Enterprise 버전을 Standard, Web 또는 Express 버전으로
  • Standard 버전을 Web 또는 Express 버전으로
  • Web 버전을 Express 버전으로

RDS for SQL Server 버전을 다운그레이드하려면 다음 옵션 중 하나를 사용합니다.

옵션 1: RDS for SQL Server의 기본 백업 및 복원 옵션 사용

참고: 이 옵션을 사용하여 RDS 인스턴스의 하위 버전에서 상위 버전으로 데이터베이스를 이동할 수도 있습니다.

기본 백업 및 복원은 기존 소스 RDS for SQL Server 인스턴스에서 데이터베이스의 전체 백업을 생성합니다. Amazon Simple Storage Service(S3)에서 백업을 저장한 다음, 새 대상 RDS 인스턴스로 백업 파일을 복원합니다.

소스 Enterprise 인스턴스에서 대상 Standard 인스턴스로 다운그레이드하려면 다음 단계를 수행합니다.

1.    Standard 버전 SQL Server에서 새 RDS for SQL Server를 생성합니다. 이는 새 대상 인스턴스입니다.

2.    소스 Enterprise 및 대상 Standard 버전 인스턴스에서 기본 백업 및 복원 옵션을 추가합니다.

3.    S3 버킷에 있는 소스(Enterprise) 인스턴스에서 각 사용자 데이터베이스를 백업합니다.

4.    소스 인스턴스에 있는 각 데이터베이스에서 sys.dm_dm_persisted_sku-features (Transact-SQL) 쿼리를 실행합니다. 이 쿼리는 상위 버전에 연결된 기능 중에서 현재 사용 중인 기능이 있는지 확인합니다. 데이터베이스를 하위 버전 대상 인스턴스로 복원하는 경우 상위 버전에 연결된 기능이 작동하지 않을 수 있습니다.

USE [database-name]
    GO
    SELECT feature_name FROM sys.dm_db_persisted_sku_features;
    GO

5.    S3 버킷에서 대상(Standard) RDS 인스턴스로 백업을 복원합니다.

6.    대상 RDS 인스턴스 데이터베이스에 필요한 로그인 및 사용자를 생성해야 합니다. 또한, 적절한 보안 그룹을 생성하고 적절한 parameter-option 그룹을 연결합니다. 이는 소스 RDS 인스턴스와 동일합니다.

참고: 이전 단계를 사용하여 RDS의 모든 SQL Server 버전에서 데이터베이스를 내보내고 가져올 수 있습니다.

옵션 2: AWS DMS 사용

참고: 이 옵션을 사용하여 RDS 인스턴스의 하위 버전에서 상위 버전으로 데이터베이스를 이동할 수도 있습니다.

AWS DMS를 사용하여 데이터베이스를 마이그레이션합니다. 또한, AWS DMS는 상위 버전 인스턴스(소스 엔드포인트)에서 하위 버전 인스턴스(대상 엔드포인트)로 진행 중인 변경 사항을 복제합니다.

AWS DMS에서는 단방향 복제, 테이블 대량 로드, 데이터 변경 사항 캡처(소스 및 대상 RDS for SQL Server 인스턴스에서 지원함)를 허용합니다.

자세한 내용은 다음 주제를 참조하세요.

옵션 3: 다른 도구를 사용하여 SQL Server 데이터 가져오기 및 내보내기

다음과 같은 추가 도구를 사용하여 데이터베이스를 가져오고 내보낼 수 있습니다.

  • SQL Server 가져오기 및 내보내기 마법사
  • 스크립트 생성 및 게시 마법사
  • 대량 복사(bcp 유틸리티)

이러한 도구를 사용하기 전에 하위 SQL Server 버전의 인스턴스를 생성하고 활성화해야 합니다.

이러한 도구는 기본 백업 및 복원 또는 AWS DMS보다 더 많은 노력이 필요하다는 점을 명심하세요. 반드시 수정해야 하는 데이터 일관성 또는 무결성 오류가 여러 개 발생할 수 있습니다. 이 오류는 이러한 도구를 사용하여 데이터를 이동할 때 발생합니다. 이러한 도구 중에서 사용할 도구를 결정하기 전에 테스트 환경에서 프로세스를 철저히 테스트하세요.

  • SQL Server 가져오기 및 내보내기 마법사: 소스 인스턴스 데이터베이스 및 객체의 스키마를 대상 인스턴스에서 복사하고 생성합니다. 그런 다음, 이 마법사를 사용하여 한 RDS for SQL Server DB 인스턴스에서 다른 데이터 스토어로 하나 이상의 테이블, 보기 또는 쿼리를 복사합니다. 자세한 내용은 SQL Server 가져오기 및 내보내기 마법사를 참조하세요.
  • SQL Server 스크립트 생성 및 게시 마법사와 bcp 유틸리티: SQL Server 스크립트 생성 및 게시 마법사를 사용하여 전체 데이터베이스 또는 선택한 객체에 대한 스크립트를 생성합니다. 대상 SQL Server DB 인스턴스에서 이러한 스크립트를 실행하여 스크립팅된 객체를 다시 생성할 수 있습니다. 그런 다음, bcp 유틸리티를 사용하여 선택한 객체의 데이터를 대상 DB 인스턴스로 대량으로 내보냅니다. 소스 및 대상 RDS 인스턴스 모두에 연결된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 bcp 유틸리티를 실행합니다. 자세한 내용은 SQL Server 스크립트 생성 및 게시 마법사와 bcp 유틸리티를 참조하세요.

참고: 이 섹션에서 언급한 모든 옵션은 RDS for SQL Server 인스턴스의 하위 버전에서 상위 버전으로 데이터베이스를 마이그레이션하는 데 사용할 수도 있습니다. 하지만 SQL Server 버전 업그레이드 섹션에서 설명하는 접근 방식이 더 쉽습니다. 가동 중단, 작업, 관련된 복잡성 등과 같은 요인에 따라 사용할 옵션을 결정할 수 있습니다.

RDS 인스턴스 이름 바꾸기

RDS for SQL Server 버전을 업그레이드하거나 다운그레이드하기 위해 설명한 옵션을 사용하면 항상 새 대상 RDS 인스턴스가 생성됩니다. 새 RDS 인스턴스에는 기존 소스 RDS 인스턴스와 다른 RDS DNS 엔드포인트가 있습니다.

애플리케이션 및 기타 서비스에서 새 RDS 엔드포인트를 업데이트할 때 이러한 구성 요소 중 하나 이상에서 연결 문자열 업데이트가 누락되는 경우가 있습니다. 이 경우 RDS for SQL Server 인스턴스 버전을 변경한 후에 문제가 발생할 수 있습니다.

이를 방지하려면 소스 및 대상 RDS 인스턴스의 이름을 바꾸는 것이 좋습니다. 이름을 바꾸면 대상 버전 인스턴스에 원본 소스 버전 인스턴스와 동일한 RDS DNS 엔드포인트가 있어야 합니다.

이렇게 하면 RDS for SQL Server 인스턴스 버전을 변경한 후에도 종속된 애플리케이션 또는 서비스의 연결 문자열이 변경되지 않습니다.

버전을 변경한 후 소스 및 대상 RDS 인스턴스의 이름을 바꾸려면 다음 단계를 수행합니다.

이 예에서는 소스 RDS 인스턴스가 Enterprise 버전에서 rds-original이라고 가정합니다. 대상 인스턴스는 Standard 버전에서 rds-new입니다.

1.    소스 인스턴스 rds-original로 수신되는 모든 트래픽을 중지합니다(애플리케이션 중지).

2.    RDS 인스턴스에서 SQL Server 버전을 업그레이드하거나 다운그레이드하는 옵션 또는 이전 단계 중 하나를 수행합니다. 버전이 변경되면 두 개의 인스턴스가 생기며, 이때 소스 인스턴스는 rds-original이고 대상 인스턴스는 rds-new입니다.

3.    DB 식별자 이름rds-original에서 rds-original-old와 같은 다른 이름으로 바꾸도록 소스 인스턴스를 수정합니다.

4.    rds-original-old 인스턴스가 사용 가능 상태가 된 후 대상 인스턴스 DB 식별자 이름을 rds-new에서 원본 인스턴스의 이름, rds-original로 바꿉니다.

5.    인스턴스 이름이 rds-original-oldrds-original로 바뀌었으며 인스턴스가 사용 가능 상태인지 확인합니다.

6.    새 버전의 대상 RDS 인스턴스에 연결된 관련 RDS 보안 그룹을 원본 인스턴스와 동일하게 유지해야 합니다. 이렇게 하면 기존 애플리케이션의 네트워크 연결이 동일하게 유지됩니다.

7.    이제 필요한 SQL Server 버전이 있는 rds-original 인스턴스로 수신되는 트래픽을 허용합니다(애플리케이션 시작). RDS에는 소스 인스턴스와 동일한 DNS 엔드포인트가 있으므로 애플리케이션 연결 문자열을 변경할 필요가 없습니다.

8.    애플리케이션 테스트를 수행하여 RDS 인스턴스 버전 변경 후에도 영향이 없는지 확인합니다.

9.    모든 사항에 문제가 없으면 rds-original-old 인스턴스의 최종 스냅샷을 생성한 다음, 이 인스턴스를 삭제하여 비용을 절약하세요.

참고: 프로덕션 환경에 구현하기 전에 먼저 하위 환경에서 활동을 테스트하는 것이 모범 사례입니다. 이렇게 하면 변경에 걸리는 예상 시간을 알 수 있습니다. 또한, 활동 중에 발생하는 문제를 식별하여 프로덕션 환경에서 보다 원활하게 구현할 수 있습니다.