Importation de données vers une instance de base de données MySQL ou MariaDB Amazon RDS avec un temps réduit - 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 vers une instance de base de données MySQL ou MariaDB Amazon RDS avec un temps réduit

Si votre scénario le prend en charge, il est plus facile de transférer des données vers et depuis Amazon RDS à l'aide des fichiers de sauvegarde et de Amazon S3. Pour plus d'informations, consultez Restauration d'une sauvegarde dans une instance de base de données MySQL Amazon RDS.

Dans certains cas, vous devez importer les données à partir d'une base de données externe MySQL ou MariaDB prenant en charge une application active vers une instance de base de données MySQL ou MariaDB Amazon RDS. Vous pouvez alors utiliser la procédure suivante pour réduire l'impact sur la disponibilité de l'application. Cette procédure peut s'avérer également utile si vous travaillez avec une base de données très volumineuse. Dans ce cas, elle vous permet de réduire le coût de l'importation en diminuant la quantité de données transmises à AWS via le réseau.

Dans cette procédure, vous pouvez transférer une copie des données de la base de données vers une instance Amazon EC2 et importer les données dans une nouvelle instance de base de données Amazon RDS. Vous pouvez alors utiliser la réplication pour mettre à jour l'instance de base de données Amazon RDS avec votre instance externe active, avant de rediriger votre application vers l'instance de base de données Amazon RDS. Vous configurez la réplication MariaDB en fonction des identificateurs de transaction globaux (GTID) si l'instance externe est MariaDB 10.0.2 ou version ultérieure, et que l'instance cible est Amazon RDS MariaDB ; sinon, vous configurez la réplication en fonction des coordonnées des journaux binaires. Nous recommandons la réplication basée sur les identificateurs de transaction globaux si votre base de données externe la prend en charge en raison de ses fonctions améliorées de sécurité en cas d'incident. Pour plus d'informations, consultez Identificateurs de transaction mondiaux dans la documentation MariaDB.

Note

Il est déconseillé d'utiliser cette procédure avec les bases de données MySQL source à partir des versions MySQL antérieures à la version 5.1, en raison de problèmes potentiels de réplication. Pour de plus amples informations, veuillez consulter Compatibilité de réplication entre versions MySQL dans la documentation MySQL.

Créer une copie de votre base de données existante

La première étape de la migration d'un volume important de données vers une instance de base de données MySQL ou MariaDB Amazon RDS avec un arrêt minimal consiste à créer une copie des données source.

Vous pouvez recourir à l'utilitaire mysqldump pour créer une sauvegarde de base de données au format SQL ou texte délimité. Vous devez procéder à une série de tests avec chaque format dans un environnement autre que de production pour voir quelle méthode diminue le temps d'exécution de mysqldump.

Vous pouvez aussi évaluer les performances de mysqldump par rapport à l'avantage offert par l'utilisation du format texte délimité pour le chargement. Une sauvegarde à l'aide du format texte délimité crée un fichier texte séparé par des tabulations pour chaque table vidée. Vous pouvez charger ces fichiers en parallèle à l'aide de la commande LOAD DATA LOCAL INFILE pour réduire le temps requis pour importer votre base de données. Pour de plus amples informations sur le choix d'un format mysqldump et le chargement des données, veuillez consulter Utilisation de mysqldump pour les sauvegardes dans la documentation MySQL.

Avant de démarrer l'opération de sauvegarde, vous devez définir les options de réplication sur la base de données MySQL ou MariaDB que vous copiez sur Amazon RDS. Les options de réplication incluent l'activation de la journalisation binaire et la configuration d'un ID serveur unique. La définition de ces options oblige votre serveur à démarrer la journalisation des transactions de base de données et le prépare à être une instance de réplication source ultérieurement dans le processus.

Note
  • Utilisez l'option --single-transaction avec mysqldump, car elle vide un état cohérent de la base de données. Pour vous assurer de la validité d'un fichier de vidage, n'exécutez pas les instructions DDL (Data Definition Language) pendant l'exécution de mysqldump. Vous pouvez planifier une fenêtre de maintenance pour ces opérations.

  • Excluez les schémas suivants du fichier de vidage : sys, performance_schema et information_schema. L'utilitaire mysqldump exclut ces schémas par défaut.

  • Si vous devez migrer les utilisateurs et les privilèges, envisagez d'utiliser un outil qui génère le langage de contrôle des données (DCL) pour les recréer, tel que l'utilitaire pt-show-grants.

Pour définir les options de réplication

  1. Modifiez le fichier my.cnf (qui se trouve généralement sous /etc).

    sudo vi /etc/my.cnf

    Ajoutez les options log_bin et server_id à la section [mysqld]. L'option log_bin fournit un identifiant de nom de fichier pour les fichiers journaux binaires. L'option server_id fournit un identifiant unique pour le serveur dans les relations source/réplica.

    L'exemple suivant illustre la section [mysqld] mise à jour d'un fichier my.cnf :

    [mysqld] log-bin=mysql-bin server-id=1

    Pour de plus amples informations, veuillez consulter la documentation MySQL.

  2. Redémarrez le service mysql.

    sudo service mysqld restart

Pour créer une copie de sauvegarde de votre base de données existante

  1. Créez une sauvegarde de vos données à l'aide de l'utilitaire mysqldump, en spécifiant un format SQL ou un format texte délimité.

    Vous devez spécifier --master-data=2 pour pouvoir créer un fichier de sauvegarde qui puisse être utilisé pour démarrer la réplication entre les serveurs. Pour de plus amples informations, veuillez consulter la documentation mysqldump.

    Pour améliorer les performances et assurer l'intégrité des données, utilisez les options --order-by-primary et --single-transaction de mysqldump.

    Pour éviter d'inclure la base de données système MySQL dans la sauvegarde, n'utilisez pas l'option --all-databases avec mysqldump. Pour de plus amples informations, veuillez consulter Création d'un instantané de vidage avec mysqldump dans la documentation MySQL.

    Utilisez chmod si nécessaire pour vous assurer que le répertoire où le fichier de sauvegarde est en cours de création est accessible en écriture.

    Important

    Sur Windows, exécutez la fenêtre de commande en tant qu'administrateur.

    • Pour produire une sortie SQL, utilisez la commande suivante.

      Pour Linux, macOS ou Unix :

      sudo mysqldump \ --databases database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u local_user \ -p password

      Pour Windows :

      mysqldump ^ --databases database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u local_user ^ -p password
    • Pour produire une sortie à texte délimité, utilisez la commande suivante.

      Pour Linux, macOS ou Unix :

      sudo mysqldump \ --tab=target_directory \ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \ database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -p password

      Pour Windows :

      mysqldump ^ --tab=target_directory ^ --fields-terminated-by ',' ^ --fields-enclosed-by '"' ^ --lines-terminated-by 0x0d0a ^ database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -p password
      Note

      Vous devez créer manuellement les procédures stockées, déclencheurs, fonctions ou événements dans votre base de données Amazon RDS. Si vous avez l'un quelconque de ces objets dans la base de données que vous copiez, excluez-les lorsque vous exécutez mysqldump en associant les arguments suivants à votre commande mysqldump : --routines=0 --triggers=0 --events=0.

      Lors de l'utilisation du format texte délimité, un commentaire CHANGE MASTER TO est retourné quand vous exécutez mysqldump. Ce commentaire contient le nom du fichier journal maître et son emplacement. Si l'instance externe est autre que MariaDB version 10.0.2 ou supérieure, notez les valeurs pour MASTER_LOG_FILE et MASTER_LOG_POS. Vous avez besoin de ces valeurs lors de la configuration de la réplication.

      -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

      Si vous utilisez le format SQL, vous pouvez obtenir le nom du fichier journal maître et son emplacement dans l'étape 4 de la procédure : Répliquer entre votre base de données externe et la nouvelle instance de base de données Amazon RDS. Si l'instance externe est MariaDB version 10.0.2 ou ultérieure, vous pouvez obtenir l'identifiant de transaction global à l'étape suivante.

  2. Si l'instance externe que vous utilisez est MariaDB version 10.0.2 ou ultérieure, vous utilisez la réplication basée sur l'identifiant de transaction global. Exécutez SHOW MASTER STATUS sur l'instance MariaDB externe pour obtenir le nom du fichier journal binaire et son emplacement, puis convertissez-les en un identifiant de transaction global en exécutant BINLOG_GTID_POS sur l'instance MariaDB externe.

    SELECT BINLOG_GTID_POS('binary log file name', binary log file position);

    Notez l'identifiant de transaction global retourné, vous en aurez besoin pour configurer la réplication.

  3. Compressez les données copiées afin de réduire la quantité de ressources réseau nécessaires pour copier vos données sur l'instance de base de données Amazon RDS. Notez la taille du fichier de sauvegarde ; vous avez besoin de cette information lorsque vous déterminez la taille elle-même de l'instance Amazon EC2 à créer. Lorsque vous avez terminé, compressez le fichier de sauvegarde à l'aide de GZIP ou de votre utilitaire de compression favori.

    • Pour compresser une sortie SQL, utilisez la commande suivante.

      gzip backup.sql
    • Pour compresser une sortie à texte délimité, utilisez la commande suivante.

      tar -zcvf backup.tar.gz target_directory

Créer une instance Amazon EC2 et copier la base de données compressée

La copie du fichier de sauvegarde compressé de votre base de données sur une instance Amazon EC2 nécessite moins de ressources réseau que l'exécution d'une copie directe de données non compressées entre instances de bases de données. Une fois que vos données sont dans Amazon EC2, vous pouvez les copier directement de cet emplacement vers votre instance de base de données Amazon RDS MySQL ou MariaDB. Pour pouvoir économiser sur le coût des ressources réseau, votre instance Amazon EC2 doit se trouver dans la même région AWS que votre instance de base de données Amazon RDS. Le fait d'avoir l'instance Amazon EC2 dans la même région AWS que votre instance de bases de données Amazon RDS réduit également la latence réseau pendant l'importation.

Pour créer une instance Amazon EC2 et copier vos données

  1. Dans la région AWS où vous envisagez de créer l'instance de base de données RDS pour exécuter votre moteur de base de données MySQL, créez un VPC, un groupe de sécurité VPC et un sous-réseau VPC. Assurez-vous que les règles entrantes de votre groupe de sécurité VPC autorisent les adresses IP requises pour que votre application se connecte à AWS. Il peut s'agir d'une plage d'adresses IP (par exemple, 203.0.113.0/24) ou d'un autre groupe de sécurité VPC. Vous pouvez utiliser la Console de gestion Amazon VPC pour créer et gérer des VPC, des sous-réseaux et des groupes de sécurité. Pour plus d'informations, consultez Démarrez avec Amazon VPC dans le Guide de démarrage Amazon Virtual Private Cloud.

    Note

    Les comptes AWS plus anciens peuvent aussi lancer des instances en mode Amazon EC2-Classic. Dans ce cas, assurez-vous que les règles entrantes du groupe de sécurité de base de données de votre instance Amazon RDS autorisent l'accès à votre instance EC2-Classic à l'aide de l'adresse IP privée Amazon EC2. Pour plus d'informations, consultez Utilisation des groupes de sécurité DB (plateforme EC2-Classic).

  2. Ouvrez la Console de gestion Amazon EC2 et sélectionnez la région AWS qui contiendra votre instance Amazon EC2 et votre instance de bases de données Amazon RDS. Lancez une instance Amazon EC2 à l'aide du VPC, du sous-réseau et du groupe de sécurité que vous avez créés à l'étape 1. Vérifiez que vous sélectionnez un type d'instance avec un stockage suffisant pour le fichier de sauvegarde de votre base de données une fois qu'il est décompressé. Pour plus d'informations sur les instances Amazon EC2, consultez Démarrez avec les instances Amazon EC2 Linux dans le Guide de l'utilisateur Amazon Elastic Compute Cloud pour Linux.

  3. Pour vous connecter à votre instance de base de données Amazon RDS à partir de votre instance Amazon EC2, vous devez modifier votre groupe de sécurité VPC et ajouter une règle de trafic entrant en spécifiant l'adresse IP privée de votre instance EC2. L'adresse IP privée se trouve sous l'onglet Détails du volet Instance de la fenêtre de la console EC2. Pour modifier le groupe de sécurité VPC et ajouter une règle de trafic entrant, sélectionnez Groupes de sécurité dans le volet de navigation de la console EC2, choisissez votre groupe de sécurité et ajoutez une règle de trafic entrant pour MySQL/Aurora en spécifiant l'adresse IP privée de votre instance EC2. Pour apprendre à ajouter une règle de trafic entrant à un groupe de sécurité VPC, consultez la page Ajout et suppression de règles.

  4. Copiez le fichier de sauvegarde compressé de votre base de données depuis votre système local vers votre instance Amazon EC2. Utilisez chmod si nécessaire pour vous assurer d'avoir l'autorisation d'écriture pour le répertoire cible de l'instance Amazon EC2. Vous pouvez utiliser scp ou un client SSH pour copier le fichier. Voici un exemple :

    $ scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
    Important

    Assurez-vous de copier les données sensibles à l'aide d'un protocole de transfert réseau sécurisé.

  5. Connectez-vous à votre instance Amazon EC2, puis installez les dernières mises à jour et les outils clients MySQL à l'aide des commandes suivantes :

    sudo yum update -y sudo yum install mysql -y

    Pour plus d'informations, consultez Comment vous connecter à votre instance dans le Guide de l'utilisateur Amazon Elastic Compute Cloud pour Linux.

  6. Une fois connecté à votre instance Amazon EC2, décompressez le fichier de sauvegarde de votre base de données. Exemples :

    • Pour décompresser une sortie SQL, utilisez la commande suivante :

      gzip backup.sql.gz -d
    • Pour décompresser une sortie texte délimité, utilisez la commande suivante :

      tar xzvf backup.tar.gz

Créer une instance de base de données MySQL ou MariaDB Amazon RDS et importer les données de l'instance Amazon EC2

En créant une instance de base de données Amazon RDS MySQL ou MariaDB dans la même région AWS que votre instance Amazon EC2, vous pouvez importer le fichier de sauvegarde à partir d'EC2 plus rapidement que via Internet.

Pour créer une instance de base de données MySQL ou MariaDB Amazon RDS et importer vos données

  1. Déterminez quelle classe d'instance de base de données et quelle quantité d'espace de stockage sont nécessaires pour prendre en charge la charge de travail attendue pour cette instance de base de données Amazon RDS. Dans le cadre de ce processus, décidez de l'espace suffisant et de la capacité de traitement qui conviennent à vos procédures de chargement des données, ainsi que ce qui est requis pour gérer la charge de travail de production. Vous pouvez estimer ces éléments en fonction de la taille et des ressources de la base de données source MySQL ou MariaDB. Pour plus d'informations, consultez Classes d'instances de base de données.

  2. Déterminez si les IOPS provisionnées Amazon RDS sont nécessaires pour prendre en charge les charges de travail. Le stockage des IOPS provisionnées fournit un débit rapide pour les charges de travail de traitement transactionnel en ligne (OLTP), très gourmandes en opérations d'E/S. Pour plus d'informations, consultez Stockage SSD d'I/O par seconde provisionnées.

  3. Ouvrez la console Amazon RDS . Dans le coin supérieur droit, choisissez la région AWS qui contient votre instance Amazon EC2.

  4. Dans la panneau de navigation, choisissez Databases (Bases de données).

  5. Choisissez Create database (Créer une base de données), puis parcourez les différentes étapes pour choisir les options de votre instance de base de données :

    1. Veillez à choisir Standard Create (Création standard).

    2. Dans la sectionEngine options (Options de moteur), choisissez MySQL ou MariaDB, selon le cas.

    3. Pour la Version, choisissez la version compatible avec votre instance MySQL source, comme suit :

      • Si votre instance source est MySQL 5.1.x, l'instance de base de données Amazon RDS doit être MySQL 5.5.x.

      • Si votre instance source est MySQL 5.5.x, l'instance de base de données Amazon RDS doit être MySQL 5.5.x ou version ultérieure.

      • Si votre instance source est MySQL 5.6.x, l'instance de base de données Amazon RDS doit être MySQL 5.6.x ou MariaDB.

      • Si votre instance source est MySQL 5.7.x, l'instance de base de données Amazon RDS doit être MySQL 5.7.x, 5.6.x ou MariaDB.

      • Si votre instance source est MySQL 8.0.x, l'instance de base de données Amazon RDS doit être MySQL 8.0.x.

      • Si votre instance source est MariaDB 5.1, 5.2 ou 5.3, l'instance de base de données Amazon RDS doit être MySQL 5.1.x.

      • Si votre instance source est MariaDB 5.5 ou version ultérieure, l'instance de base de données Amazon RDS doit être MariaDB.

    4. Dans la section Templates (Modèles), choisissez Dev/Test pour ignorer la configuration du déploiement Multi-AZ et le stockage sur volumes IOPS provisionnés.

    5. Dans la section Paramètres, spécifiez l’identifiant d’instance de base de données demandé et les informations sur l'utilisateur.

    6. Dans les sections DB instance class (Classe d’instance de base de données) et Storage (Stockage), spécifiez la classe d’instance de base de données et la taille de stockage alloué que vous souhaitez.

    7. Dans la section Availability & durability (Disponibilité et durabilité), choisissez Do not create a standby instance (Ne pas créer d’instance de standby) pour Multi-AZ deployment (Déploiement Multi-AZ).

    8. Dans la section Connectivity (Connectivité), choisissez les mêmes Virtual Private Cloud (VPC) et groupe de sécurité VPC que pour votre instance Amazon EC2. Cette approche garantit que votre instance Amazon EC2 et votre instance Amazon RDS sont visibles l'une de l'autre sur le réseau. Définissez Publicly Accessible (Accessible publiquement) sur Yes (Oui). Pour configurer la réplication avec votre base de données source comme décrit ci-après, votre instance de base de données doit être publiquement accessible.

      Utilisez les valeurs par défaut pour tous les autres paramètres de cette section.

      Dans la section Sauvegarde, définissez la période de rétention des sauvegardes avec la valeur 0 days (0 jours).

      Utilisez les valeurs par défaut pour tous les autres paramètres de cette section.

    9. Ouvrez la section Additional configuration (Configuration supplémentaire) et spécifiez un Initial database name (Nom de la base de données initiale).

      Définissez la Backup retention period (Période de rétention des sauvegardes) sur 0 days (jours)

      Utilisez les valeurs par défaut pour tous les autres paramètres de cette section.

    10. Choisissez Create database (Créer une base de données).

      Votre nouvelle instance de base de données apparaît dans la liste Databases (Bases de données) avec l’état Creating (Création en cours). Attendez que le Status (État) de votre instance de base de données affiche Available (Disponible).

    Ne configurez pas plusieurs zones de disponibilité, la rétention des sauvegardes ou les réplicas en lecture tant que vous n'avez pas importé la sauvegarde de la base de données. Lorsque l'importation est terminée, vous pouvez définir l'option Multi-AZ et la rétention des sauvegardes comme vous le souhaitez pour l'instance de production. Pour accéder à une démonstration de la création d'une instance de base de données, veuillez consulter Création d'une instance de base de données Amazon RDS.

  6. Vérifiez les options de configuration par défaut de l'instance de base de données Amazon RDS. Dans le volet de navigation de la console RDS, choisissez Parameter groups (Groupes de paramètres), puis sélectionnez l'icône loupe à côté du groupe de paramètres default.mysqlx.x ou default.mariadbx.x. Si ce groupe de paramètres ne dispose pas des options de configuration que vous voulez, trouvez un autre groupe qui les possède ou créez un groupe de paramètres. Pour plus d'informations sur la création d'un groupe de paramètres, consultez Utilisation de groupes de paramètres de base de données.

    Si vous choisissez d'utiliser un autre groupe de paramètres que le groupe par défaut, associez-le à votre instance de base de données Amazon RDS. Pour de plus amples informations, veuillez consulter Modification d'une instance de base de données Amazon RDS.

  7. Connectez-vous à l'instance de base de données Amazon RDS comme utilisateur maître et créez les utilisateurs requis pour prendre en charge les administrateurs, les applications et les services qui doivent accéder à l'instance. Le nom d'hôte de l'instance de bases de données Amazon RDS est la valeur Point de terminaison de cette instance sans le numéro de port. Par exemple, mysampledb.claxc2oy9ak1.us-west-2.rds.amazonaws.com. Vous pouvez trouver la valeur du point de terminaison dans les détails de l'instance dans Amazon RDS Management Console.

  8. Connectez-vous à votre instance Amazon EC2. Pour plus d'informations, consultez Comment vous connecter à votre instance dans le Guide de l'utilisateur Amazon Elastic Compute Cloud pour Linux.

  9. Connectez-vous à votre instance de bases de données Amazon RDS comme hôte à distance depuis votre instance Amazon EC2 à l'aide de la commande mysql. Voici un exemple de.

    mysql -h host_name -P 3306 -u db_master_user -p

    Le nom d'hôte est le nom DNS du point de terminaison de l'instance de base de données Amazon RDS.

  10. Dans l'invite de commande mysql, exécutez la commande source et transmettez-lui le nom du fichier de vidage de votre base de données pour charger les données dans l'instance de bases de données Amazon RDS :

    • Pour le format SQL, utilisez la commande suivante.

      mysql> source backup.sql;
    • Pour le format texte délimité, créez d'abord la base de données (s'il ne s'agit pas de la base de données par défaut que vous avez créée lors de la configuration de l'instance de base de données Amazon RDS).

      mysql> create database database_name; $ mysql> use database_name;

      Créez ensuite les tables.

      mysql> source table1.sql $ mysql> source table2.sql etc...

      Enfin, importez les données.

      mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; $ mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...

      Pour améliorer les performances, vous pouvez exécuter ces opérations en parallèle à partir de plusieurs connexions de telle sorte que l'ensemble de vos tables soient créées et chargées simultanément.

      Note

      Si vous avez utilisé des options de mise en forme des données avec mysqldump lorsque vous avez initialement vidé la table, vous devez utiliser les mêmes options avec mysqlimport ou LOAD DATA LOCAL INFILE pour garantir une interprétation correcte du contenu du fichier de données.

  11. Exécutez une simple requête SELECT sur l'une ou les deux tables de la base de données importée afin de vérifier que l'importation s'est déroulée avec succès.

Note

Si vous n'avez plus besoin de l'instance Amazon EC2 utilisée dans cette procédure, mettez fin à l'instance EC2 pour réduire votre utilisation des ressources Amazon AWS. Pour mettre fin à une instance EC2, consultez Arrêter une instance.

Répliquer entre votre base de données externe et la nouvelle instance de base de données Amazon RDS

Votre base de données source a probablement été mise à jour pendant la copie et le transfert des données vers l'instance de base de données MySQL ou MariaDB Amazon RDS. Ceci étant, vous pouvez utiliser la réplication pour maintenir la base de données copiée à jour par rapport à la base de données source.

Note

Les autorisations requises pour démarrer la réplication sur une instance de base de données Amazon RDS sont restreintes et ne sont pas disponibles pour votre utilisateur principal Amazon RDS. Pour cette raison, vous devez utiliser la commande Amazon RDS mysql.rds_set_external_master ou la commande mysql.rds_set_external_master_gtid pour configurer la réplication, ainsi que la commande mysql.rds_start_replication pour démarrer la réplication entre votre base de données active et votre base de données Amazon RDS.

Pour démarrer la réplication

Précédemment, vous avez activé la journalisation binaire et défini un ID serveur unique pour votre base de données source. Maintenant, vous pouvez configurer votre instance de base de données Amazon RDS comme réplica avec votre base de données active comme instance de réplication source.

  1. Dans la Console de gestion Amazon RDS, ajoutez l'adresse IP du serveur qui héberge la base de données source au groupe de sécurité du VPC de l'instance de base de données Amazon RDS. Pour plus d'informations sur la modification d'un groupe de sécurité de VPC, consultez Security Groups for Your VPC (Groupes de sécurité pour votre VPC) dans le Guide de l'utilisateur Amazon Virtual Private Cloud.

    Il se peut aussi que vous ayez besoin de configurer votre réseau local pour autoriser les connexions à partir de l'adresse IP de votre instance de base de données Amazon RDS, de telle sorte qu'elle puisse communiquer avec votre instance source. Pour obtenir l'adresse IP de l'instance de base de données Amazon RDS, utilisez la commande host.

    host db_instance_endpoint

    Le nom d'hôte est le nom DNS du point de terminaison de l'instance de base de données Amazon RDS. Par exemple : myinstance.123456789012.us-east-1.rds.amazonaws.com. Vous pouvez trouver la valeur du point de terminaison dans les détails de l'instance dans Amazon RDS Management Console.

  2. A l'aide du client de votre choix, connectez-vous à l'instance source et créez un utilisateur à utiliser pour la réplication. Ce compte est utilisé exclusivement pour la réplication et doit être limité à votre domaine pour améliorer la sécurité. Voici un exemple de.

    MySQL 5.5, 5.6 et 5.7

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY 'password';
  3. Pour l'instance source, attribuez les privilèges REPLICATION CLIENT et REPLICATION SLAVE à votre utilisateur de réplication. Par exemple, pour accorder les privilèges REPLICATION CLIENT et REPLICATION SLAVE sur toutes les bases de données à l'utilisateur « repl_user » de votre domaine, émettez la commande suivante.

    MySQL 5.5, 5.6 et 5.7

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
  4. Si vous avez utilisé le format SQL pour créer votre fichier de sauvegarde et que l'instance externe n'est pas MariaDB 10.0.2 ou version ultérieure, examinez le contenu de ce fichier.

    cat backup.sql

    Le fichier inclut un commentaire CHANGE MASTER TO qui contient le nom du fichier journal maître et son emplacement. Ce commentaire est inclus dans le fichier de sauvegarde quand vous utilisez l'option --master-data avec mysqldump. Notez les valeurs pour MASTER_LOG_FILE et MASTER_LOG_POS.

    -- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

    Si vous avez utilisé le format texte délimité pour créer votre fichier de sauvegarde et que l'instance externe n'est pas MariaDB 10.0.2 ou version ultérieure, vous devez avoir déjà les coordonnées du journal binaire de l'étape 1 de la procédure Pour créer une copie de sauvegarde de votre base de données existante.

    Si l'instance externe est MariaDB 10.0.2 ou version ultérieure, vous devez déjà avoir l'identifiant de transaction global à partir duquel démarrer la réplication de l'étape 2 de la procédure Pour créer une copie de sauvegarde de votre base de données existante.

  5. Transformez l'instance de base de données Amazon RDS en réplica. Si l'instance externe n'est pas de version MariaDB 10.0.2 ou ultérieure, connectez-vous à l'instance de bases de données Amazon RDS en tant qu'utilisateur principal et identifiez la base de données source comme instance de réplication source à l'aide de la commande mysql.rds_set_external_master. Si vous avez un fichier de sauvegarde au format SQL, utilisez le nom et la position du fichier journal maître que vous avez déterminés dans l'étape précédente. Vous pouvez également utiliser le nom et la position que vous avez déterminés lors de la création des fichiers de sauvegarde si vous avez utilisé le format texte délimité. Voici un exemple.

    CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);

    Si l'instance externe est de version MariaDB 10.0.2 ou ultérieure, connectez-vous à l'instance de bases de données Amazon RDS en tant qu'utilisateur maître et identifiez la base de données source comme instance de réplication source à l'aide de la commande mysql.rds_set_external_master_gtid. Utilisez l'identifiant de transaction global de l'étape 2 de la procédure Pour créer une copie de sauvegarde de votre base de données existante. Voici un exemple.

    CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 0);

    source_server_ip_address est l'adresse IP de l'instance de réplication source. Une adresse DNS privée EC2 n'est pas prise en charge actuellement.

  6. Sur l'instance de base de données Amazon RDS, émettez la commande mysql.rds_start_replication pour démarrer la réplication.

    CALL mysql.rds_start_replication;
  7. Sur l'instance de bases de données Amazon RDS, exécutez la commande SHOW SLAVE STATUS pour déterminer quand le réplica est à jour avec l'instance de réplication source. Les résultats de la commande SHOW SLAVE STATUS incluent le champ Seconds_Behind_Master. Lorsque le champ Seconds_Behind_Master renvoie 0, le réplica est à jour avec l'instance de réplication source.

  8. Une fois que l'instance de base de données Amazon RDS est à jour, activez les sauvegardes automatiques de façon à pouvoir restaurer la base de données si nécessaire. Vous pouvez activer ou modifier les sauvegardes automatiques de votre instance de bases de données Amazon RDS avec la Console de gestion Amazon RDS. Pour plus d'informations, consultez Utilisation des sauvegardes.

Rediriger votre application active vers votre instance Amazon RDS

Une fois que l'instance de base de données Amazon RDS MySQL ou MariaDB est à jour avec l'instance de réplication source, vous pouvez mettre à jour votre application active et utiliser l'instance Amazon RDS.

Pour rediriger votre application active vers votre instance de base de données MySQL ou MariaDB Amazon RDS et arrêter la réplication

  1. Pour ajouter le groupe de sécurité VPC pour l'instance de base de données Amazon RDS, ajoutez l'adresse IP du serveur qui héberge l'application. Pour plus d'informations sur la modification d'un groupe de sécurité de VPC, consultez Security Groups for Your VPC (Groupes de sécurité pour votre VPC) dans le Guide de l'utilisateur Amazon Virtual Private Cloud.

  2. Vérifiez que le champ Seconds_Behind_Master de la commande SHOW SLAVE STATUS a pour résultat 0, valeur indiquant que le réplica est à jour avec l'instance de réplication source.

    SHOW SLAVE STATUS;
  3. Fermez toutes les connexions à la source une fois leurs transactions terminées.

  4. Mettez à jour votre application pour utiliser l'instance de base de données Amazon RDS. Cette mise à jour implique généralement de modifier les paramètres de connexion pour identifier le nom d'hôte et le port de l'instance de base de données Amazon RDS, le compte utilisateur et le mot de passe avec lesquels se connecter, et la base de données à utiliser.

  5. Arrêtez la réplication pour l'instance Amazon RDS à l'aide de la commande mysql.rds_stop_replication.

    CALL mysql.rds_stop_replication;
  6. Exécutez la commande mysql.rds_reset_external_master sur votre instance de base de données Amazon RDS pour réinitialiser la configuration de réplication de telle sorte que cette instance ne soit plus identifiée comme un réplica.

    CALL mysql.rds_reset_external_master;
  7. Activez des fonctions Amazon RDS supplémentaires, telles que la prise en charge de plusieurs zones de disponibilités et les réplicas en lecture. Pour plus d'informations, consultez Haute disponibilité (multi-AZ) pour Amazon RDS et Utilisation des réplicas en lecture.

Note

Si vous n'avez plus besoin de l'instance Amazon RDS utilisée dans cette procédure, supprimez l'instance RDS pour réduire votre utilisation des ressources Amazon AWS. Pour supprimer une instance RDS, consultez Suppression d'une instance DB.