Question

J'ai déjà examiné certaines ressources et je souhaite simplement clarifier et obtenir un avis.

Tout d’abord, pour éviter totalement les problèmes, nous ne pourrions tout simplement pas utiliser les colonnes d’identité en tant que clés primaires, mais nous les avons générées nous-mêmes et nous nous contentons de reproduire ces valeurs dans les deux sens, en supposant qu’elles soient toujours uniques à tout moment de la création.

Pour les besoins de cette question, je parle de deux moyens de réplication ou plus pour résoudre les problèmes d’accès globaux. Nous avons des colonnes d’identité.

Nous sommes maintenant en train de configurer la réplication transactionnelle et les deux bases de données doivent se répliquer.

Si je comprends bien, vous attribuez une plage de valeurs de départ à chaque serveur de base de données et vous vous en servirez. Vous savez qu'il existe une cause unique que vous avez définie et qui ne se croisent pas. Cela signifie-t-il que lors de la réplication, ces valeurs sont insérées dans la colonne de départ?

donc si vous allouez les plages 1-10 et 11-20 à 2 serveurs une fois que chaque serveur a inséré 10 lignes, vous aurez des graines 1-20 dans les deux bases de données?

Était-ce utile?

La solution

Il existe l'option & PAS POUR LA RÉPLICATION " qui peut être appliqué aux colonnes d’identité (et aux déclencheurs et autres contraintes).

Dans votre exemple, server1 afficherait les graines 1 à 10 mais accepterait simplement les répliques 11 à 20.

Quelques façons de préparer vos graines:

Soit: définissez vos valeurs de départ / incréments avec NOT FOR REPLICATION comme ceci

  • Graine 1, incrément 2
  • Graine 2, incrément 2
  • Graine -1, incrément -2
  • Graine -2, incrément -2
  • Semence 1000000001, incrément de 2
  • Semence 1000000002, incrément de 2
  • Graine -1000000002, incrément -2 -
  • Graine -1000000001, incrément -2

Cela vous donne 500 000 000 par serveur pour 8 serveurs

Ou: Ajoutez une deuxième colonne appelée ServerID pour donner les clés composites, utilisez NOT FOR REPLICATION pour la colonne ID

Cela s’étend jusqu’à 256 serveurs pour tinyint avec 2 ^ 32 lignes par serveur

Dans tous les cas, ça marche ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top