PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Options de sauvegarde cloud pour PostgreSQL

Ce blog a été mis à jour le 27/11/18 et le 29/11/18 pour apporter les modifications recommandées par nos super commentateurs !

Comme pour tout autre composant d'une entreprise, les bases de données sont extrêmement importantes pour son fonctionnement interne.

Qu'il s'agisse du cœur de l'entreprise ou simplement d'un autre composant, les bases de données doivent être sauvegardées régulièrement et stockées dans des emplacements sûrs pour une éventuelle récupération future.

Dois-je sauvegarder sur le cloud ?

Une règle générale est d'avoir au moins 3 copies de tout ce qui a de la valeur et de stocker ces sauvegardes à différents endroits. Les sauvegardes sur le même disque sont inutiles si le disque lui-même meurt, les sauvegardes du même hôte sont également menacées si l'hôte tombe en panne, et les sauvegardes du même bâtiment sont également en danger si le bâtiment brûle (drastique et peu probable, mais possible).

Les sauvegardes dans le cloud offrent une solution simple pour les besoins de sauvegardes hors site sans avoir à faire tourner un nouveau matériel dans un emplacement secondaire. Il existe de nombreux services cloud différents qui offrent un stockage de sauvegarde, et le choix du bon dépendra des besoins de sauvegarde, des exigences de taille, du coût et de la sécurité.

Les avantages d'avoir des sauvegardes dans le cloud sont nombreux, mais tournent principalement autour du stockage de ces sauvegardes dans un emplacement différent de la base de données principale, ce qui nous permet d'avoir un filet de sécurité en cas de reprise après sinistre. Bien que nous n'entrerons pas dans les détails sur la configuration de chacune de ces options de sauvegarde, nous explorerons différentes idées et configurations pour les sauvegardes.

Le stockage des sauvegardes dans le cloud présente certains inconvénients, à commencer par le transfert. Si les sauvegardes de la base de données sont extrêmement volumineuses, le téléchargement réel peut prendre beaucoup de temps et peut même entraîner des coûts supplémentaires si le service cloud facture le transfert de bande passante. La compression est fortement suggérée pour réduire le temps et les coûts.

La sécurité pourrait être une autre préoccupation avec l'hébergement de sauvegardes dans le cloud, alors que certaines entreprises ont des directives strictes sur l'endroit où leurs données sont stockées et existent. Si la sécurité est un problème, toutes les sauvegardes peuvent être chiffrées avant de les exporter vers un service d'hébergement cloud.

Options de sauvegarde dans le cloud

Il existe plusieurs façons de créer des sauvegardes de base de données pour PostgreSQL, et selon le type de sauvegarde, le temps de récupération, la taille et les options d'infrastructure varient. Étant donné que de nombreuses solutions de stockage dans le cloud sont simplement du stockage avec différentes API frontales, toute solution de sauvegarde intelligente peut être créée avec un peu de script.

Sauvegardes d'instantanés

Les instantanés sont des sauvegardes qui ont une copie de la base de données PostgreSQL à un moment précis. Ces sauvegardes sont créées soit en utilisant pg_dump, qui vide simplement la base de données dans un seul fichier, soit en copiant le répertoire de données de base pour PostgreSQL. L'un ou l'autre peut être compressé, copié sur d'autres lecteurs et serveurs, puis copié sur l'option de stockage cloud souhaitée.

Utiliser pg_dump avec compression

pg_dump -Fc severalnines > severalnines.dmp

Sauvegarde du répertoire de données à l'aide de pg_basebackup

Le programme pg_basebackup peut être utilisé pour créer très facilement une sauvegarde de base. Pour plus d'informations sur toutes les fonctionnalités et comment les configurer, consultez la documentation officielle de la version de PostgreSQL utilisée.

pg_basebackup --format=tar -z -D severalnines_basebackup

Amazon S3

Avec la plate-forme AWS d'Amazon, S3 est un service de stockage de données qui peut être utilisé pour stocker des sauvegardes de bases de données. Alors que les sauvegardes peuvent être téléchargées via l'interface Web, l'Amazon CLI (interface de ligne de commande) peut être utilisée pour le faire à partir de la ligne de commande et via des scripts d'automatisation de sauvegarde. Des informations sur l'AWS CLI sont disponibles ici. Si les sauvegardes doivent être conservées pendant très longtemps et que le temps de récupération n'est pas un problème, les sauvegardes peuvent être transférées vers le service Glacier d'Amazon, offrant un stockage à long terme beaucoup moins cher.

aws s3 cp severalnines.dmp s3://severalninesbucket/backups

Amazon a également différentes régions pour ses services dans le monde entier. Même s'ils ont un bon historique de disponibilité, la diffusion de copies de sauvegardes sur plusieurs régions augmente les options de reprise après sinistre et réduit les risques de perte de données précieuses.

Stockage Microsoft Azure

La plate-forme cloud de Microsoft, Azure, dispose d'options de stockage avec sa propre interface de ligne de commande, des informations peuvent être trouvées ici.

az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup

Tous les autres services de stockage cloud modernes devraient proposer des outils similaires pour copier les sauvegardes sur leurs serveurs cloud, consultez leur documentation pour plus de détails.

Sauvegardes de secours

Parfois, les sauvegardes elles-mêmes peuvent être extrêmement volumineuses même si elles sont compressées, et le téléchargement d'une sauvegarde quotidienne ou hebdomadaire sur un service cloud peut être hors de question en raison des vitesses de bande passante et/ou des coûts. Il est donc beaucoup plus difficile d'obtenir une sauvegarde dans le cloud pour la conserver.

Une façon d'y parvenir est d'avoir un système de secours à chaud ou à chaud exécuté dans une machine virtuelle basée sur le cloud, telle qu'une instance EC2 d'Amazon, où il s'agit d'une copie exacte de la base de données principale principale et des seules données envoyées à l'instance cloud. est tout changement, plutôt qu'une autre copie de l'ensemble de la base de données. Cela nécessiterait de transférer toute la base de données en une seule fois, mais après cela, seules les modifications doivent être transférées.

Mais un serveur de secours est-il en fait une sauvegarde ? Si la base de données principale tombe en panne, la veille peut être transformée en maître et les applications redirigées vers elle, cependant, si l'objectif est d'avoir des sauvegardes à un certain moment au cours de la semaine / des derniers mois, cela ne fonctionnera pas.

Pour résoudre ce problème, plusieurs choses peuvent être faites. La veille elle-même peut être forcée d'avoir un délai, n'ingérant des données qu'une fois qu'elles ont un jour par exemple. Une autre consiste à créer des sauvegardes de l'une des manières traditionnelles (pg_dump, copie du répertoire de données) sur le cloud de secours, ce qui signifie que ces sauvegardes n'auront pas besoin d'être transférées sur le réseau puisqu'elles sont créées sur la machine cloud elle-même. Les transferts intra-réseau sont généralement plus rapides et moins chers.

Sauvegardes ClusterControl et le cloud

Plusieursnines a créé ClusterControl, un système de gestion de base de données qui aide à gérer de nombreuses bases de données différentes, y compris PostgreSQL. C'est une boîte à outils ultime pour tout administrateur de base de données ou système pour avoir un contrôle et une visibilité complets de leurs bases de données, et comprend des fonctionnalités de sauvegarde très pratiques.

Avec ClusterControl, les sauvegardes des bases de données PostgreSQL peuvent être facilement gérées, planifiées et configurées pour copier automatiquement les sauvegardes effectuées sur les services de « stockage en nuage », notamment Amazon S3, Microsoft Azure et Google Cloud. Cela évite d'avoir à créer des scripts d'outils personnalisés pour télécharger des sauvegardes dans le cloud, et offre une interface utilisateur agréable pour les sauvegardes en général.

La sauvegarde de nos bases de données devrait toujours avoir lieu, et les stocker dans des deuxième, troisième et quatrième emplacements est une très bonne pratique courante. L'ajout d'une option cloud augmente les options de reprise après sinistre et ajoute une autre couche de stabilité back-end pour une entreprise, où dans de nombreux cas, si la base de données disparaît, l'entreprise disparaît. Explorer les options de sauvegarde dans le cloud aujourd'hui peut éliminer le désastre demain.