Importation de données depuis n'importe quelle source vers une instance de base de données Amazon RDS for MariaDB - Amazon Relational Database Service

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.

Importation de données depuis n'importe quelle source vers une instance de base de données Amazon RDS for MariaDB

Les étapes suivantes vous expliquent comment importer des données vers une instance de base de données Amazon RDS :

Étape 1 : Créer les fichiers plats contenant les données à charger

Utilisez un format courant, tel que CSV (valeurs séparées par des virgules), pour stocker les données à charger. Chaque table doit avoir son propre fichier. Vous ne pouvez pas combiner les données de plusieurs tables dans le même fichier. Attribuez à chaque fichier le même nom que celui de la table à laquelle il correspond. L'extension du fichier est laissée à votre libre choix. Par exemple, si le nom de la table estsales, le nom du fichier peut être sales.csv ousales.txt.

Si possible, classez les données en fonction de la clé primaire de la table en cours de chargement. Cela améliore de façon spectaculaire les temps de chargement et réduit le stockage disque requis.

Cette procédure est d'autant plus rapide et efficace que les fichiers ont une petite taille. Si la taille non compressée d'un fichier est supérieure à 1 Gio, scindez-le en plusieurs fichiers et chargez chacun d'eux séparément.

Sur les systèmes Unix (Linux inclus), utilisez la commande split. Par exemple, la commande suivante fractionne le fichier sales.csv en plusieurs fichiers de moins d'1 Gio, le fractionnement n'intervenant qu'aux sauts de ligne (-C 1 024m). Les noms des nouveaux fichiers incluent des suffixes numériques croissants. La commande suivante génère des fichiers portant des noms tels que sales.part_00 etsales.part_01.

split -C 1024m -d sales.csv sales.part_

Des utilitaires semblables sont disponibles sur les autres systèmes d'exploitation.

Vous pouvez stocker les fichiers plats n'importe où. Toutefois, lorsque vous chargez les données à l'étape 5, vous devez appeler le mysql shell depuis le même emplacement où se trouvent les fichiers, ou utiliser le chemin absolu des fichiers lors de l'exécutionLOAD DATA LOCAL INFILE.

Étape 2 : empêcher les applications d'accéder à l'instance de base de données cible

Avant de démarrer un chargement important, empêchez toute activité de l'application d'accéder à l'instance de base de données cible sur laquelle vous prévoyez de charger. Nous le recommandons particulièrement quand d'autres sessions sont susceptibles de modifier les tables chargées ou les tables qu'elles référencent. Cela réduit le risque de violation des contraintes intervenant pendant le chargement et améliore les performances de chargement. Dans le même temps, cela permet également de restaurer l'instance de base de données au point juste antérieur au chargement sans perdre les modifications effectuées par les processus non impliqués dans le chargement.

Il est vrai que cela peut ne pas être possible ou pratique. Si vous ne pouvez pas empêcher les applications d'accéder à l'instance de base de données avant le chargement, prenez les mesures nécessaires pour garantir la disponibilité et l'intégrité de vos données. Les étapes spécifiques requises varient grandement en fonction de cas d'utilisation spécifiques et des exigences du site.

Étape 3 : Créer un instantané de base de données

Si vous envisagez de charger des données dans une nouvelle instance de base de données qui ne contient aucune donnée, vous pouvez ignorer cette étape. Dans le cas contraire, nous vous recommandons de créer des instantanés de base de données de l'instance de base de données Amazon RDS cible avant et après le chargement des données. Les instantanés de base de données Amazon RDS sont des sauvegardes complètes de votre instance de base de données que vous pouvez utiliser pour restaurer votre instance de base de données à un état connu. Lorsque vous lancez un instantané de bases de données, les opérations I/O sur votre instance de base de données sont momentanément suspendues pendant la sauvegarde de la base de données.

La création d'un instantané de base de données juste avant le chargement vous permet, si besoin est, de restaurer la base de données à son état avant le chargement. Un instantané de base de données pris immédiatement après le chargement vous évite de devoir charger les données à nouveau en cas d'incident. Vous pouvez également utiliser des instantanés de base de données après le chargement pour importer des données dans de nouvelles instances de base de données.

L'exemple suivant exécute la AWS CLI create-db-snapshotcommande pour créer un instantané de base de données de l'AcmeRDSinstance et attribuer l'identifiant à l'instantané de base de données"preload".

Dans Linux, macOS, ou Unix:

aws rds create-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

Dans Windows:

aws rds create-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

Vous pouvez aussi utiliser la restauration de la fonctionnalité d'instantané de bases de données pour créer des instances de bases de données de test dans le but de réaliser des essais ou pour annuler les modifications effectuées pendant le chargement.

Gardez à l'esprit que la restauration d'une base de données à partir d'un instantané de bases de données crée une nouvelle instance de base de données qui, comme toutes les instances de base de données, possède un point de terminaison et un identifiant unique. Si vous devez restaurer l'instance de base de données sans modifier le point de terminaison, vous devez d'abord supprimer l'instance de base de données de telle sorte que le point de terminaison puisse être réutilisé.

Par exemple, pour créer une instance de base de données pour les essais ou autres tests, vous attribuez à l'instance de base de données son propre identifiant. Dans cet exemple, l'identifiant est AcmeRDS-2. L'exemple se connecte à l'instance de base de données à l'aide du point de terminaison associé à AcmeRDS-2. Pour plus d'informations, consultez restore-db-instance-from-db-snapshot.

Dans Linux, macOS, ou Unix:

aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS-2 \ --db-snapshot-identifier preload

Dans Windows:

aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS-2 ^ --db-snapshot-identifier preload

Pour réutiliser le point de terminaison existant, il faut d'abord supprimer l'instance de base de données, puis donner le même identifiant à la base de données restaurée. Pour de plus amples informations, veuillez consulter delete-db-instance.

L'exemple suivant prend également un instantané de base de données final de l'instance de base de données avant de la supprimer. Cette action est facultative, mais recommandée.

Dans Linux, macOS, ou Unix:

aws rds delete-db-instance \ --db-instance-identifier AcmeRDS \ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

Dans Windows:

aws rds delete-db-instance ^ --db-instance-identifier AcmeRDS ^ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

Étape 4 (facultatif) : désactiver les sauvegardes automatisées Amazon RDS

Avertissement

Ne désactivez pas les sauvegardes automatiques si vous devez effectuer une point-in-time restauration.

La désactivation des sauvegardes automatisées permet d'optimiser les performances et n'est pas nécessaire pour les chargements de données. La désactivation des sauvegardes automatiques efface toutes les sauvegardes existantes. Par conséquent, une fois les sauvegardes automatisées désactivées, la point-in-time restauration n'est pas possible. Les instantanés de bases de données manuels ne sont pas affectés par la désactivation des sauvegardes automatiques. Tous les instantanés manuels de base de données existants demeurent disponibles pour la restauration.

La désactivation des sauvegardes automatiques réduit le temps de chargement de près de 25 %, ainsi que la quantité d'espace de stockage requise pendant le chargement. Si vous envisagez de charger des données dans une nouvelle instance de base de données qui ne contient aucune donnée, la désactivation des sauvegardes constitue un moyen simple d'accélérer le chargement et d'éviter d'utiliser le stockage supplémentaire nécessaire pour les sauvegardes. Cependant, dans certains cas, vous pouvez envisager de charger dans une instance de base de données qui contient déjà des données. Si tel est le cas, évaluez les avantages de la désactivation des sauvegardes par rapport à l'impact de la perte de performance point-in-time-recovery.

Les instances de bases de données ont les sauvegardes automatiques activées par défaut (avec une période de rétention égale à une journée). Pour désactiver les sauvegardes automatiques, définissez la période de rétention des sauvegardes à 0. Après le chargement, vous pouvez réactiver les sauvegardes en définissant la période de rétention des sauvegardes avec une valeur différente de zéro. Pour activer ou désactiver les sauvegardes, Amazon RDS arrête l'instance de base de données, puis la redémarre pour activer ou désactiver la connexion à MariaDB ou MySQL.

Exécutez la AWS CLI modify-db-instance commande pour définir la rétention des sauvegardes sur zéro et appliquez la modification immédiatement. Comme la définition de la période de rétention à la valeur zéro nécessite un redémarrage de l'instance de base de données, attendez que le redémarrage soit terminé avant de poursuivre. Pour de plus amples informations, veuillez consulter modify-db-instance.

Dans Linux, macOS, ou Unix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --apply-immediately \ --backup-retention-period 0

Dans Windows:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --apply-immediately ^ --backup-retention-period 0

Vous pouvez vérifier l'état de votre instance de base de données à l'aide de la AWS CLI describe-db-instancescommande. L'exemple suivant affiche l'état de l'instance de base de données de l'AcmeRDSinstance de base de données :

aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"

Lorsque le statut de l'instance de base de données est définiavailable, vous êtes prêt à passer à l'étape suivante.

Étape 5 : Charger les données

Pour lire les lignes de vos fichiers plats dans les tables de base de données, utilisez l'LOAD DATA LOCAL INFILEinstruction MySQL.

Note

Vous devez appeler le mysql shell depuis le même emplacement où se trouvent vos fichiers plats, ou utiliser le chemin absolu des fichiers lors de l'exécutionLOAD DATA LOCAL INFILE.

L'exemple suivant montre comment charger les données d'un fichier nommé sales.txt dans une table nommée Sales dans la base de données :

mysql> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\'; Query OK, 1 row affected (0.01 sec) Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

Pour plus d'informations sur LOAD DATA cette instruction, consultez l'instruction LOAD DATA dans la documentation MySQL.

Étape 6 : réactiver les sauvegardes automatisées Amazon RDS

Si vous avez désactivé les sauvegardes automatisées Amazon RDS à l'étape 4, activez les sauvegardes automatisées une fois le chargement terminé en redéfinissant la période de conservation des sauvegardes à sa valeur de préchargement. Comme indiqué à l'étape 4, Amazon RDS redémarre l'instance de base de données. Préparez-vous donc à une brève interruption.

L'exemple suivant exécute la AWS CLI modify-db-instancecommande pour activer les sauvegardes automatiques pour l'AcmeRDSinstance de base de données et définir la période de rétention sur un jour :

Dans Linux, macOS, ou Unix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --backup-retention-period 1 \ --apply-immediately

Dans Windows:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --backup-retention-period 1 ^ --apply-immediately