Maison  >  Article  >  base de données  >  Migrez votre base de données MySQL locale vers AWS RDS

Migrez votre base de données MySQL locale vers AWS RDS

DDD
DDDoriginal
2024-09-12 20:16:59870parcourir

Dans cet article, je partagerai les étapes détaillées pour migrer les données de votre base de données MySQL locale vers des instances nouvellement créées sur AWS RDS avec MySQL.

Arrière-plan

J'ai travaillé sur un projet full-stack en 2023 où j'ai géré manuellement les déploiements de production de ma base de données et du backend vers AWS. Plus tôt cette année, j'ai fermé toute l'infrastructure parce que j'accumulais trop de coûts mensuels avec la base de données (non merci à mon surprovisionnement).

Maintenant, avance rapide jusqu'à ce mois-ci et j'avais encore beaucoup de crédits AWS (les avantages d'être un Community Builder) qui devaient expirer d'ici la fin de l'année. J'ai essayé de relancer mon projet pour réaliser que ce ne serait pas aussi facile que je le pensais.

Tout d'abord, je n'avais pas correctement créé un instantané que je pourrais utiliser pour restaurer les données de production et j'obtenais constamment des erreurs d'accès. Cela m'a également rappelé à quel point l'ensemble du déploiement avait été extrêmement manuel et comment je n'avais documenté aucune des étapes que j'avais suivies (je ne m'en souvenais pas non plus).

C'est une leçon apprise, donc cette fois, je documente l'ensemble du processus. Conformément à l'un des dictons d'un cours Udemy que je n'ai jamais terminé :

'Il faut savoir effectuer une tâche manuellement avant de procéder à son automatisation'.

Par conséquent, je vais d'abord partager les étapes que j'ai suivies pour effectuer la migration manuellement, et dans un article suivant, j'écrirai des scripts pour provisionner l'infrastructure avec Terraform et également vider les données locales dans la base de données distante après une réussite. lancement.

Cela fait également partie de mon projet en cours que je m'ai assigné pour en savoir plus sur CI/CD en créant un pipeline pour automatiser l'ensemble du déploiement du projet.

A) Étapes manuelles

1. Créez une nouvelle instance de base de données sur Amazon RDS

Cette fois, j'ai été plus intentionnel et pratique avec la configuration. Bien qu'il s'agisse d'un « déploiement de production », j'ai quand même opté pour ce qui est probablement le coût de fonctionnement le moins cher puisqu'il ne s'agit pas d'un véritable produit en direct (cela a également influencé certaines options de sécurité que j'ai choisi de ne pas ajouter).

J'ai résumé les options que j'ai choisies dans l'assistant 'Créer une base de données' ci-dessous :

AWS Region: eu-west-2
Database creation method: Standard Create
Engine type/edition/version: MySQL/MySQL Community/MySQL 8.0.35
Use case template: Free Tier
Credential settings: define these as you'd prefer
DB instance class: db.t3.micro
Storage: gp2, 20GB, auto-scaling enabled up to 100GB
Connectivity: 
    - define these for your specific use-case; I chose not to use an EC2
    - Public access: Yes, because I wanted to connect to the database locally via MySQL Workbench
Database authentication: Password auth
Additional configuration:
    - I created one database from here; but you can also leave it blank and create one when you get access via Workbench
Others: 
    - use default options or modify for your use-case
Deletion protection:
    - enabled (to dissuade myself from deleting easily like the last time)

Coûts mensuels estimés :

Migrate Your Local MySQL Database to AWS RDS

2. Connectez-vous à l'instance RDS localement

Une fois l'instance lancée avec succès, utilisez le client MySQL pour vous connecter à l'instance. Cela suppose que votre serveur MySQL est installé et en cours d'exécution.

Démarrer avec MySQL
Client MySQL

Vous aurez également besoin du point de terminaison de l'instance, ainsi que du nom d'utilisateur et du mot de passe que vous avez définis dans les paramètres d'informations d'identification, pour exécuter cette commande :

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p

Remarque : Votre instance aura été créée avec les règles entrantes et sortantes correctes pour les groupes de sécurité VPC sélectionnés.

Cependant, si vous rencontrez des erreurs de connexion, confirmez que votre adresse IP est incluse dans la source autorisée pour les règles entrantes. J'ai rencontré un problème similaire lorsque j'ai créé l'instance dans un emplacement spécifique avec son adresse IP, et lorsque j'ai essayé de me connecter avec une adresse IP différente dans un autre emplacement, la connexion a expiré.

[Facultatif] Créez votre base de données
Si vous avez ignoré l'étape de configuration supplémentaire lors de la création de l'instance, vous pouvez en créer une à cette étape :

CREATE DATABASE sample_db;

3. Importez des données depuis votre base de données locale

Pour ce faire, vous devez d'abord utiliser la commande mysqldump pour exporter le schéma et les données de votre base de données locale vers un fichier de dump .sql :

mysqldump -u root -p local_db_name > sample_dump.sql

Remarque : si vous rencontrez des erreurs lors de la tentative d'exportation, consultez ma question sur Stack Overflow ainsi qu'une réponse qui pourrait résoudre certains problèmes possibles.

Ensuite, utilisez la commande mysql pour importer le fichier dump dans votre instance RDS :

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p 
sample_db < sample_dump.sql

4. [Facultatif] Connectez-vous à votre instance RDS via MySQL Workbench

Confirmez que vous pouvez vous connecter à l'instance sans problème et vérifiez le schéma et les données dans la base de données pour confirmer qu'ils ont également été importés correctement.

Impossible de se connecter ?

  • Assurez-vous d'avoir correctement configuré les paramètres d'accès public, ou
  • Utilisez une instance EC2 pour vous connecter en toute sécurité à la base de données et exécuter vos commandes SQL via l'instance. Assurez-vous que l'instance EC2 se trouve également à l'intérieur du VPC où se trouve l'instance RDS.

La prochaine étape sera :

  • déploiement sur App Runner avec les informations d'identification de base de données requises à partir de cet article (et l'accès à l'infrastructure nécessaire),
  • écrire des scripts avec Terraform à la place, et
  • créer un pipeline CI/CD pour mettre à jour les futures mises à jour du backend et du frontend.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn