web-dev-qa-db-fra.com

Comment réduire le stockage (réduire) mon instance RDS?

J'ai une instance RDS (Postgres) avec stockage SSD 1000 Go, mais les données ne font que 100 Go.

Comment réduire facilement la ressource de stockage de RDS?

22
Hello lad

RDS ne vous permet pas de réduire la quantité de stockage allouée à une instance de base de données, mais seulement de l'augmenter.

Pour déplacer votre base de données vers moins de stockage, vous devez créer une nouvelle instance RDS avec l'espace de stockage souhaité, puis utiliser quelque chose comme pg_dump/pg_restore pour déplacer les données de l'ancienne base de données vers la nouvelle.

Sachez également qu'une instance RDS avec 1 000 Go de stockage SSD a un IOPS de base de 3 000. Une instance RDS avec 100 Go de stockage SSD a un IOPS de base de 300, avec des rafales occasionnelles allant jusqu'à 3 000.

22
Mark B

D'après l'aide d'AWS ici , voici le processus complet qui a fonctionné pour moi:

1) Vider la base de données dans un fichier : exécutez-le sur une machine disposant d'un accès réseau à la base de données: pg_dump -Fc -v -h your-rds-endpoint.us-west-2.rds.amazonaws.com -U your-username your-databasename > your-databasename.dump

2) Dans la console AWS, créez une nouvelle instance RDS avec un stockage plus petit. (Vous souhaiterez probablement le configurer avec le même nom d'utilisateur, mot de passe et nom de base de données.)

3) Restaurez la base de données sur la nouvelle instance RDS : exécutez cette commande (évidemment sur la même machine que la commande précédente): pg_restore -v -h the-new-rds-endpoint.us-west-2.rds.amazonaws.com -U your-username -d your-databasename your-databasename.dump

(Notez, à l'étape 3, que j'utilise le point de terminaison de la nouvelle instance RDS. Notez également qu'il n'y a pas de :5432 à la fin des adresses de noeud final.)

14
Luke

Amazon ne permet pas de réduire la taille du disque dur de l'instance RDS, vous pouvez avoir deux options pour réduire la taille du stockage.

1: -si vous pouvez vous permettre des temps d'arrêt, la sauvegarde mysqldump de l'ancienne instance peut être restaurée sur une nouvelle instance ayant une taille de stockage moindre.

2: - Vous pouvez utiliser le service de migration de base de données pour déplacer des données d'une instance vers une autre instance sans aucun temps d'arrêt.

7
Sudhir Shekhsaria

Lorsque vous utilisez RDS, au lieu de faire une "planification de capacité" matérielle typique, vous provisionnez juste assez d’espace disque à court ou moyen terme (dépend), l’étendez si nécessaire.

Comme @Mark B l'a mentionné, vous devez également surveiller les IOPS. Vous pouvez utiliser des "IOPS provisionnés" si vous avez besoin d'une base de données hautes performances.

Vous devez effectuer votre ajustement des coûts par rapport aux performances avant de vous lancer dans la partie de stockage de l'espace disque. Par exemple. si vous réduisez de 1000 Go à 120 Go, pour l'ouest américain, vous économiserez 0,125 x 880 Go = 110/mois. Mais le Max IOPS sera 120x 3 = 360IOPS

Il vous en coûtera 0,10 $ pour provisionner des IOPS supplémentaires pour augmenter les performances. Dites si vous avez réellement besoin de 800IOPS pour une réponse plus élevée des utilisateurs en ligne,
(800-360) x 0,10 = 44 $. Ainsi, l'économie réelle peut finalement "être moindre". Vous n'économiserez pas d'argent si votre RDS a besoin de 1100 IOPS constants. Et un autre facteur d'actualisation peut également entrer en jeu.

4
mootmoot

Vous pouvez le faire en migrant la base de données vers Aurora.

Si vous ne voulez pas d'Aurora, le service de migration de données est la meilleure option à mon avis. Nous déplaçons la production vers Aurora, donc cela n'avait pas d'importance, et nous pouvons toujours la récupérer d'Aurora en utilisant pg_dump ou DMS. (Je suppose que cela s'appliquera également à MySQL, mais je ne l'ai pas testé.)

Mon objectif spécifique était de réduire la taille finale des instantanés RDS Postgres après avoir mis hors service certaines instances initialement créées avec 1 To + de stockage chacune.

  1. Créez l'instantané normal. La taille de stockage entièrement provisionnée est allouée à l'instantané.
  2. Mettez à niveau l'instantané vers une version de moteur prise en charge par Aurora, si ce n'est déjà fait. J'ai choisi 10,7.
  3. Migrez l'instantané vers Aurora. Cela crée une nouvelle base de données Aurora.
  4. Instantané de la nouvelle Aurora DB. La taille de stockage de l'instantané commence en tant que taille entièrement provisionnée, mais tombe au stockage réellement utilisé une fois terminé.
  5. Supprimez la nouvelle Aurora DB.
  6. Confirmez que votre instantané Aurora est bon en le restaurant à nouveau et en fouillant dans la nouvelle nouvelle base de données jusqu'à ce que vous soyez convaincu que les instantanés originaux peuvent être supprimés.
  7. Supprimez la nouvelle Aurora DB et l'instantané d'origine.

Vous pouvez vous arrêter à 3 si vous le souhaitez et utiliser simplement la base de données Aurora à l'avenir.

0
Marius Marais