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.
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.
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 :
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;
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
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.
La prochaine étape sera :
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!