資料庫叢集快照匯出的考量 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

資料庫叢集快照匯出的考量

限制

將資料庫快照資料匯出至 Amazon S3 時有下列限制:

  • 您無法同時針對相同的資料庫叢集快照執行多個匯出任務。這同時適用於完整和部分匯出。

  • 每個最多可以有五個正在進行的並行資料庫快照匯出工作 AWS 帳戶。

  • 您無法將快照資料從資料Aurora Serverless v1庫叢集匯出到 S3。

  • 匯出至 S3 不支援包含冒號 (:) 的 S3 前置詞。

  • 在匯出過程中,S3 檔案路徑中的以下字元將轉換為底線 (_):

    \ ` " (space)
  • 如果資料庫、結構描述或資料表的名稱中包含下列字元以外的字元,則不支援部分匯出。但是,您可以匯出整個資料庫快照。

    • 拉丁字母 (A–Z)

    • 數字 (0–9)

    • 美元符號 ($)

    • 底線 (_)

  • 資料庫資料表資料欄名稱不支援空格 ( ) 和某些字元。資料行名稱中具備下列字元的資料表會在匯出時跳過:

    , ; { } ( ) \n \t = (space)
  • 匯出時會略過名稱中具備斜線 (/) 的表格。

  • 匯出期間會略過 Aurora Postgre SQL 暫時和未記錄的資料表。

  • 如果資料包含接近BLOB或CLOB大於 500 MB 的大型物件 (例如或),則匯出會失敗。

  • 如果資料表包含接近或大於 2 GB 的大型資料列,則在匯出期間會略過該資料表。

  • 對於部分匯出,ExportOnly清單的大小上限為 200 KB。

  • 強烈建議您對每個匯出任務使用唯一的名稱。如果不使用唯一的任務名稱,可能會收到下列錯誤訊息:

    ExportTaskAlreadyExistsFault:呼叫 StartExportTask作業時發生錯誤 (ExportTaskAlreadyExists):具有 ID 的匯出工作 xxxxx 已存在。

  • 您在將快照資料匯出至 S3 時可以刪除該快照,但在匯出任務完成之前,仍會向您收取該快照的儲存費用。

  • 您無法將匯出的快照資料從 S3 還原到新的資料庫叢集。

檔案命名慣例

特定表格的匯出資料會以 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資料表的主索引鍵,而且其最小值和最大值為1001000。當我們嘗試使用九個分區導出此表時,我們使用 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.parquet。但是,如果沒有介於200和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 Aurora 會以 Parquet 格式轉換資料、匯出資料,以及存放資料。如需 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 Aurora 會通知您是否發生任何字串轉換。匯出的基礎資料一律與來源資料相同。但是,由於 UTF -8 的編碼差異,在 Athena 等工具中讀取時,某些字符可能會與來源不同。

如需詳細資訊,請參閱 Parquet 文件中的 Parquet Logical Type Definitions

我的SQL數據類型映射到實木地板

下表顯示當SQL資料轉換並匯出至 Amazon S3 時,從「我的資料類型」對應到 Parquet 資料類型。

來源資料類型 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