2009-11-09 6 views
0

Je suis sur le point de dire "laisse aller vivre" du système d'un client sur lequel je travaille depuis quelques mois, essentiellement quelques services autonomes, y compris un site web public , un site Web intranet, un exportateur horaire d'une base de données OLTP héritée basée sur des drapeaux/déclencheurs modifiés etc. et quelques autres services qui composent le système, avec chacun leur propre base de données spécialisée etc., communiquant entre eux par messages (NServiceBus) . Quand j'ai commencé, j'ai essayé de garder une réplication locale de tout mais cela s'est avéré de plus en plus difficile et à la réflexion probablement un point de friction majeur de ces dernières semaines, je tiens à me tenir régulièrement au courant. en croissance et provoquant des centaines d'événements par jour. Avoir une haute latence & médiocre bande passante (entre moi et le site du client, je suis en Asie du Sud-Est où la bande passante est généralement merde de toute façon) est aussi un problème pour RDP, outils SQL, chaînes de connexion à distance etc. ils sont présents lors de feedback/intégration/QA est également difficile car mes données ne reflètent pas l'état actuel de la DB du client (le personnel des clients a travaillé et fait évoluer les données) et signifie une nouvelle pause, un café et une longue synchronisation . Il serait idéal de le faire localement puis de le déployer à la fin, mais je dois livrer des pièces de façon incrémentielle (et obtenir certaines vérifications), et certaines parties sont même utilisées (mais pas critiques). autour de quick, et étant une petite entreprise, rétroaction incrémentale, il permet de débusquer certaines des exigences les plus vagues le long du chemin (maudit-moi).Obtenir la base de données de production pour travailler localement

Je pensais qu'il serait bien d'avoir deux fois par jour la synchronisation entre les environnements (leurs DB à exploiter), j'ai un peu de contrôle de conception sur tout sauf la base de données SQL Server.

Quelles sont les meilleures options SO utilisateurs?

Je pensais à installer une machine virtuelle légère Windows 2003 sur ma boîte de dev. Et dans cette installation, la même configuration des sites clients (mais pas répartis sur plusieurs serveurs évidemment). Et puis pour la synchronisation des bases de données je pensais à la réplication SQL Server? ou des scripts batch? Ou y a-t-il de meilleurs outils - des compressions rapides et efficaces? Je ne veux pas que mes modifications retournent à la production (j'ai une procédure de déploiement séparée), je veux juste (je pense que je veux ... dites-moi si c'est une meilleure idée) mes bases de données à rafraîchir chaque nuit ou deux fois par jour (peut-être pendant que je suis à la bande passante du déjeuner).

Comment tout le monde aborde-t-il cela?

Répondre

1

Je recommande deux façons de le faire:

  • instantané réplication
  • Sauvegarde du journal des transactions et manuellement (ou batch) appliquer

réplication de capture instantanée peut être difficile d'obtenir fonctionne, mais il est possible même dans des situations hors ligne telles que la prise physique d'instantanés à un autre endroit.

La méthode du journal des transactions peut être utilisée dans le cadre de vos procédures de sauvegarde standard. Par exemple: Une sauvegarde complète deux fois par semaine avec des sauvegardes de journaux de transactions plus régulièrement. N'oubliez pas que la meilleure pratique consiste à nettoyer les données avant de les utiliser dans un environnement de test. À tout le moins, cela devrait changer toutes les données personnelles, en particulier les adresses e-mail, mots de passe et toute autre méthode qui pourrait entraîner un processus automatisé de prendre contact avec l'utilisateur dans votre base de données.

+0

La réplication d'instantanés écrase-t-elle automatiquement les modifications locales que j'effectue? Dites Im en train d'éditer un client un jour, il fait un instantané pendant la nuit, le matin tout est frais, idéalement c'est-à-dire mes changements sont perdus (et certainement pas renvoyés à la production). La réplication d'instantanés gère les modifications de schéma automatiquement? –

+0

Les modifications de schéma peuvent être un réel problème de réplication. Votre meilleur pari pourrait être d'avoir une copie de la base de données primaire, puis créer un instantané de cette copie pour le test. Vous pouvez ensuite appliquer les journaux de transactions 'live' à la copie, re-snapshot la copie et apporter des modifications à l'instantané. D'autres options que vous pouvez regarder sont de faire une copie de la base de données sur l'environnement en direct, le monter sur le serveur live db, supprimer les lignes et anonymiser les données pour réduire la DB, puis travailler avec. – John

Questions connexes