Autor Thema: Ermitteln wann eine Replizierung beendet ist  (Gelesen 2315 mal)

Offline NDB

  • Frischling
  • *
  • Beiträge: 36
  • Geschlecht: Männlich
Ermitteln wann eine Replizierung beendet ist
« am: 12.03.12 - 14:12:55 »
Hallo,
ich versuche gerade eine Anfoderung siehe >http://atnotes.de/index.php/topic,42435.20.html"< zur Weiterentwicklung des ACL-Viewer umzusetzen und stecke hier fest. Einfach ausgedrückt möchte ich diverse Aktionen ausführen wenn die Replizierung von ein oder mehreren Datenbankrepliken abgeschlossen ist.

Folgendes Szenario:
Der ACL-Viewer ist auf mehreren Domino-Servern auf verschiedenen Geschäftsstellen als Replik abgelegt. Der Agent wird dann aus Performancegründen so eingestellt dass er auf jedem "beliebigen" Server ausgeführt wird und quasi jeder Server nur sich selbst scannt. Der Scanvorgang erzeugt diverse neue Dokumente auf den verschiedenen Datenbankrepliken. Diese neu erzeugten Dokumente werden dann auf die anderen Repliken per Replizier Task geschoben. Erst wenn der letzte Server seinen Scan beendet hat und auch wirklich alle Dokumente von jeder Replik auf den anderen Servern vollständig angekommen sind,  kann ich weitere Aktionen ausführen (Benutzeranalyse, Fehlende Repliken ermitteln, Unterschiedliche Anzahl von Dokumenten auf den Repliken ermitteln).

Da die Anzahl an Dokumenten im ACL-Viewer pro Replik abweichen kann, fällt die Abfrage nach einer übereinstimmenden Anzahl an Dokumenten pro Replik aus.
Eine Möglichkeit wäre diese Abfragen für dieses Szenario manuell auszuführen. Eine Automatik wäre aber komfortabler.

Hat jemand einen Lösungsansatz für mich?
« Letzte Änderung: 12.03.12 - 14:16:42 von NDB »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Ermitteln wann eine Replizierung beendet ist
« Antwort #1 am: 12.03.12 - 14:35:13 »
Und wenn Deine Agents die Replikation selbst ausführen und an "die Zentrale" melden, dass sie durch sind?

Bernhard

Offline NDB

  • Frischling
  • *
  • Beiträge: 36
  • Geschlecht: Männlich
Re: Ermitteln wann eine Replizierung beendet ist
« Antwort #2 am: 12.03.12 - 15:01:04 »
Hallo Bernhard,

dann müsste man quasi nur:
- automatische Replizierung der Repliken deaktivieren
- Definieren eines Masterserver der die verbleibenden Abfragen durchführt und
- festlegen wann und wie das Ende der eigenen "Replizierung" aussieht

Guter Vorschlag, danke.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Ermitteln wann eine Replizierung beendet ist
« Antwort #3 am: 12.03.12 - 15:37:42 »
Eine andere Möglichkeit wäre, dass man mit "Job- Dokumenten" arbeitet... Ein Master- Agent, der nur in der zentralen Master- Replik läuft erstellt "Job- Dokumente" für jeden Server mit Status "tu mal...".
Diese Job- Dokumente replizieren sich zu den anderen Datenbanken, die Agenten dort laufen regelmässig, sehen das Dokument, tun ihre Arbeit, und wenn sie fertig sind sagen sie "habe fertig".
Wenn der Master- Agent nun sieht, dass alle Job- Dokumente auf "Habe fertig" stehen, dann weiss er, dass alles durchgelaufen ist (inklusive Replikation, weil das Job- Dokument immer das ist, was als letztes geschrieben wird)...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Ermitteln wann eine Replizierung beendet ist
« Antwort #4 am: 12.03.12 - 16:06:44 »
...inklusive Replikation, weil das Job- Dokument immer das ist, was als letztes geschrieben wird...

Hallo Torsten,

das kann doch nur sichergestellt werden, indem der jeweilige Nicht-Master-Server den Agent ausführt, mit dem Master repliziert, das Job-Dokument aktualisiert und noch einmal repliziert. Oder hält sich der "Standard"-Replikator an irgendwelche Reihenfolgen, in denen die Dokumente gespeichert wurden?
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Ermitteln wann eine Replizierung beendet ist
« Antwort #5 am: 12.03.12 - 16:35:33 »
Zweimalige Replikation ist doch nicht erforderlich: Sie "Sub-Agents" tun ihren Job wie geheissen und setzen das Job-Dokument auf "Done" und replizieren *dann*.

Der "Master-Agent" muss zu einem festgelegten Zeitpunkt die Job-Dokumente natürlich wieder auf "tu mal" setzen und seinerseits replizieren.

Bernhard

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Ermitteln wann eine Replizierung beendet ist
« Antwort #6 am: 12.03.12 - 17:14:10 »
Der Replikator seit R6 hält sich (in dem Fall "leider") nicht mehr an die Reihenfolge, in welcher die Dokumente gespeichert wurden, sondern sortiert die Dokumente der Grösse nach (Grösste zuletzt, Stichwort Streaming Replication). Insofern hast Du natürlich recht, dass -wenn Du ein 100% sicheres System willst- Du zweimal replizieren musst: Erst replizieren, dann Dokument auf "Done" setzen und dann nochmal replizieren.

nur: Agenten sind ja keine Echtzeit- Systeme. Wenn Du nicht tausende Dokumente replizieren musst, dann ist die Wahrscheinlichkeit, dass der Agent genau in dem Moment losläuft, wo die Replikation das "Done" - Dokument repliziert hat, aber bevor alle anderen Dokumente repliziert wurden (und das muss dann auch noch der letzte Server in der Kette sein, der seine Ergebnisse reportet) doch sehr gering...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline NDB

  • Frischling
  • *
  • Beiträge: 36
  • Geschlecht: Männlich
Re: Ermitteln wann eine Replizierung beendet ist
« Antwort #7 am: 12.03.12 - 18:32:28 »
Wenn ich weiter drübernachdenke, reicht ein normaler Kopiervorgang der neuen Dokumente in meinem Fall auch aus, anstelle einer Replizierung. Der Masterserver muss eigentlich nur Dokumente aller Memberserver empfangen können und keine senden.

Ablauf:
Jeder Memberserver sammelt zunächst seine Informationen für sich. Anschließend kopiert er alle neuen Dokumente in die Datenbank des Masterserver. Sobald der Kopiervorgang abgeschlossen ist, wird irgendwo ein Flag gesetzt was z.B. lautet "FERTIG".

Der Masterserver schaut dann irgendwann ob jeder Memberserver auch auf "FERTIG" steht und vollzieht dann seine Anschlußprüfungen.
« Letzte Änderung: 12.03.12 - 18:40:57 von NDB »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Ermitteln wann eine Replizierung beendet ist
« Antwort #8 am: 12.03.12 - 18:47:20 »
Wenn Du kopierst, dann dürfen das aber keine Repliken mehr sein, weil sonst wandern die ja wieder zurück.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz