本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將資料庫快照資料匯出至 Amazon S3
您可以將資料庫快照資料匯出至 Amazon S3 儲存貯體。匯出程序會在背景執行,不會影響使用中資料庫的效能。
匯出資料庫快照時,Amazon 會從快照RDS擷取資料,並將其存放在 Amazon S3 儲存貯體中。資料會以壓縮且一致的 Apache Parquet 格式存放。
您可以匯出所有類型的資料庫快照,包括手動快照、自動系統快照,以及由服務建立的快照。 AWS Backup 根據預設會匯出快照中的所有資料。但是,您可以選擇匯出特定資料庫、結構描述或資料表集。
匯出資料後,您可以直接透過 Amazon Athena 或 Amazon Redshift Spectrum 等工具分析匯出後的資料。如需使用雅典娜讀取實木地板資料的詳細資訊,請參閱 Amazon Athena 使用者指南 SerDe中的鑲木地板。如需使用 Redshift 頻譜讀取實木地板資料的詳細資訊,請參閱 Amazon Redshift 資料庫COPY開發人員指南中的單欄式資料格式。
主題
區域和版本可用性
功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需具備將快照匯出至 S3 功能的版本和區域可用性的詳細資訊,請參閱 支援的區域和資料庫引擎,可將快照匯出到 Amazon 中的 S3 RDS。
限制
將資料庫快照資料匯出至 Amazon S3 時有下列限制:
-
您無法同時針對相同的資料庫快照執行多個匯出任務。這同時適用於完整和部分匯出。
-
不支援從使用磁性儲存的資料庫匯出快照。
-
匯出至 S3 不支援包含冒號 (:) 的 S3 前置詞。
-
在匯出過程中,S3 檔案路徑中的以下字元將轉換為底線 (_):
\ ` " (space)
-
如果資料庫、結構描述或資料表的名稱中包含下列字元以外的字元,則不支援部分匯出。但是,您可以匯出整個資料庫快照。
-
拉丁字母 (A–Z)
-
數字 (0–9)
-
美元符號 ($)
-
底線 (_)
-
-
資料庫資料表資料欄名稱不支援空格 ( ) 和某些字元。資料行名稱中具備下列字元的資料表會在匯出時跳過:
, ; { } ( ) \n \t = (space)
-
匯出時會略過名稱中具備斜線 (/) 的表格。
-
RDS對於 Postgre SQL 臨時和未記錄的表在導出過程中被跳過。
-
如果資料包含接近BLOB或CLOB大於 500 MB 的大型物件 (例如或),則匯出會失敗。
-
如果資料表包含接近或大於 2 GB 的大型資料列,則在匯出期間會略過該資料表。
-
對於部分匯出,
ExportOnly
清單的大小上限為 200 KB。 -
強烈建議您對每個匯出任務使用唯一的名稱。如果不使用唯一的任務名稱,可能會收到下列錯誤訊息:
ExportTaskAlreadyExistsFault:呼叫 StartExportTask作業時發生錯誤 (ExportTaskAlreadyExists):具有 ID 的匯出工作
xxxxx
已存在。 -
您在將快照資料匯出至 S3 時可以刪除該快照,但在匯出任務完成之前,仍會向您收取該快照的儲存費用。
-
您無法將匯出的快照資料從 S3 還原到新的資料庫執行個體,也無法將快照資料從 S3 匯入現有的資料庫執行個體。
-
每個最多可以有五個正在進行的並行資料庫快照匯出工作 AWS 帳戶。
-
若要將資料庫快照匯出到跨帳戶 Amazon S3 儲存貯體,您必須使用 AWS CLI 或. RDS API
匯出快照資料概觀
您可以使用下列程序,將資料庫快照資料匯出至 Amazon S3 儲存貯體。如需詳細資訊,請參閱下列各節。
-
識別要匯出的快照
使用現有的自動或手動快照,或建立資料庫執行個體或異地同步備份資料庫叢集的手動快照。
-
設定對 Amazon S3 儲存貯體的存取。
「儲存貯體」是 Amazon S3 物件或檔案的容器。如要提供存取儲存貯體的資訊,請採取下列步驟:
-
識別要匯出快照的目標 S3 儲存貯體。S3 儲存貯體必須與快照位於相同的 AWS 區域。如需詳細資訊,請參閱識別要匯出的 Amazon S3 儲存貯體。
-
建立 AWS Identity and Access Management (IAM) 角色,授與 S3 儲存貯體的快照匯出任務存取權。如需詳細資訊,請參閱使用IAM角色提供對 Amazon S3 儲存貯體的存取。
-
-
建立伺服器端加密 AWS KMS key 的對稱加密。快照匯出工作會使用KMS金鑰,在將匯出資料寫入 S3 時設定 AWS KMS 伺服器端加密。
KMS金鑰原則必須同時包含
kms:CreateGrant
和kms:DescribeKey
權限。如需在 Amazon 中使用KMS金鑰的詳細資訊RDS,請參閱AWS KMS key 管理。如果您的KMS金鑰原則中有拒絕陳述式,請務必明確排除 AWS 服務主體
export.rds.amazonaws.com
。您可以在 AWS 帳戶中使用KMS金鑰,也可以使用跨帳戶KMS金鑰。如需詳細資訊,請參閱使用跨帳戶 AWS KMS key 加密 Amazon S3 匯出。
-
使用主控台或
start-export-task
CLI命令將快照匯出到 Amazon S3。如需詳細資訊,請參閱將資料庫快照匯出至 Amazon S3 儲存貯體。 -
若要存取 Amazon S3 儲存貯體中您匯出的資料,請參閱《Amazon Simple Storage Service 使用者指南》中的上傳、下載及管理物件。
設定對 Amazon S3 儲存貯體的存取權
如要將資料庫快照資料匯出至 Amazon S3 檔案,您首先要給予快照存取 Amazon S3 儲存貯體的許可。然後,您可以建立一個IAM角色,以允許 Amazon RDS 服務寫入 Amazon S3 儲存貯體。
主題
識別要匯出的 Amazon S3 儲存貯體
識別要匯出資料庫快照的目標 Amazon S3 儲存貯體。使用現有的 S3 儲存貯體或建立新的 S3 儲存貯體。
注意
要匯出的 S3 儲存貯體必須與快照位於相同的 AWS 區域。
如需使用 Amazon S3 儲存貯體的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的下列內容:
使用IAM角色提供對 Amazon S3 儲存貯體的存取
在您將資料庫快照資料匯出至 Amazon S3 前,請給予快照匯出任務對 Amazon S3 儲存貯體的存取許可。
若要授與此權限,請建立可提供值區存取權的IAM原則,然後建立IAM角色並將原則附加至該角色。稍後,您可以將IAM角色指派給快照匯出工作。
重要
如果您打算使 AWS Management Console 用匯出快照,您可以選擇在匯出快照時自動建立IAM原則和角色。如需說明,請參閱 將資料庫快照匯出至 Amazon S3 儲存貯體。
給予資料庫快照任務對 Amazon S3 的存取權限
-
建立IAM策略。此政策會提供儲存貯體和物件許可,允許您的快照匯出任務存取 Amazon S3。
在政策中,包含下列必要動作,以允許將檔案從 Amazon 傳輸RDS到 S3 儲存貯體:
-
s3:PutObject*
-
s3:GetObject*
-
s3:ListBucket
-
s3:DeleteObject*
-
s3:GetBucketLocation
在政策中,包含下列資源,以識別 S3 儲存貯體和該儲存貯體中的物件。以下資源清單顯示了用於訪問 Amazon S3 的亞馬遜資源名稱(ARN)格式。
-
arn:aws:s3:::
amzn-s3-demo-bucket
-
arn:aws:s3:::
amzn-s3-demo-bucket
/*
如需為 Amazon 建立IAM政策的詳細資訊RDS,請參閱建立並使用 IAM 政策進行 IAM 資料庫存取。另請參閱《IAM使用指南》中的教學課程:建立並附加您的第一個客戶管理政策。
下列 AWS CLI 命令會建立以這些選項命名
ExportPolicy
的IAM策略。它授予對名為的存儲桶的訪問權限amzn-s3-demo-bucket
.注意
建立原則之後,請記下原則ARN的內容。將原則附加至IAM角色時,您需要執行後續步驟。ARN
aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] } ] }' -
-
建立IAM角色,以便 Amazon 可RDS以代表您擔任此IAM角色,以存取您的 Amazon S3 儲存貯體。如需詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給IAM使用者。
下列範例示範如何使用 AWS CLI 命令建立名為的角色
rds-s3-export-role
。aws iam create-role --role-name rds-s3-export-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
-
將您建立的IAM策略附加到您建立的IAM角色。
下列 AWS CLI 命令會將先前建立的原則附加至名為的角色
rds-s3-export-role
。取代
為您在先前步驟中記下的原則ARN。your-policy-arn
aws iam attach-role-policy --policy-arn
your-policy-arn
--role-name rds-s3-export-role
使用跨帳戶 Amazon S3 儲存貯體
您可以跨 AWS 帳戶使用 Amazon S3 儲存貯體。若要使用跨帳戶儲存貯體,請新增儲存貯體政策以允許存取您用於 S3 匯出的IAM角色。如需詳細資訊,請參閱範例 2:儲存貯體擁有者授予跨帳戶儲存貯體許可。
將儲存貯體政策附加至您的儲存貯體,如下列範例所示。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:role/Admin" }, "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
", "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] } ] }
使用跨帳戶 AWS KMS key 加密 Amazon S3 匯出
您可以使用跨帳戶 AWS KMS key 來加密 Amazon S3 匯出。首先,您將金鑰原則新增至本機帳戶,然後在外部帳戶中新增原IAM則。如需詳細資訊,請參閱允許其他帳戶中的使用者使用KMS金鑰。
使用跨帳戶KMS金鑰
-
將金鑰政策新增至本機帳戶。
下列範例將本機帳戶 123456789012 中的許可給予外部帳戶 444455556666 中的
ExampleRole
和ExampleUser
。{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "*" }
-
將IAM策略新增至外部帳戶。
下列範例IAM原則允許主體使用帳戶 123456789012 中的KMS金鑰進行密碼編譯作業。若要提供此許可給帳戶 444455556666 中的
ExampleRole
和ExampleUser
,請在該帳戶中附加政策給他們。{ "Sid": "Allow use of KMS key in account 123456789012", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }
將資料庫快照匯出至 Amazon S3 儲存貯體
每個最多可以有五個正在進行的並行資料庫快照匯出工作 AWS 帳戶。
注意
匯出RDS快照可能需要一段時間,具體取決於您的資料庫類型和大小。匯出任務會先還原和擴展整個資料庫,然後再將資料擷取到 Amazon S3。此階段期間的工作進度會顯示為STARTING (開始)。當任務切換到將資料匯出到 S3 時,進度會顯示為 In progress (進行中)。
匯出完成所需的時間取決於儲存在資料庫中的資料。例如,如果資料表有分散均勻的數值主索引鍵或索引資料欄,則匯出速度最快。如果資料表不含適合分割的資料欄,或是資料表只在字串型資料欄上有一個索引,則會花更多時間。因為匯出使用較慢的單一執行緒處理序,所以將會耗費更長的時間。
您可以使用 AWS Management Console、或將資料庫快照匯出到 Amazon S3 RDS API。 AWS CLI若要將資料庫快照匯出到跨帳戶 Amazon S3 儲存貯體,請使用 AWS CLI 或. RDS API
如果您使用 Lambda 函式匯出快照集,請將 kms:DescribeKey
動作新增至 Lambda 函式政策。如需詳細資訊,請參閱 AWS Lambda
許可。
Export to Amazon S3 (匯出至 Amazon S3) 主控台選項僅會針對可匯出至 Amazon S3 的快照顯示。由於下列原因,快照可能無法匯出:
-
S3 匯出不支援此資料庫引擎。
-
S3 匯出不支援資料庫引擎版本。
-
建立快照的 AWS 區域不支援 S3 匯出。
匯出資料庫快照
-
登錄 AWS Management Console 並在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/
。 -
在導覽窗格中,選擇 Snapshots (快照)。
-
從標籤中,選擇您希望匯出的快照類型。
-
在快照清單中,選擇您希望匯出的快照。
-
針對 Actions (動作),選擇 Export to Amazon S3 (匯出至 Amazon S3)。
隨即出現 Export to Amazon S3 (匯出至 Amazon S3) 視窗。
-
針對 Export identifier (匯出識別符),輸入名稱以識別匯出任務。這個值也會用來做為在 S3 儲存貯體中建立的檔案名稱。
-
選擇匯出的資料:
-
選擇 All (全部) 來匯出快照中的所有資料。
-
選擇 Partial (部分) 來匯出快照的特定部分。若要識別要匯出的快照部分,請針對 Identifier (識別符) 輸入一或多個資料庫、結構描述或表格,並以空格分隔。
使用下列格式:
database
[.schema
][.table
]database2
[.schema2
][.table2
] ...database
n[.schema
n][.table
n]例如:
mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
-
-
針對 S3 bucket (S3 儲存貯體),選擇要匯出的儲存貯體。
如要將匯出資料指派給 S3 儲存貯體中的資料夾路徑,請針對 S3 prefix (S3 字首) 輸入選用的路徑。
-
對於IAM角色,請選擇授與您所選 S3 儲存貯體寫入存取權的角色,或建立新角色。
-
如果您透過遵循 使用IAM角色提供對 Amazon S3 儲存貯體的存取 中的步驟建立了角色,請選擇該角色。
-
如果您沒有建立授予您所選擇 S3 儲存貯體寫入存取權限的角色,請選擇 Create a new role (建立新角色) 以自動建立角色。接下來,在角色名稱中輸入角IAM色的名稱。
-
-
在中 AWS KMS key,輸入用ARN於加密匯出資料的金鑰。
-
選擇 Export to Amazon S3 (匯出至 Amazon S3)。
若要使用將資料庫快照匯出到 Amazon S3 AWS CLI,請搭配下列必要選項使用start-export-task命令:
-
--export-task-identifier
-
--source-arn
-
--s3-bucket-name
-
--iam-role-arn
-
--kms-key-id
在下列範例中,會命名為快照匯出工作 my-snapshot-export
,將快照匯出到名為的 S3 儲存貯體 amzn-s3-demo-bucket
.
對於LinuxmacOS、或Unix:
aws rds start-export-task \ --export-task-identifier
my-snapshot-export
\ --source-arn arn:aws:rds:AWS_Region
:123456789012:snapshot:snapshot-name
\ --s3-bucket-nameamzn-s3-demo-bucket
\ --iam-role-arniam-role
\ --kms-key-idmy-key
在 Windows 中:
aws rds start-export-task ^ --export-task-identifier
my-snapshot-export
^ --source-arn arn:aws:rds:AWS_Region
:123456789012:snapshot:snapshot-name
^ --s3-bucket-nameamzn-s3-demo-bucket
^ --iam-role-arniam-role
^ --kms-key-idmy-key
範例輸出如下。
{ "Status": "STARTING", "IamRoleArn": "iam-role", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "my-export-bucket", "PercentProgress": 0, "KmsKeyId": "my-key", "ExportTaskIdentifier": "my-snapshot-export", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name" }
若要在 S3 儲存貯體中提供快照匯出的資料夾路徑,請在start-export-task命令中包含該--s3-prefix
選項。
若要使用 Amazon 將資料庫快照匯出到 Amazon S3 RDSAPI,請使用具有下列必要參數的StartExportTask操作:
-
ExportTaskIdentifier
-
SourceArn
-
S3BucketName
-
IamRoleArn
-
KmsKeyId
監控快照匯出
您可以使用 AWS Management Console、或監視資料庫快照匯出RDSAPI。 AWS CLI
監控資料庫快照匯出
-
登錄 AWS Management Console 並在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/
。 -
在導覽窗格中,選擇 Snapshots (快照)。
-
如要檢視快照匯出清單,請選擇 Exports in Amazon S3 (Amazon S3 中的匯出) 標籤。
-
如要檢視特定快照匯出的相關資訊,請選擇匯出任務。
若要使用監視資料庫快照匯出 AWS CLI,請使用describe-export-tasks指令。
以下範例示範如何顯示您所有快照匯出的目前資訊。
aws rds describe-export-tasks { "ExportTasks": [ { "Status": "CANCELED", "TaskEndTime": "2019-11-01T17:36:46.961Z", "S3Prefix": "something", "ExportTime": "2019-10-24T20:23:48.364Z", "S3Bucket": "
amzn-s3-demo-bucket
", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region
:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "anewtest", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-25T19:10:58.885Z", "SourceArn": "arn:aws:rds:AWS_Region
:123456789012:snapshot:parameter-groups-test" }, { "Status": "COMPLETE", "TaskEndTime": "2019-10-31T21:37:28.312Z", "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}", "S3Prefix": "", "ExportTime": "2019-10-31T06:44:53.452Z", "S3Bucket": "amzn-s3-demo-bucket1
", "PercentProgress": 100, "KmsKeyId": "arn:aws:kms:AWS_Region
:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "thursday-events-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 263, "TaskStartTime": "2019-10-31T20:58:06.998Z", "SourceArn": "arn:aws:rds:AWS_Region
:123456789012:snapshot:rds:example-1-2019-10-31-06-44" }, { "Status": "FAILED", "TaskEndTime": "2019-10-31T02:12:36.409Z", "FailureCause": "The S3 bucket edgcuc-export isn't located in the current AWS Region. Please, review your S3 bucket name and retry the export.", "S3Prefix": "", "ExportTime": "2019-10-30T06:45:04.526Z", "S3Bucket": "amzn-s3-demo-bucket2
", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region
:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "wednesday-afternoon-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-30T22:43:40.034Z", "SourceArn": "arn:aws:rds:AWS_Region
:123456789012:snapshot:rds:example-1-2019-10-30-06-45" } ] }
如要顯示特定快照匯出的相關資訊,請在 --export-task-identifier
命令中包含 describe-export-tasks
選項。如要篩選輸出,請包含 --Filters
選項。如需更多選項,請參閱describe-export-tasks指令。
若要顯示使用 Amazon 進行資料庫快照匯出的相關資訊 RDSAPI,請使用DescribeExportTasks操作。
若要追蹤匯出工作流程的完成或起始其他工作流程,您可以訂閱 Amazon Simple Notification Service 主題。有關 Amazon 的更多信息SNS,請參閱使用 Amazon RDS 事件通知。
取消快照匯出任務
您可以使用 AWS Management Console、或取消資料庫快照匯出工作RDSAPI。 AWS CLI
注意
取消快照匯出任務不會移除任何已匯出到 Amazon S3 的資料。如需如何使用主控台刪除資料的資訊,請參閱如何從 S3 儲存貯體刪除物件? 若要使用刪除資料CLI,請使用刪除物件指令。
取消快照匯出任務
-
登錄 AWS Management Console 並在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/
。 -
在導覽窗格中,選擇 Snapshots (快照)。
-
選擇 Exports in Amazon S3 (Amazon S3 中的匯出) 標籤。
-
選擇您希望取消的快照匯出任務。
-
選擇 Cancel (取消)。
-
選擇確認頁面上的 Cancel export task (取消匯出任務)。
若要使用取消快照匯出工作 AWS CLI,請使用cancel-export-task指令。命令需要 --export-task-identifier
選項。
aws rds cancel-export-task --export-task-identifier my_export { "Status": "CANCELING", "S3Prefix": "", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "
amzn-s3-demo-bucket
", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region
:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "my_export", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region
:123456789012:snapshot:export-example-1" }
若要使用 Amazon 取消快照匯出任務 RDSAPI,請搭配ExportTaskIdentifier
參數使用該CancelExportTask操作。
Amazon S3 匯出任務的失敗訊息
下表說明 Amazon S3 匯出任務失敗時傳回的訊息。
失敗訊息 | 描述 |
---|---|
發生未知的內部錯誤。 |
因為不明的錯誤、例外或故障,所以任務失敗。 |
將匯出任務的中繼資料寫入 S3 儲存貯體 [儲存貯體名稱] 時發生未知的內部錯誤。 |
因為不明的錯誤、例外或故障,所以任務失敗。 |
RDS匯出無法寫入匯出工作的中繼資料,因為無法擔任IAM角色 [roleARN]。 |
匯出任務會假設您的IAM角色來驗證是否允許將中繼資料寫入 S3 儲存貯體。如果工作無法擔任您的IAM角色,就會失敗。 |
RDS匯出無法使用角色 [IAMrole] 搭配金鑰 [KMS金鑰 ID],將匯出任務的中繼資料寫入 S3 儲存貯體 [儲存貯體名稱]。ARN錯誤代碼:[錯誤代碼] |
缺少一或多個許可,因此匯出任務無法存取 S3 儲存貯體。收到下列其中一個錯誤碼時會引發此失敗訊息:
這些錯誤碼表示IAM角色、S3 儲存貯體或KMS金鑰的設定設定錯誤。 |
IAM角色 [角色ARN] 未授權在 S3 儲存貯體 [儲存貯體名稱] 上呼叫 [S3 動作]。檢閱您的許可,然後重試匯出。 |
IAM原則設定錯誤。缺少 S3 儲存貯體上特定 S3 動作的許可,這會導致匯出任務失敗。 |
KMS金鑰檢查失敗。請檢查KMS金鑰上的認證,然後再試一次。 |
KMS金鑰認證檢查失敗。 |
S3 憑證檢查失敗。檢查 S3 儲存貯體和IAM政策的許可。 |
S3 憑證檢查失敗。 |
S3 儲存貯體 [儲存貯體名稱] 無效。可能不是位於目前的 AWS
區域或不存在。檢閱您的 S3 儲存貯體名稱並重試匯出。 |
S3 儲存貯體無效。 |
S3 儲存貯體 [儲存貯體名稱] 不在目前 AWS 區域中。檢閱您的 S3 儲存貯體名稱並重試匯出。 |
S3 儲存貯體位於錯誤的 AWS 區域。 |
疑難排解後的SQL權限錯誤
將 Postgre SQL 資料庫匯出到 Amazon S3 時,您可能會看到PERMISSIONS_DO_NOT_EXIST
錯誤訊息,指出某些表格已略過。當您在建立資料庫時指定的超級使用者沒有存取這些資料表的權限時,通常會發生這個錯誤。
若要修正此錯誤,請執行下列命令:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA
schema_name
TOsuperuser_name
如需超級使用者權限的詳細資訊,請參閱主要使用者帳戶權限。
檔案命名慣例
特定表格的匯出資料會以
的格式儲存,其中基本前綴如下:base_prefix
/files
export_identifier
/database_name
/schema_name
.table_name
/
例如:
export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/
檔案命名方式有兩種慣例:
-
目前慣例:
batch_index
/part-partition_index
-random_uuid
.format-based_extension
批處理索引是一個序列號,表示從表中讀取的一批數據。如果我們無法將您的表分割成小塊以 parallel 導出,則會有多個批處理索引。如果您的表被分區為多個表,則會發生同樣的情況。將會有多個批次索引,主資料表的每個表格分割區各一個索引。
如果我們可以將您的表分割成小塊以 parallel 讀取,則只會有批處理索引
1
文件夾。在批處理索引文件夾中,有一個或多個包含表數據的 Parquet 文件。實木複合地板文件名的前綴是
part-
。如果您的資料表已分割,則會有多個以分割區索引開頭的檔案partition_index
00000
。分割區索引序列中可能會有間隙。發生這種情況是因為每個分區都是從表中的範圍查詢中獲得的。如果該分區的範圍內沒有數據,則跳過該序列號。
例如,假設資料行是
id
資料表的主索引鍵,而且其最小值和最大值為100
和1000
。當我們嘗試使用九個分區導出此表時,我們使用 parallel 查詢來讀取它,如下所示:SELECT * FROM table WHERE id <= 100 AND id < 200 SELECT * FROM table WHERE id <= 200 AND id < 300
這應該生成九個文件,從
part-00000-
到random_uuid
.gz.parquetpart-00008-
。但是,如果沒有介於random_uuid
.gz.parquet200
和IDs之間的行350
,則其中一個完成的分區是空的,並且不會為其創建任何文件。在前面的例子中,part-00001-
不會創建。random_uuid
.gz.parquet -
較舊的慣例:
part-
partition_index
-random_uuid
.format-based_extension
這與當前約定相同,但沒有前
綴,例如:batch_index
part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet
檔案命名慣例可能會有所變更。因此,在讀取目標資料表時,建議您讀取資料表基本字首內的所有內容。
匯出至 Amazon S3 儲存貯體時的資料轉換
當您將資料庫快照匯出到 Amazon S3 儲存貯體時,Amazon 會RDS將資料轉換為、將資料匯出到,以及以實際複合地板格式存放資料。如需 Parquet 的詳細資訊,請參閱 Apache Parquet
Parquet 會將所有資料以下列其中一種基本類型存放:
-
BOOLEAN
-
INT32
-
INT64
-
INT96
-
FLOAT
-
DOUBLE
-
BYTE_ ARRAY — 可變長度位元組陣列,也稱為二進位
-
FIXED_ _ LEN BYTE _ ARRAY — 當值具有常數大小時使用的固定長度位元組陣列
Parquet 的資料類型相當少,可減少讀取和寫入格式的複雜性。Parquet 提供擴充基本類型的邏輯類型。「邏輯類型」會實作為標註,並將資料存放在 LogicalType
中繼資料欄位中。邏輯類型標註會說明如何解譯基本類型。
當STRING
邏輯類型註釋一個BYTE_ARRAY
類型時,它表示字節數組應該被解釋為 UTF -8 編碼的字符串。匯出任務完成後,Amazon RDS 會在發生任何字串轉換時通知您。匯出的基礎資料一律與來源資料相同。但是,由於 UTF -8 的編碼差異,在 Athena 等工具中讀取時,某些字符可能會與來源不同。
如需詳細資訊,請參閱 Parquet 文件中的 Parquet Logical Type Definitions
我SQL和 MariaDB 的數據類型映射到實木地板
下表顯示當資料轉換SQL並匯出至 Amazon S3 時,我和 MariaDB 資料類型對映到實木地板資料類型。
來源資料類型 | Parquet 基本類型 | 邏輯類型標註 | 轉換備註 |
---|---|---|---|
數值資料類型 | |||
BIGINT | INT64 | ||
BIGINT UNSIGNED | FIXED_ LEN _ BYTE _ ARRAY (9) | DECIMAL(二零零) | Parquet 僅支持帶符號的類型,因此映射需要一個額外的字節(8 加 1)來存儲 BIGINT _ 類UNSIGNED型。 |
BIT | BYTE_ARRAY | ||
DECIMAL | INT32 | DECIMAL(p, s) | 如果來源值小於 2 31,則會儲存為INT32。 |
INT64 | DECIMAL(p, s) | 如果來源值為 2 31 或更大,但小於 2 63,則會儲存為INT64。 | |
FIXED_ LEN BYTE _ ARRAY (N) | DECIMAL(p, s) | 如果來源值為 2 63 或更大,則會儲存為 FIXED LEN _ BYTE _ _ ARRAY (N)。 | |
BYTE_ARRAY | STRING | Parquet 不支援大於 38 的 Decimal 精確度。Decimal 值被轉換為 BYTE _ ARRAY 類型的字符串,並編碼為UTF8。 | |
DOUBLE | DOUBLE | ||
FLOAT | DOUBLE | ||
INT | INT32 | ||
INT UNSIGNED | INT64 | ||
MEDIUMINT | INT32 | ||
MEDIUMINT UNSIGNED | INT64 | ||
NUMERIC | INT32 | DECIMAL(p, s) |
如果來源值小於 2 31,則會儲存為INT32。 |
INT64 | DECIMAL(p, s) | 如果來源值為 2 31 或更大,但小於 2 63,則會儲存為INT64。 | |
FIXED_ LEN _ ARRAY (N) | DECIMAL(p, s) | 如果來源值為 2 63 或更大,則會儲存為 FIXED LEN _ BYTE _ _ ARRAY (N)。 | |
BYTE_ARRAY | STRING | Parquet 不支援大於 38 的 Numeric 精確度。這個數值被轉換為 BYTE _ ARRAY 類型的字符串,並編碼為UTF8。 | |
SMALLINT | INT32 | ||
SMALLINT UNSIGNED | INT32 | ||
TINYINT | INT32 | ||
TINYINT UNSIGNED | INT32 | ||
字串資料類型 | |||
BINARY | BYTE_ARRAY | ||
BLOB | BYTE_ARRAY | ||
CHAR | BYTE_ARRAY | ||
ENUM | BYTE_ARRAY | STRING | |
LINESTRING | BYTE_ARRAY | ||
LONGBLOB | BYTE_ARRAY | ||
LONGTEXT | BYTE_ARRAY | STRING | |
MEDIUMBLOB | BYTE_ARRAY | ||
MEDIUMTEXT | BYTE_ARRAY | STRING | |
MULTILINESTRING | BYTE_ARRAY | ||
SET | BYTE_ARRAY | STRING | |
TEXT | BYTE_ARRAY | STRING | |
TINYBLOB | BYTE_ARRAY | ||
TINYTEXT | BYTE_ARRAY | STRING | |
VARBINARY | BYTE_ARRAY | ||
VARCHAR | BYTE_ARRAY | STRING | |
日期和時間資料類型 | |||
DATE | BYTE_ARRAY | STRING | 日期被轉換為 BYTE _ ARRAY 類型的字符串並編碼為UTF8。 |
DATETIME | INT64 | TIMESTAMP_MICROS | |
TIME | BYTE_ARRAY | STRING | TIME類型被轉換為 BYTE _ 中的字符串ARRAY並編碼為UTF8。 |
TIMESTAMP | INT64 | TIMESTAMP_MICROS | |
YEAR | INT32 | ||
幾何資料類型 | |||
GEOMETRY | BYTE_ARRAY | ||
GEOMETRYCOLLECTION | BYTE_ARRAY | ||
MULTIPOINT | BYTE_ARRAY | ||
MULTIPOLYGON | BYTE_ARRAY | ||
POINT | BYTE_ARRAY | ||
POLYGON | BYTE_ARRAY | ||
JSON資料類型 | |||
JSON | BYTE_ARRAY | STRING |
下載SQL數據類型映射到鑲木地板
下表顯示當SQL資料轉換並匯出至 Amazon S3 時,從 Postgre 資料類型到實木複合地板資料類型的對應。
後置SQL數據類型 | Parquet 基本類型 | 邏輯類型標註 | 映射備註 |
---|---|---|---|
數值資料類型 | |||
BIGINT | INT64 | ||
BIGSERIAL | INT64 | ||
DECIMAL | BYTE_ARRAY | STRING | DECIMAL類型被轉換為 BYTE _ ARRAY 類型的字符串並編碼為UTF8。 此轉換是為了避免因非數字 (NaN) 而導致的資料精確度和資料值複雜性。 |
DOUBLE PRECISION | DOUBLE | ||
INTEGER | INT32 | ||
MONEY | BYTE_ARRAY | STRING | |
REAL | FLOAT | ||
SERIAL | INT32 | ||
SMALLINT | INT32 | INT_16 | |
SMALLSERIAL | INT32 | INT_16 | |
字串和相關資料類型 | |||
ARRAY | BYTE_ARRAY | STRING |
數組被轉換為字符串並編碼為BINARY(UTF8)。 此轉換是為了避免因非數字 (NaN) 和時間資料值而導致的資料精確度複雜性。 |
BIT | BYTE_ARRAY | STRING | |
BIT VARYING | BYTE_ARRAY | STRING | |
BYTEA | BINARY | ||
CHAR | BYTE_ARRAY | STRING | |
CHAR(N) | BYTE_ARRAY | STRING | |
ENUM | BYTE_ARRAY | STRING | |
NAME | BYTE_ARRAY | STRING | |
TEXT | BYTE_ARRAY | STRING | |
TEXT SEARCH | BYTE_ARRAY | STRING | |
VARCHAR(N) | BYTE_ARRAY | STRING | |
XML | BYTE_ARRAY | STRING | |
日期和時間資料類型 | |||
DATE | BYTE_ARRAY | STRING | |
INTERVAL | BYTE_ARRAY | STRING | |
TIME | BYTE_ARRAY | STRING | |
TIME WITH TIME ZONE | BYTE_ARRAY | STRING | |
TIMESTAMP | BYTE_ARRAY | STRING | |
TIMESTAMP WITH TIME ZONE | BYTE_ARRAY | STRING | |
幾何資料類型 | |||
BOX | BYTE_ARRAY | STRING | |
CIRCLE | BYTE_ARRAY | STRING | |
LINE | BYTE_ARRAY | STRING | |
LINESEGMENT | BYTE_ARRAY | STRING | |
PATH | BYTE_ARRAY | STRING | |
POINT | BYTE_ARRAY | STRING | |
POLYGON | BYTE_ARRAY | STRING | |
JSON資料類型 | |||
JSON | BYTE_ARRAY | STRING | |
JSONB | BYTE_ARRAY | STRING | |
其他資料類型 | |||
BOOLEAN | BOOLEAN | ||
CIDR | BYTE_ARRAY | STRING | 網路資料類型 |
COMPOSITE | BYTE_ARRAY | STRING | |
DOMAIN | BYTE_ARRAY | STRING | |
INET | BYTE_ARRAY | STRING | 網路資料類型 |
MACADDR | BYTE_ARRAY | STRING | |
OBJECT IDENTIFIER | N/A | ||
PG_ LSN | BYTE_ARRAY | STRING | |
RANGE | BYTE_ARRAY | STRING | |
UUID | BYTE_ARRAY | STRING |