Je m'occupe des opérations pour un service de collaboration en ligne relativement important. Nous avons près de 200 Go de données relationnelles dans des bases de données MySQL, et environ 20 To de contenu généré par les utilisateurs.
Nous possédons notre propre matériel de serveur, et nous avons donc quelques serveurs de stockage de fichiers pour le contenu généré par les utilisateurs. Ces serveurs exécutent MogileFS, qui est configuré pour répliquer 3 copies de chaque fichier à travers le cluster. Puisque nous avons des copies sur 3 serveurs différents, nous n'utilisons pas de RAID sur les serveurs de fichiers. Le stockage de 3 copies signifie que nous pouvons faire face à une panne de disque ou à l'arrêt d'un serveur pour la maintenance et que nous avons toujours 2 copies de chaque fichier.
Toutes les heures, nous effectuons des sauvegardes hors site avec un script maison. Le script recherche les nouveaux fichiers et effectue une sauvegarde sur un serveur hors site. Ce script conserve sa propre base de données indiquant exactement quels fichiers ont déjà été sauvegardés. (Nous pourrions simplement utiliser l'horodatage pour déterminer les fichiers à copier, mais cela ne nous permettrait pas de "recharger" les sauvegardes en cas de besoin. Nous pourrions aussi simplement vérifier sur le serveur distant la présence de chaque fichier, mais avec 150 millions de fichiers dans MogileFS, cela prendrait une éternité).
Nos sauvegardes à distance sont cryptées à l'aide d'une clé symétrique. C'est en fait assez élégant. Nous avons une seule clé principale de sauvegarde. La clé privée est stockée dans un coffre-fort, et la clé publique est disponible sur tous nos serveurs de fichiers. Les sauvegardes sont cryptées à l'aide de la clé publique maître. Cela signifie qu'elles peuvent toutes être décryptées avec la clé privée maître, mais même si nos serveurs sont tous compromis, l'attaquant ne pourra pas accéder aux sauvegardes cryptées.
Nous utilisons Backup Manager pour gérer les sauvegardes de nos bases de données MySQL et d'autres sauvegardes diverses du serveur. Backup Manager est génial : il gère tout automatiquement, comme le cryptage des sauvegardes et leur envoi hors site. Backup Manager effectue des sauvegardes incrémentielles des répertoires spécifiés sur les serveurs, et exécute mysqldump pour nos bases de données.
Vous pouvez même faire passer d'autres outils par Backup Manager -- par exemple, je teste Percona XtraBackup avec Backup Manager pour des sauvegardes MySQL plus rapides. (Techniquement, XtraBackup n'accélère pas les sauvegardes, il accélère les restaurations. Sans XtraBackup, il fallait presque une semaine pour restaurer notre base de données MogileFS de 40 Go. Il a été utile de régler MySQL, mais même dans ce cas, les performances de restauration n'étaient pas suffisantes. Je viens de commencer à tester XtraBackup, qui pourrait nous permettre de restaurer la base de données en quelques heures, et non en quelques jours).
Je recommande fortement l'utilisation de Backup Manager - il est ridiculement rapide à mettre en place, et gère tous les mécanismes d'établissement de la sauvegarde à distance. J'ai même commencé à l'utiliser sur deux de mes serveurs personnels, en stockant des sauvegardes cryptées sur Amazon S3. Jusqu'à ce que votre ensemble de données soit très important, Backup Manager devrait être capable de tout gérer pour vous, y compris la configuration du serveur, le code source et les données utilisateur. C'est automatique, crypté et très simple à utiliser.
1 votes
On dirait une question pour ServerFault.com ! Où est le code ?