RDS for SQL Server에서 기본 백업 및 복원 사용 시 발생할 수 있는 일반적인 문제는 무엇입니까?

8분 분량
0

Microsoft SQL Server 인스턴스용 Amazon Relational Database Service(RDS)에 대한 기본 백업 또는 복원 중입니다. 이 과정에서 발생할 수 있는 일반적인 오류는 무엇입니까?

해결 방법

RDS for SQL Server 기본 백업 및 복원 옵션을 사용할 때 검증 오류가 발생할 수 있습니다. 이러한 오류는 즉시 표시되며 작업은 생성되지 않습니다. 다음은 일반적인 오류 및 권장 해결 방법입니다.

오류: 작업 실패 또는 RESTORE_DB 동시 요청으로 인해 작업이 중단되었습니다.

이 오류는 Amazon Elastic Compute Cloud(Amazon EC2) 또는 온프레미스에서 백업 복원 시 DB 인스턴스에 공간 관련 문제가 야기되었을 때 발생합니다.

[2022-04-07 05:21:22.317] Aborted the task because of a task failure or a concurrent RESTORE_DB request.
[2022-04-07 05:21:22.437] Task has been aborted
[2022-04-07 05:21:22.440] There is not enough space on the disk to perform restore database operation.

이 오류를 해결하려면 다음을 수행합니다.

옵션 1:

1.    원본 인스턴스(EC2 또는 온프레미스)에서 다음 명령을 실행합니다. 이 명령은 데이터 파일 및 Tlog 파일을 포함하는 데이터베이스의 크기를 확인합니다. 다음 예에서는 **[DB_NAME]**을 데이터베이스 이름으로 바꿉니다.

SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8)/1024/1024 SizeGB
FROM sys.master_files
WHERE DB_NAME(database_id) = '[DB_NAME]'
GO
Database Size = (DB_Name size + DB_Name_Log size)

2.    원본 인스턴스의 데이터베이스 크기를 DB 인스턴스의 사용 가능한 스토리지와 비교합니다. 사용 가능한 스토리지를 적절히 늘린 다음 데이터베이스를 복원합니다.

옵션 2:

소스 SQL Server에서 현재의 DB 로그 파일을 축소하여 사용하지 않은 공간을 지운 다음, 데이터베이스 백업을 수행합니다.

다음 명령을 사용하여 로그 파일을 축소합니다.

DBCC SHRINKFILE (LogFileName, Desired Size in MB)

오류: 작업 실패 또는 RESTORE_DB 동시 요청으로 인해 작업이 중단되었습니다.

다음 오류는 SQLSERVER_BACKUP_RESTORE 옵션과 관련된 AWS Identity and Access Management(IAM) 역할 또는 정책과 대한 권한 문제가 야기되었을 때 발생합니다.

[2020-12-15 08:56:22.143] Aborted the task because of a task failure or a concurrent RESTORE_DB request.
[2020-12-15 08:56:22.213] Task has been aborted
[2020-12-15 08:56:22.217] Access Denied

이 오류를 해결하려면 다음을 수행합니다.

1.    복원 쿼리를 확인하여 S3 버킷과 폴더 접두사가 올바른지 확인합니다.

exec msdb.dbo.rds_restore_database
      @restore_db_name='database_name',
      @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';

2.    IAM 정책에 다음 속성이 포함되어 있는지 확인합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::bucket_name"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectAttributes",
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::bucket_name/*"
    }
  ]
}

참고: S3 버킷의 ARN을 arn:aws:s3:::bucket_name로 바꿉니다.

3.    정책이 SQLSERVER_BACKUP_RESTORE 옵션에 지정한 역할과 올바르게 연결되어 있는지 확인합니다.

4.    SQLSERVER_BACKUP_RESTORE 옵션이 DB 인스턴스와 연결된 옵션 그룹인지 확인합니다.

S3 버킷 ARN
S3 폴더 접두사(선택 사항)

자세한 내용은 SQL Server를 실행하는 Amazon RDS DB 인스턴스의 기본 백업을 수행하려면 어떻게 해야 합니까?를 참조하십시오.

오류: 작업 실패 또는 RESTORE_DB 동시 요청으로 인해 작업이 중단되었습니다.

이 오류는 일반적으로 교차 계정 데이터베이스 복원과 관련이 있습니다.

예:

  • 계정 A에는 백업이 저장되는 S3 버킷이 있습니다.
  • 계정 B에는 복원이 필요한 RDS DB 인스턴스가 있습니다.

이 오류는 옵션과 연결된 IAM 역할 또는 정책에 권한 관련 문제가 야기되었을 때 발생합니다. 또는 교차 계정의 S3 버킷과 연결된 버킷 정책에 권한 문제가 발생했습니다.

[2022-02-03 15:57:22.180] Aborted the task because of a task failure or a concurrent
RESTORE_DB request.
[2022-02-03 15:57:22.260] Task has been aborted
[2022-02-03 15:57:22.263] Error making request with Error Code Forbidden and Http Status Code Forbidden. No further error information was returned by the service.

이 오류를 해결하려면 다음을 수행합니다.

1.    계정 B(복원할 대상 DB 인스턴스가 있는 계정)의 IAM 정책에 다음 속성이 포함되어 있는지 확인하십시오.

{
  "Version": "2012-10-17",
  "Statement":
    [
      {
        "Effect": "Allow",
        "Action":
          [
            "s3:ListBucket",
            "s3:GetBucketLocation"
          ],
        "Resource": "arn:aws:s3:::name_of_bucket_present_in_Account_A"
      },
      {
        "Effect": "Allow",
        "Action":
          [
            "s3:GetObject",
            "s3:PutObject",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload"
          ],
        "Resource": "arn:aws:s3::: name_of_bucket_present_in_Account_A /*"
      },
      {
        "Action": [
          "kms:DescribeKey",
          "kms:GenerateDataKey",
          "kms:Decrypt",
          "kms:Encrypt"
          "kms:ReEncryptTo",
          "kms:ReEncryptFrom"
        ],
        "Effect": "Allow",
        "Resource": [
          "arn:aws: PUT THE NAME OF THE KEY HERE",
          "arn:aws:s3::: name_of_bucket_present_in_Account_A /*"
        ]
      }
    ]
}

2.    계정 A의 S3 버킷과 연결된 버킷 정책에 다음 속성이 포함되어 있는지 확인합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Permission to cross account",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::AWS-ACCOUNT-ID-OF-RDS:role/service-role/PUT-ROLE-NAME"   /*---- Change Details here
        ]
      },
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
             ],
      "Resource": [
        "arn:aws:s3:::PUT-BUCKET-NAME"   /*---- Change Details here
      ]
    },
    {
      "Sid": "Permission to cross account on object level",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::AWS-ACCOUNT-ID-OF-RDS:role/service-role/PUT-ROLE-NAME"   /*---- Change Details here
        ]
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": [
        "arn:aws:s3::: PUT-BUCKET-NAME/*"  /*---- Change Details here
      ]
    }
  ]
}

자세한 내용은 다음을 참조하십시오.

오류: 지문이 'XXXXXX'인 서버 인증서를 찾을 수 없습니다.

이 오류는 투명한 데이터 암호화(TDE)를 사용하는 데이터베이스를 EC2 또는 온프레미스에서 RDS for SQL Server로 복원할 때 발생합니다.

[2022-06-1511:55:22.280] Cannot find server certificate with thumbprint 'XXXXXXX'.
[2022-06-15 11:55:22.280] RESTORE FILELIST is terminating abnormally.
[2022-06-15 11:55:22.300] Aborted the task because of a task failure or a concurrent RESTORE_DB request.
[2022-06-15 11:55:22.333] Task has been aborted
[2022-06-15 11:55:22.337] Empty restore file list result retrieved.

이 오류는 TDE를 사용하여 암호화된 데이터베이스의 백업을 오리진 서버가 아닌 다른 SQL 인스턴스로 복원하려고 시도했음을 나타냅니다. 오리진 서버의 TDE 인증서를 대상 서버로 가져와야 합니다. 서버 인증서 가져오기 및 해당하는 제한 사항에 대한 자세한 내용은 SQL Server의 투명한 데이터 암호화 지원을 참조하십시오.

인증서 가져오기 이외의 방법으로 이 문제를 해결하려면 다음을 수행하십시오.

이 오류를 방지하기 위해 사용할 수 있는 두 가지 방법이 있습니다.

옵션 1: 데이터베이스 백업은 온프레미스 또는 EC2 인스턴스에서 가져오지만 대상 RDS SQL Server는 다중 AZ에 위치함

1.    TDE가 켜진 상태로 소스 데이터베이스의 백업을 생성합니다.

2.    온프레미스 서버에서 백업을 새 DB로 복원합니다.

3.    새로 생성한 데이터베이스에서 TDE를 끕니다. 다음 명령을 사용하여 TDE를 끕니다.

다음 명령을 실행하여 데이터베이스의 암호화를 해제합니다. 다음 명령에서 DatabaseName을 데이터베이스의 올바른 이름으로 변경합니다.

USE master;
GO
ALTER DATABASE [Databasename] SET ENCRYPTION OFF;
GO

다음 명령을 실행하여 암호화에 사용된 DEK를 삭제합니다. 다음 명령에서 DatabaseName을 데이터베이스의 올바른 이름으로 변경합니다.

USE [Databasename];
GO
DROP DATABASE ENCRYPTION KEY;
GO

4.    기본 SQL Server 백업을 생성하고 이 새 백업을 원하는 RDS 인스턴스로 복원합니다. 자세한 내용은 SQL Server를 실행하는 Amazon RDS DB 인스턴스의 기본 백업을 수행하려면 어떻게 해야 합니까?를 참조하십시오.

5.    새 RDS 데이터베이스에서 TDE를 다시 켜십시오.

옵션 2: 해당 데이터베이스는 TDE로 암호화한 RDS for SQL Server 데이터베이스에서 가져왔습니다.

1.    원본 인스턴스의 스냅샷을 사용하여 DB를 새 인스턴스로 복원합니다.

2.    스냅샷에서 생성한 데이터베이스에서 TDE를 끕니다.

3.    기본 SQL 백업을 생성하고 이 새 백업을 원하는 RDS 인스턴스로 복원합니다.

4.    새 RDS 데이터베이스에서 TDE를 다시 켜십시오.

RDS for SQL Server의 기본 백업에서 발생하는 일반적인 오류

오류: 작업 실패 또는 RDS 자동 백업의 기본 백업 기간과 중복되어 작업이 중단되었습니다.

다음 오류는 SQLSERVER_BACKUP_RESTORE 옵션과 관련된 IAM 역할 또는 정책과 대한 권한 문제가 야기되었을 때 발생합니다.

[2022-07-16 16:08:22.067]
Task execution has started. 
[2022-07-16 16:08:22.143] Aborted the task because of a task failure or an overlap with your preferred backup window for RDS automated backup.
[2022-07-16 16:08:22.147] Task has been aborted [2022-07-16 16:08:22.150] Access Denied

이 문제를 해결하려면 다음을 수행합니다.

1.    복원 쿼리를 확인하여 S3 버킷과 폴더 접두사가 올바른지 확인합니다.

exec msdb.dbo.rds_restore_database
      @restore_db_name='database_name',
      @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';

2.    IAM 정책에 다음 속성이 포함되어 있는지 확인합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::bucket_name"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectAttributes",
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::bucket_name/*"
    }
  ]
}

참고: arn:aws:s3:::bucket_name을 S3 버킷의 ARN으로 변경합니다.

3.    정책이 SQLSERVER_BACKUP_RESTORE 옵션에 표시된 역할과 올바르게 연결되어 있는지 확인합니다.

4.    옵션 그룹의 SQLSERVER_BACKUP_RESTORE 옵션이 DB 인스턴스와 연결되어 있는지 확인합니다.

S3 버킷 ARN
S3 폴더 접두사(선택 사항)

자세한 내용은 SQL Server를 실행하는 Amazon RDS DB 인스턴스의 기본 백업을 수행하려면 어떻게 해야 합니까?를 참조하십시오.

오류: "XXX"에 쓰기 실패, S3에 청크를 쓸 수 없음, S3 쓰기 스트림 업로드 실패

이는 유명한 RDS for SQL Server 관련 문제입니다. 가끔 데이터베이스 크기를 잘못 예측하여 백업 절차에 실패하고, 다음 오류가 발생합니다.

[2022-04-21 16:45:04.597] reviews_consumer/reviews_consumer_PostUpdate_042122.bak: Completed processing 100% of S3 chunks.
[2022-04-21 16:47:05.427] Write on "XXXX" failed: 995(The I/O operation has been aborted because of either a thread exit or an application request.) A nonrecoverable I/O error occurred on file "XXXX:" 995(The I/O operation has been aborted because of either a thread exit or an application request.). BACKUP DATABASE is terminating abnormally.
[2022-04-21 16:47:22.033] Unable to write chunks to S3 as S3 processing has been aborted. [2022-04-21 16:47:22.040] reviews_consumer/reviews_consumer_PostUpdate_042122.bak: Aborting S3 upload, waiting for S3 workers to clean up and exit
[2022-04-21 16:47:22.053] Aborted the task because of a task failure or an overlap with your preferred backup window for RDS automated backup.
[2022-04-21 16:47:22.060] reviews_consumer/reviews_consumer_PostUpdate_042122.bak: Aborting S3 upload, waiting for S3 workers to clean up and exit
[2022-04-21 16:47:22.067] S3 write stream upload failed. Encountered an error while uploading an S3 chunk: Part number must be an integer between 1 and 10000, inclusive S3 write stream upload failed. Encountered an error while uploading an S3 chunk: Part number must be an integer between 1 and 10000, inclusive S3 write stream upload failed. Encountered an error while uploading an S3 chunk: Part number must be an integer between 1 and 10000, inclusive S3 write stream upload failed. Encountered an error while uploading an S3 chunk: Part number must be an integer between 1 and 10000, inclusive

이 오류의 해결 방법은 데이터베이스 백업 압축 켜기입니다. 이렇게 하면 백업이 압축되어 S3가 파일을 더 쉽게 수신할 수 있습니다.

다음 명령을 실행하여 백업 압축을 활성화합니다.

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';

댓글 없음

관련 콘텐츠