本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
資料庫叢集快照匯出的考量
限制
將資料庫快照資料匯出至 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
資料表的主索引鍵,而且其最小值和最大值為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 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 |