Considérations relatives à l'exportation de snapshots de clusters de bases - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Considérations relatives à l'exportation de snapshots de clusters de bases

Limites

L'exportation de données d'instantané de bases de données vers Amazon S3 présente les limites suivantes :

  • Vous ne pouvez pas exécuter simultanément plusieurs tâches d'exportation pour le même instantané de cluster de bases de données. Cette règle s'applique aux exportations complètes et partielles.

  • Vous pouvez avoir jusqu'à cinq tâches simultanées d'exportation de snapshots de base de données en cours par Compte AWS.

  • Vous ne pouvez pas exporter de données instantanées depuis Aurora Serverless v1 Clusters de bases de données vers S3.

  • Les exportations vers S3 ne prennent pas en charge les préfixes S3 contenant deux points (:).

  • Les caractères suivants du chemin d'accès au fichier S3 sont convertis en traits de soulignement (_) lors de l'exportation :

    \ ` " (space)
  • Si une base de données, un schéma ou une table comporte des caractères autres que les suivants, l'exportation partielle n'est pas prise en charge. Toutefois, vous pouvez exporter l'intégralité de l'instantané de base de données.

    • Lettres latines (A–Z)

    • Chiffres (0–9)

    • Symbole dollar ($)

    • Trait de soulignement (_)

  • Les espaces ( ) et certains caractères ne sont pas pris en charge dans les noms de colonnes des tables de base de données. Les tables dont les noms de colonnes contiennent les caractères suivants sont ignorées lors de l'exportation :

    , ; { } ( ) \n \t = (space)
  • Les tables dont les noms contiennent des barres obliques (/) sont ignorées lors de l'exportation.

  • Les tables temporaires et non journalisées d'Aurora PostgreSQL sont ignorées lors de l'exportation.

  • Si les données contiennent un objet volumineux tel qu'un objet BLOB ou CLOB proche de ou supérieur à 500 Mo, l'exportation échoue.

  • Si une table contient une grande ligne proche de ou supérieure à 2 Go, la table est ignorée lors de l'exportation.

  • Pour les exportations partielles, la taille maximale de la ExportOnly liste est de 200 Ko.

  • Nous vous recommandons vivement d'utiliser un nom unique pour chaque tâche d'exportation. Si vous n'utilisez pas un nom de tâche unique, vous risquez de recevoir le message d'erreur suivant :

    ExportTaskAlreadyExistsFault: Une erreur s'est produite (ExportTaskAlreadyExists) lors de l'appel de l' StartExportTaskopération : la tâche d'exportation portant l'ID existe xxxxx déjà.

  • Vous pouvez supprimer un instantané lors de l'exportation de ses données vers S3, mais les coûts de stockage de cet instantané vous sont tout de même facturés tant que la tâche d'exportation n'est pas terminée.

  • Vous ne pouvez pas restaurer les données des instantanés exportées de S3 vers un nouveau cluster de base de données.

Convention de dénomination de fichiers

Les données exportées pour des tables spécifiques sont stockées au format base_prefix/files, qui utilise le préfixe de base suivant :

export_identifier/database_name/schema_name.table_name/

Par exemple :

export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/

Il existe deux conventions de dénomination des fichiers.

  • Convention actuelle :

    batch_index/part-partition_index-random_uuid.format-based_extension

    L'index de lot est un numéro de séquence qui représente un lot de données lues dans la table. Si nous ne parvenons pas à partitionner votre table en petits morceaux à exporter en parallèle, il y aura plusieurs index de lots. Il en va de même si votre table est partitionnée en plusieurs tables. Il y aura plusieurs index par lots, un pour chacune des partitions de table de votre table principale.

    Si nous parvenons à partitionner votre table en petits morceaux à lire en parallèle, il n'y aura que le 1 dossier d'index par lots.

    Dans le dossier d'index par lots, un ou plusieurs fichiers Parquet contiennent les données de votre table. Le préfixe du nom du fichier Parquet estpart-partition_index. Si votre table est partitionnée, il y aura plusieurs fichiers en commençant par l'index 00000 de partition.

    Il peut y avoir des lacunes dans la séquence d'index de partition. Cela se produit parce que chaque partition est obtenue à partir d'une requête à distance dans votre table. S'il n'y a aucune donnée dans la plage de cette partition, le numéro de séquence est ignoré.

    Supposons, par exemple, que la id colonne soit la clé primaire de la table et que ses valeurs minimale et maximale soient 100 et1000. Lorsque nous essayons d'exporter cette table avec neuf partitions, nous la lisons avec des requêtes parallèles telles que les suivantes :

    SELECT * FROM table WHERE id <= 100 AND id < 200 SELECT * FROM table WHERE id <= 200 AND id < 300

    Cela devrait générer neuf fichiers, de part-00000-random_uuid.gz.parquet àpart-00008-random_uuid.gz.parquet. Toutefois, s'il n'y a aucune ligne IDs entre 200 et350, l'une des partitions terminées est vide et aucun fichier n'est créé pour elle. Dans l'exemple précédent, part-00001-random_uuid.gz.parquet n'est pas créé.

  • Ancienne convention :

    part-partition_index-random_uuid.format-based_extension

    C'est la même que la convention actuelle, mais sans le batch_index préfixe, par exemple :

    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

La convention de dénomination de fichiers est sujette à modification. Par conséquent, lors de la lecture des tables cibles, nous vous conseillons de lire tout ce qui se trouve à l'intérieur du préfixe de base de la table.

Conversion des données lors de l'exportation vers un compartiment Amazon S3

Lorsque vous exportez un instantané de base de données vers un compartiment Amazon S3, Amazon Aurora convertit les données, les exporte et les stocke au format Parquet. Pour plus d'informations sur Parquet, veuillez consulter le site web Apache Parquet.

Parquet stocke toutes les données sous l'un des types primitifs suivants :

  • BOOLEAN

  • INT32

  • INT64

  • INT96

  • FLOAT

  • DOUBLE

  • BYTE_ARRAY – Tableau d'octets de longueur variable, également connu sous le nom de binaire

  • FIXED_LEN_BYTE_ARRAY – Tableau d'octets de longueur fixe utilisé lorsque les valeurs ont une taille constante

Les types de données Parquet sont peu nombreux afin de la complexité de la lecture et de l'écriture du format. Parquet fournit des types logiques pour étendre les types primitifs. Un type logique est implémenté sous forme d'annotation avec les données dans un champ de métadonnées LogicalType. L'annotation de type logique explique comment interpréter le type primitif.

Lorsque le type logique STRING annote un type BYTE_ARRAY, il indique que le tableau d'octets doit être interprété comme une chaîne de caractères codée en UTF-8. Une fois la tâche d'exportation terminée, Amazon Aurora vous avertit si une conversion de chaîne s'est produite. Les données sous-jacentes exportées sont toujours les mêmes que celles de la source. Cependant, en raison de la différence d'encodage en UTF-8, certains caractères peuvent apparaître différents de la source lorsqu'ils sont lus dans des outils tels que Athena.

Pour plus d'informations, veuillez consulter Parquet Logical Type Definitions dans la documentation Parquet.

Mappage du type de données MySQL à Parquet

Le tableau suivant montre le mappage des types de données MySQL aux types de données Parquet lorsque les données sont converties et exportées vers Amazon S3.

Type de données source Type primitif du format Parquet Annotation de type logique Notes de conversion
Types de données numériques
BIGINT INT64
BIGINT UNSIGNED FIXED_LEN_BYTE_ARRAY(9) DECIMAL(20,0) Parquet ne prend en charge que les types signés, de sorte que le mappage nécessite un octet supplémentaire (8 plus 1) pour stocker le type BIGINT_UNSIGNED.
BIT BYTE_ARRAY
DECIMAL INT32 DECIMAL(p,s) Si la valeur source est inférieure à 2 31, elle est stockée sous la forme INT32.
INT64 DECIMAL(p,s) Si la valeur source est supérieure ou égale à 2 31, mais inférieure à 2 63, elle est stockée sous la formeINT64.
FIXED_LEN_BYTE_ARRAY(N) DECIMAL(p,s) Si la valeur source est supérieure ou égale à 263, elle est stockée sous la forme FIXED_LEN_BYTE_ARRAY(N).
BYTE_ARRAY STRING Parquet ne prend pas en charge une précision décimale supérieure à 38. La valeur décimale est convertie en chaîne de type BYTE_ARRAY et codée sous la forme. UTF8
DOUBLE DOUBLE
FLOAT DOUBLE
INT INT32
INT UNSIGNED INT64
MEDIUMINT INT32
MEDIUMINT UNSIGNED INT64
NUMERIC INT32 DECIMAL(p,s)

Si la valeur source est inférieure à 2 31, elle est stockée sous la formeINT32.

INT64 DECIMAL(p,s) Si la valeur source est supérieure ou égale à 2 31, mais inférieure à 2 63, elle est stockée sous la formeINT64.
FIXED_LEN_ARRAY(N) DECIMAL(p,s) Si la valeur source est supérieure ou égale à 263, elle est stockée sous la forme FIXED_LEN_BYTE_ARRAY(N).
BYTE_ARRAY STRING Parquet ne prend pas en charge la précision numérique supérieure à 38. Cette valeur numérique est convertie en chaîne de type BYTE_ARRAY et codée sous la forme. UTF8
SMALLINT INT32
SMALLINT UNSIGNED INT32
TINYINT INT32
TINYINT UNSIGNED INT32 INT (16, vrai)
Types de données chaîne
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
Types de données de date et d'heure
DATE BYTE_ARRAY STRING Une date est convertie en chaîne de type BYTE_ARRAY et encodée sous la forme. UTF8
DATETIME INT64 TIMESTAMP_MICROS
TIME BYTE_ARRAY STRING Un type TIME est converti en chaîne dans un BYTE_ARRAY et codé sous la forme. UTF8
TIMESTAMP INT64 TIMESTAMP_MICROS
YEAR INT32
Types de données géométriques
GEOMETRY BYTE_ARRAY
GEOMETRYCOLLECTION BYTE_ARRAY
MULTIPOINT BYTE_ARRAY
MULTIPOLYGON BYTE_ARRAY
POINT BYTE_ARRAY
POLYGON BYTE_ARRAY
Type de données JSON
JSON BYTE_ARRAY STRING

Mappage de type de données PostgreSQL vers Parquet

Le tableau suivant montre le mappage des types de données PostgreSQL aux types de données Parquet lorsque les données sont converties et exportées vers Amazon S3.

Type de données PostgreSQL Type primitif du format Parquet Annotation de type logique Notes de mappage
Types de données numériques
BIGINT INT64
BIGSERIAL INT64
DECIMAL BYTE_ARRAY STRING Un type DECIMAL est converti en chaîne de type BYTE_ARRAY et codé sous la forme. UTF8

Cette conversion vise à éviter les complications dues à la précision des données et aux valeurs de données qui ne sont pas un nombre (NaN).

DOUBLE PRECISION DOUBLE
INTEGER INT32
MONEY BYTE_ARRAY STRING
REAL FLOAT
SERIAL INT32
SMALLINT INT32 INT (16, vrai)
SMALLSERIAL INT32 INT (16, vrai)
Types de chaînes et de données associés
ARRAY BYTE_ARRAY STRING

Un tableau est converti en chaîne et codé sous la forme BINARY (UTF8).

Cette conversion vise à éviter les complications dues à la précision des données, aux valeurs de données qui ne sont pas un nombre (NaN) et aux valeurs de données horaires.

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
Types de données de date et d'heure
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
Types de données géométriques
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
Types de données JSON
JSON BYTE_ARRAY STRING
JSONB BYTE_ARRAY STRING
Autres types de données
BOOLEAN BOOLEAN
CIDR BYTE_ARRAY STRING Type de données de réseau
COMPOSITE BYTE_ARRAY STRING
DOMAIN BYTE_ARRAY STRING
INET BYTE_ARRAY STRING Type de données de réseau
MACADDR BYTE_ARRAY STRING
OBJECT IDENTIFIER N/A
PG_LSN BYTE_ARRAY STRING
RANGE BYTE_ARRAY STRING
UUID BYTE_ARRAY STRING