IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Digital Ocean supprime accidentellement sa base de données de production
Et parvient à la restaurer, avez-vous déjà été confronté à un tel accident ?

Le , par Olivier Famien

5PARTAGES

13  0 
Digital Ocean est une entreprise offrant des services de cloud computing. En 2015, elle a été classée numéro 2 par Netcraft (entreprise britannique qui suit les technologies utilisées sur la toile) après Amazon, car elle aurait hébergé plus de 163 ;000 sites web contre plus de 300 ;000 pour Amazon. Elle est soutenue par des investisseurs de renom et offre des machines virtuelles uniquement équipées de disques durs SSD afin de se démarquer de la concurrence.

Le 5 avril dernier, l’accès à la plateforme cloud de Dital Ocean a été fermé aux clients de l’entreprise. En cause, un ingénieur de l’entreprise a accidentellement supprimé la base de données de l’environnement de production. Selon le rapport de l’entreprise, cela est survenu à cause d’une erreur de configuration effectuée par l’ingénieur en utilisant ses identifiants de l’environnement de production. Se croyant donc dans un autre environnement, l’ingénieur a lancé des tests automatisés qui ont eu pour effet de supprimer la base de données de production.

En l’espace de trois minutes, Digital Ocean a commencé à recevoir des alertes de ses clients lui signifiant qu’aucun Droplet (serveur virtuel) supplémentaire ne pouvait être créé. Vu l’urgence du problème, Ocean Digital a pris la décision, après avoir constaté à 10 h 24 (heure de Paris) que sa base de données primaire avait été supprimée, de procéder à la récupération des données à partir des répliques de bases de données disponibles. L’opération de récupération a commencé à 16 h 34 pour s’achever à 19 h 31, heure de Paris. À cela, il a fallu ajouter environ 50 minutes pour remettre en route tous les systèmes dans la mesure où l’API et le panneau de configuration de Digital Ocean étaient complètement indisponibles. Les clients de Digital Ocean ont donc dû patienter pendant 4 h 56 min pour pouvoir à nouveau faire fonctionner leurs services sur la plateforme cloud de l’entreprise.

Consciente que de nombreuses entreprises ne peuvent se permettre une indisponibilité de leurs services pendant un tel laps de temps, Ocean Digital a tenu à présenter ses excuses tout en prenant sur elle l’entière responsabilité de l’accident qui est survenu. Par ailleurs, pour éviter qu’un tel accident ne se reproduise, l’entreprise entend réduire l’accès au système primaire et améliorera le système de récupération des données afin de réduire drastiquement le temps de récupération en cas d’occurrence d’un évènement similaire.

À travers l’accident qui a eu lieu, l’on réalise combien de fois les erreurs humaines peuvent mettre à mal les activités d’une entreprise tout en mettant le fautif dans de sérieux problèmes. À la fin du mois de janvier dernier, GitLab, la plateforme de gestion des développements collaboratifs a connu un incident similaire où un administrateur a supprimé plus de 300 Go de données de production. Cela a coûté à GitLab plusieurs heures d’indisponibilité pendant lesquelles les développeurs ne pouvaient pas avoir accès à leur code. GitLab est parvenue à restaurer les données supprimées, mais 6 heures de données n’ont pas pu être récupérées, ce qui a probablement lourdement impacté certains développeurs.

Bien que ces accidents puissent paraître étonnants à première vue, certains développeurs expliquent avoir déjà vécu de tels incidents dans leur entreprise. Un développeur explique par exemple qu’un administrateur dans son entreprise a exécuté un script pour supprimer les données inutiles de la base de données. Malheureusement, après avoir achevé son travail, il a oublié de revenir à la configuration initiale et a exécuté des tests automatisés. Conséquence, il a supprimé la base de données d’intégration de son entreprise. Heureusement pour lui, il n’était pas dans l’environnement de production.

Un autre explique qu’un développeur qui croyait travailler sur une base de données Hadoop (HBase) de développement a exécuté une commande HDFS MV afin de supprimer sa base de données. Malheureusement, il était déjà trop tard quand il a réalisé qu’il s’agissait de la base de données de production. Les activités de l’entreprise ont été à l’arrêt jusqu’à la restauration de la sauvegarde.

Comme on peut le noter par ces témoignages, les erreurs humaines entraînant la suppression de bases de données de production sont légion. Avez-vous déjà été dans une telle situation ;? Avez-vous déjà supprimé la base de données de l’environnement de production de votre entreprise accidentellement ;? Ou avez-vous connu une personne dans une telle situation ;? Que conseillez-vous pour éviter cela ?

Source : Blog Digital Ocean

Et vous ?

Que pensez-vous de ces erreurs humaines occasionnant la suppression des données de production ?

Avez-vous déjà été confronté à une telle situation ?

Quels conseils préconisez-vous pour éviter ce type d’accidents ?

Voir aussi

Un administrateur système de GitLab supprime accidentellement 310 Go de données de production et rend le site indisponible depuis plusieurs heures
GitLab parvient à restaurer certaines données supprimées accidentellement et se remet en ligne, mais 6 heures de données n'ont pas pu être récupérées

Forum Actualités, Wiki Developpez.com, Débats Best of, FAQ Developpez.com

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Gecko
Membre éprouvé https://www.developpez.com
Le 11/04/2017 à 9:47
Étant donné que la majorité des devs utilisent leur terminal je pige pas que les mecs aient jamais pensés à colorer la prod en rouge.

D'ailleurs tous les outils devraient avoir une différence notable selon l'environnement.
8  0 
Avatar de tanaka59
Inactif https://www.developpez.com
Le 11/04/2017 à 10:00
Comment perdre la base de données client :

- prenez un serveur qui tourne depuis plusieurs années
- ne purgez jamais les logs
- faites saturer la base
- votre programme n'arrive pas à se lancer faute de place pour les logs
- perdez 6 années d'historiques et un peu plus de 180 Go d'information

Vécu , testé et approuvé lors d'une migration de serveur
4  0 
Avatar de _FLX_
Membre du Club https://www.developpez.com
Le 11/04/2017 à 12:24
2) Rien de sorcier : La Sauvegarde
Dans toutes ces affaires il y avait bien une sauvegarde, le problème c'est les 5h de récupération pendant lesquelles les clients sont bloqués...
4  0 
Avatar de damthemad
Membre actif https://www.developpez.com
Le 13/04/2017 à 12:24
ça m'est arrivé. En charge d'une application centralisée qui sert plusieurs centaines d'agence en France et qui est indispensable au business (réseau d'agences d'interim, application minitel pour contrôle par la direction du crédit avant tout signature de contrat de mission)

Un fs était plein, je devais faire du ménage.
Le système était monté de telle façon que je devais travailler en root
je fais une série de ls récursif puis je vois ce que je peux supprimer et je passe à la suppression
je me rappelle plus exactement mais j'avais tapé le rm et le téléphone a sonné
j'ai répondu
une fois la conversation terminée, je reviens sur mon terminal et comme je savais plus où j'en étais je tape un ls -R * ou un truc du genre sans voir que la commande rm était déjà là.... je valide.
du coup j'ai fait une suppression de fichier récursive sans le vouloir et supprimé une partie de la base de données (des extends de la base se baladaient sur un peu tous les fs).
j'ai failli ne pas le voir en plus. le message d'errreur de suppression de la commande rm ls m'a alerté et j'ai lu mon écran avec attention et vu qu'un rm -r était passé (un truc du genre, c'était il y a un moment sur un unix 386).
bon ceci dis, le téléphone a commencé à sonner dans les minutes qui ont suivies.... heureusement, on était à 15 minutes de la fermeture des agences.

j'ai eu de la chance, les procédures d'exploitation étaient très bien faites avec une sauvegarde chaque nuit et un log activé à neuf chaque matin qui enregistrait toutes les opérations de la journée. J'ai alerté l'exploitation (hé oui, j'étais aux études et obligé de travailler en root et de faire un certain nombre de travaux courants, pas ITIL tout ça), les accès réseau ont été coupés, la sauvegarde remontée et le redo log passé ce qui a permis de retrouver la base au complet sans aucune perte de données.

Mais, ça a duré des heures, deux personnes ont passé la nuit sur place (ils m'ont béni), et coup de chance le problème est survenu en fin de journée. Quant à moi j'ai transpiré ;-)
4  0 
Avatar de Grogro
Membre extrêmement actif https://www.developpez.com
Le 11/04/2017 à 17:13
Qu'un développeur ait des droits d'accès complets en production, jusqu'à pouvoir faire un drop database, il n'y a que moi que ça choque ?
3  0 
Avatar de _FLX_
Membre du Club https://www.developpez.com
Le 12/04/2017 à 17:40
Citation Envoyé par Grogro Voir le message
Qu'un développeur ait des droits d'accès complets en production, jusqu'à pouvoir faire un drop database, il n'y a que moi que ça choque ?
Euh, pour moi c'est normal. Qui d'autre qu'un développeur ?
3  0 
Avatar de SQLpro
Rédacteur https://www.developpez.com
Le 14/04/2017 à 11:26
Citation Envoyé par tchatm Voir le message
Il est toujours possible d'avoir un spare master avec une réplication décalée pour ce genre de cas. Ça se fait partout depuis un moment :
https://dev.mysql.com/doc/refman/5.6...n-delayed.html
https://docs.mongodb.com/manual/tuto...ca-set-member/
https://www.postgresql.org/docs/curr...plication.html
https://docs.oracle.com/database/121...ter.htm#i46930

Ça fait une perte de données moindre et on peut plus rapidement basculer sur le spare que lorsqu'on doit réimporter toute la DB, recalculer les indexs, etc.
Tu peut rajouter SQL Server avec AlwaysOn qui permet jusqu'à 8 répliques de la base dont 2 synchrone et 6 asynchrones.
En sus et dans ce cas, le DROP DATABASE, n'est jamais propagé aux répliques et provoque une erreur sur la base source... Pour supprimer une base enrôlée dans un groupe de disponibilité AlwaysOn, il faut commencer par supprimer le groupe de disponibilité, c'est à dire l'ensemble des répliques.... Ceci pour des raions évidentes de sécurité !

Donc une telle erreur est impossible dans l'environnement SQL Server si la haute disponibilité est mise en œuvre ! Et cela date de 2005... donc 12 ans déjà !

A +
3  0 
Avatar de Alanis
Membre habitué https://www.developpez.com
Le 11/04/2017 à 12:44
Citation Envoyé par Gecko Voir le message
Étant donné que la majorité des devs utilisent leur terminal je pige pas que les mecs aient jamais pensés à colorer la prod en rouge.

D'ailleurs tous les outils devraient avoir une différence notable selon l'environnement.
Indeed, probablement qu'au début personne ne s'en est soucié et qu'après c'est tombé dans l'oubli. Tant que personne ne fait de bourde, la demande ne vas pas remonter. Dommage pour eux que la première (?) bourde pête toute la prod
2  0 
Avatar de Grogro
Membre extrêmement actif https://www.developpez.com
Le 05/09/2017 à 14:38
Citation Envoyé par iberserk Voir le message
Cloisonnement des environnement, comment la production peut-elle etre accessible à des poste de DEV?

Comment les serveur de recettes peuvent ne serait-ce que pinger la prod?
Parce que tout le monde n'a pas les moyens ni les compétences pour mettre en place 3 ou 4 environnements de travail cloisonnés.
2  0 
Avatar de arond
Membre expérimenté https://www.developpez.com
Le 11/04/2017 à 9:18
A première vue les conseils sont :

1) Se serait peu être pas bête de coder un pop-up quand on se connecte à la BDD de production histoire que l'utilisateur humain se rende compte de son erreur ?
(je dis sa puisque ce qu'on cherche à éviter c'est les erreurs humaines).

2) Rien de sorcier : La Sauvegarde
1  0