Importation de données depuis n'importe quelle source vers une instance de base de données MariaDB ou MySQL - 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 MariaDB ou MySQL

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 snapshots DB Amazon RDS sont des sauvegardes complètes de votre instance de base de données qui peuvent être utilisées pour restaurer l'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 et peut être utilisé pour faire naître de nouvelles instances de bases de données.

La liste suivante montre les étapes à suivre. Chaque étape est présentée plus en détail dans les sections suivantes.

  1. Créer les fichiers plats contenant les données à charger.

  2. Arrêter les applications accédant à l'instance de base de données cible.

  3. Créer un snapshot DB.

  4. Envisager la désactivation des sauvegardes automatiques Amazon RDS.

  5. Chargez les données.

  6. Activer à nouveau les sauvegardes automatiques.

É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 ; les données de plusieurs tables ne peuvent pas être combinées 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 est sales, le nom du fichier peut être sales.csv ou sales.txt, mais pas sales_01.csv.

Chaque fois que possible, triez les données sur 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 nouveaux fichiers sont nommés sales.part_00, sales.part_01, etc.

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

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

Étape 2 : Arrêter les applications accédant à l'instance de base de données cible

Avant de démarrer un chargement volumineux, arrêtez toute activité d'application accédant à l'instance de base de données cible sur laquelle s'effectuera le chargement. 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. Sinon, la création d'un instantané de bases de données de votre instance de base de données vous permet, si nécessaire, de restaurer l'instance de base de données à son état avant le chargement. Comme précédemment évoqué, lorsque vous lancez un instantané de bases de données, les opérations I/O sur votre instance de base de données sont suspendues quelques minutes pendant la sauvegarde de la base de données.

L'exemple suivant utilise la AWS CLI create-db-snapshot commande 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".

Pour LinuxmacOS, 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 LinuxmacOS, 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 LinuxmacOS, 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

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

Étape 4 : envisager la désactivation des sauvegardes automatiques Amazon RDS

Avertissement

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

La désactivation des sauvegardes automatiques efface toutes les sauvegardes existantes, de sorte que la point-in-time restauration n'est pas possible une fois les sauvegardes automatisées désactivées. La désactivation des sauvegardes automatiques est une optimisation des performances et n'est pas requise pour les chargements de données. 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 et la redémarre pour activer ou désactiver la journalisation MariaDB ou MySQL.

Utilisez 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 LinuxmacOS, 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-instances commande. L'exemple montre comment afficher l'état de l'instance de base de données de l'instance de base de données AcmeRDS.

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

Lorsque l'état de l'instance de base de données est available, vous êtes prêt à continuer.

Étape 5 : Charger les données

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

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 la documentation MySQL.

Étape 6 : activer les sauvegardes automatiques Amazon RDS

Une fois le chargement terminé, réactivez les sauvegardes automatiques Amazon RDS en redéfinissant la période de rétention des sauvegardes à la valeur qui était la sienne avant le chargement. Comme noté précédemment, Amazon RDS redémarre l'instance de base de données. Par conséquent, préparez-vous à une brève interruption de service.

L'exemple suivant utilise la AWS CLI modify-db-instance commande 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.

Pour LinuxmacOS, 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