Je recherche des conseils ou des bonnes pratiques pour sauvegarder le compartiment S3.
Le but de la sauvegarde des données depuis S3 est d'éviter la perte de données pour les raisons suivantes:
- Problème S3
- problème où je supprime accidentellement ces données de S3
Après quelques recherches, je vois les options suivantes:
- Utilisez la gestion des versions http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html
- Copier d'un compartiment S3 vers un autre à l'aide du kit AWS SDK
- Sauvegarde sur Amazon Glacier http://aws.amazon.com/en/glacier/
- Sauvegarde sur le serveur de production, lui-même sauvegardé
Quelle option dois-je choisir et dans quelle mesure serait-il sûr de stocker des données uniquement sur S3? Vous voulez entendre vos opinions.
Quelques liens utiles:
amazon-web-services
amazon-s3
backup
amazon-glacier
Sergey Alekseev
la source
la source
Réponses:
Synchronisez régulièrement votre compartiment S3 avec un serveur EC2
Cela peut être facilement réalisé en utilisant plusieurs utilitaires de ligne de commande qui permettent de synchroniser un compartiment S3 distant avec le système de fichiers local.
s3cmd
Au début,
s3cmd
semblait extrêmement prometteur. Cependant, après l'avoir essayé sur mon énorme compartiment S3 - il n'a pas réussi à évoluer, erreur avec unSegmentation fault
. Cela fonctionnait bien sur de petits seaux, cependant. Comme cela ne fonctionnait pas pour d'énormes seaux, je me suis mis à trouver une alternative.s4cmd
La nouvelle alternative multithread à
s3cmd
. Cela avait l'air encore plus prometteur, cependant, j'ai remarqué qu'il continuait à télécharger des fichiers qui étaient déjà présents sur le système de fichiers local. Ce n'est pas le genre de comportement que j'attendais de la commande sync. Il devrait vérifier si le fichier distant existe déjà localement (la vérification du hachage / taille du fichier serait bien) et l'ignorer lors de la prochaine synchronisation sur le même répertoire cible. J'ai ouvert un numéro ( bloomreach / s4cmd / # 46 ) pour signaler ce comportement étrange. En attendant, je me suis mis à trouver une autre alternative.awscli
Et puis j'ai trouvé
awscli
. Il s'agit de l'interface de ligne de commande officielle d'Amazon pour interagir avec leurs différents services cloud, S3 inclus.Il fournit une commande de synchronisation utile qui télécharge rapidement et facilement les fichiers de compartiment distant sur votre système de fichiers local .
Avantages:
Suppression accidentelle
Idéalement, le
sync
commande ne supprimera pas les fichiers du dossier de destination (système de fichiers local) s'ils sont absents de la source (compartiment S3), et vice-versa. C'est parfait pour sauvegarder S3 - au cas où des fichiers seraient supprimés du compartiment, la resynchronisation ne les supprimera pas localement. Et si vous supprimez un fichier local, il ne sera pas non plus supprimé du bucket source.Configurer awscli sur Ubuntu 14.04 LTS
Commençons par installer
awscli
. Il existe plusieurs façons de le faire, cependant, j'ai trouvé qu'il était plus simple de l'installer viaapt-get
.Configuration
Ensuite, nous devons configurer
awscli
avec notre ID de clé d'accès et notre clé secrète, que vous devez obtenir auprès d' IAM , en créant un utilisateur et en attachant la stratégie AmazonS3ReadOnlyAccess . Cela vous empêchera également, vous ou toute personne ayant accès à ces informations d'identification, de supprimer vos fichiers S3. Assurez-vous de saisir votre région S3, par exempleus-east-1
.Préparation
Préparons le répertoire de sauvegarde S3 local, de préférence au format
/home/ubuntu/s3/{BUCKET_NAME}
. Assurez-vous de le remplacer{BUCKET_NAME}
par le nom réel de votre bucket.Synchronisation initiale
Allons-y et synchronisons le bucket pour la première fois avec la commande suivante:
En supposant que le compartiment existe, les informations d'identification AWS et la région sont correctes et le dossier de destination est valide,
awscli
commencera à télécharger le compartiment entier sur le système de fichiers local.En fonction de la taille du compartiment et de votre connexion Internet, cela peut prendre de quelques secondes à quelques heures. Lorsque cela est fait, nous allons mettre en place une tâche cron automatique pour maintenir la copie locale du bucket à jour.
Configurer un travail Cron
Allez-y et créez un
sync.sh
fichier dans/home/ubuntu/s3
:Copiez et collez le code suivant dans
sync.sh
:Assurez-vous de remplacer {BUCKET_NAME} par le nom de votre compartiment S3, deux fois tout au long du script.
Ensuite, assurez-vous que
chmod
le script peut être exécuté parcrontab
.Essayons d'exécuter le script pour nous assurer qu'il fonctionne réellement:
La sortie doit être similaire à ceci:
Ensuite, éditons l'utilisateur actuel
crontab
en exécutant la commande suivante:Si c'est votre première exécution
crontab -e
, vous devrez sélectionner un éditeur préféré. Je recommanderais de sélectionnernano
car c'est le plus facile à utiliser pour les débutants.Fréquence de synchronisation
Nous devons dire à
crontab
quelle fréquence exécuter notre script et où le script réside sur le système de fichiers local en écrivant une commande. Le format de cette commande est le suivant:La commande suivante se configure
crontab
pour exécuter lesync.sh
script toutes les heures (spécifié via les paramètres minute: 0 et hour: *) et pour qu'il redirige la sortie du script vers unsync.log
fichier dans notres3
répertoire:Vous devez ajouter cette ligne au bas du
crontab
fichier que vous modifiez. Ensuite, continuez et enregistrez le fichier sur le disque en appuyant sur Ctrl + W puis sur Entrée . Vous pouvez ensuite quitternano
en appuyant sur Ctrl + X .crontab
va maintenant exécuter la tâche de synchronisation toutes les heures.Tout est prêt! Votre compartiment S3 sera désormais automatiquement synchronisé avec votre serveur EC2 toutes les heures, et vous devriez être prêt à partir. Notez qu'avec le temps, à mesure que votre compartiment S3 s'agrandit, vous devrez peut-être augmenter la taille du volume EBS de votre serveur EC2 pour accueillir de nouveaux fichiers. Vous pouvez toujours augmenter la taille de votre volume EBS en suivant ce guide .
la source
awscli
supports synchronisent cela automatiquement dans laaws s3 sync
commande. Il semble que vous deviez peut-être implémenter cela manuellement.Compte tenu du lien associé, qui explique que S3 a une durabilité de 99,999999999%, je rejetterais votre préoccupation n ° 1. Sérieusement.
Maintenant, si # 2 est un cas d'utilisation valide et une réelle préoccupation pour vous, je m'en tiendrai certainement aux options # 1 ou # 3. Lequel d'entre eux? Cela dépend vraiment de quelques questions:
Amazon Glacier is optimized for data that is infrequently accessed and for which retrieval times of several hours are suitable.
C'est bon pour toi?À moins que votre utilisation de stockage ne soit vraiment énorme, je m'en tiendrais à la gestion des versions de seau. De cette façon, vous n'aurez pas besoin de code / flux de travail supplémentaire pour sauvegarder les données sur Glacier, sur d'autres seaux ou même sur tout autre serveur (ce qui est vraiment un mauvais choix à mon humble avis, oubliez-le).
la source
Vous pouvez sauvegarder vos données S3 en utilisant les méthodes suivantes
Planifiez le processus de sauvegarde à l'aide de la ligne de données AWS, cela peut être effectué de deux manières mentionnées ci-dessous:
une. Utilisation de copyActivity de datapipeline à l'aide de laquelle vous pouvez copier d'un compartiment s3 vers un autre compartiment s3.
b. Utilisation de ShellActivity de datapipeline et des commandes "S3distcp" pour faire la copie récursive des dossiers récursifs s3 d'un compartiment à un autre (en parallèle).
Utiliser la gestion des versions dans le compartiment S3 pour conserver différentes versions des données
Utilisez glacier pour sauvegarder vos données (utilisez-le lorsque vous n'avez pas besoin de restaurer rapidement la sauvegarde dans les seaux d'origine (il faut un certain temps pour récupérer les données de glacier car les données sont stockées au format compressé) ou lorsque vous souhaitez enregistrer un certain coût en évitant d'utiliser un autre compartiment s3 pour la sauvegarde), cette option peut facilement être définie à l'aide de la règle de cycle de vie sur le compartiment s3 à partir duquel vous souhaitez effectuer une sauvegarde.
L'option 1 peut vous donner plus de sécurité, par exemple au cas où vous supprimeriez accidentellement votre compartiment s3 d'origine et un autre avantage est que vous pouvez stocker votre sauvegarde dans des dossiers par date dans un autre compartiment s3, de cette façon, vous savez quelles données vous aviez à une date particulière et pouvez restaurer une sauvegarde de date spécifique. Tout dépend de votre cas d'utilisation.
la source
Que diriez-vous d'utiliser la fonctionnalité de réplication interrégionale facilement disponible sur les compartiments S3 eux-mêmes? Voici quelques articles utiles sur la fonctionnalité
la source
On pourrait penser qu'il y aurait maintenant un moyen plus simple de simplement conserver une sorte de sauvegarde incrémentielle sur une région diff.
Toutes les suggestions ci-dessus ne sont pas des solutions vraiment simples ou élégantes. Je ne considère pas vraiment le glacier comme une option car je pense que c'est plus une solution d'archivage qu'une solution de sauvegarde. Quand je pense à la sauvegarde, je pense à la récupération après sinistre d'un développeur junior supprimant récursivement un seau ou peut-être un exploit ou un bogue dans votre application qui supprime des éléments de s3.
Pour moi, la meilleure solution serait un script qui sauvegarde simplement un bucket dans une autre région, un quotidien et un hebdomadaire, de sorte que si quelque chose de terrible se produit, vous puissiez simplement changer de région. Je n'ai pas de configuration comme celle-ci, j'ai vérifié que je n'ai pas réussi à le faire car cela demanderait un peu d'effort pour le faire, c'est pourquoi j'aurais aimé qu'il y ait une solution de stock à utiliser.
la source
Bien que cette question ait été postée il y a quelque temps, j'ai pensé qu'il était important de mentionner la protection contre la suppression MFA avec les autres solutions. L'OP tente de résoudre la suppression accidentelle de données. L'authentification multifacteur (MFA) se manifeste dans deux scénarios différents ici -
Suppression définitive des versions d'objet: activez la suppression MFA sur le contrôle de version du compartiment.
Suppression accidentelle du compartiment lui-même - Configurez une stratégie de compartiment refusant la suppression sans authentification MFA.
Associez -le à la réplication et au contrôle de version interrégionaux pour réduire le risque de perte de données et améliorer les scénarios de récupération.
Voici un article de blog sur ce sujet avec plus de détails.
la source
Si, nous avons trop de données. Si vous avez déjà un bucket, la première fois La synchronisation prendra trop de temps, Dans mon cas, j'avais 400 Go. Cela a pris 3 heures la première fois. Je pense donc que nous pouvons faire de la réplique une bonne solution pour la sauvegarde de S3 Bucket.
la source