2009-11-23 6 views
1

J'ai un service Web Java soutenu par MySQL + EC2 + EBS. Pour l'intégrité des données j'ai regardé dans DRBD, le groupe de MySQL etc. mais je me demande s'il n'y a pas une solution plus simple. Je n'ai pas besoin de haute disponibilité (peut gérer les temps d'arrêt)Clustering maison bon marché et joyeux avec MySQL + EC2?

Il y a seulement quelques opérations dont les données que je dois préserver - créer un compte, changer le mot de passe, ticket d'achat. La majorité des données que je peux me permettre de récupérer à partir d'une sauvegarde périmée. Ce que je pense est que je pourrais diriger les commandes INSERT/UPDATE sélectionnées vers le stockage (S3, SimpleDB par exemple) et quand cela est nécessaire (quand le db explose) rejouer ces commandes depuis le point de la dernière sauvegarde. Et ne serait-il pas intéressant si cette fonctionnalité était implémentée dans le pilote JDBC lui-même.

Est-ce trop bête pour fonctionner, ou est-ce qu'il me manque une autre solution évidente et robuste?

Répondre

1

Avez-vous envisagé de déplacer votre MySQL dans Amazon Web Services? Vous pouvez utiliser Amazon Relational Database Service (RDS). Voir aussi MySQL Enterprise Support.

+0

Oui, j'ai regardé @ RDS, mais même là les sauvegardes (instantanés) sont jusqu'à 5 minutes périmées. J'aurais besoin d'une autre méthode pour préserver les tables critiques qui ne peuvent pas être périmées. – sehugg

+1

Le support d'entreprise a "Réplication MySQL pour la réplication de base de données maître/esclave, le basculement et la sauvegarde". L'esclave devrait être en mesure de prendre le relais sans perte de données, bien qu'il puisse avoir un certain retard * de réplication à la fin du traitement des mises à jour du maître désormais mort. Il vaut probablement mieux utiliser les fonctionnalités standard de MYSQL au lieu de rouler les vôtres. –

0

Vous toujours avoir une fenêtre où la perte totale d'un serveur et le stockage de fichiers associés entraînera une certaine quantité de données perdues. Lorsque j'ai exécuté une solution SaaS modestement occupée dans AWS, un maître MySQL fonctionnait sur une grande instance et un esclave MySQL s'exécutait sur une petite instance dans une zone de disponibilité différente. Le délai de réplication ne dépassait généralement pas 2 secondes, mais une augmentation du trafic pouvait prendre jusqu'à une minute ou deux.

Si vous ne pouvez pas vous permettre de perdre 5 minutes de données, je suggère d'exécuter une configuration Maître/Esclave plutôt que de lancer votre propre mécanisme de récupération. Si vous lancez le vôtre, assurez-vous que les sauvegardes "périmées" et les données critiques journalisées/enregistrées se trouvent dans une zone de disponibilité différente. AWS a déjà perdu des zones entières.