Autor Thema: Selektive Repliken anlegen  (Gelesen 10063 mal)

Offline mastertom

  • Senior Mitglied
  • ****
  • Beiträge: 350
  • Geschlecht: Männlich
  • Yet another Domino-Day!
Selektive Repliken anlegen
« am: 29.12.10 - 19:39:31 »
Hallo zusammen,

ich suche ein Script, dass es mir ermöglicht, von Server X die Datenbank Y als Replik auf Server Z anzulegen.

Idealer Weise wird dann auch gleich eine Replikationsformel hinterlegt, die z.B. nur 90 Tage alte Mails repliziert.

Ist das überhaupt mit Lotus Script / oder ggf. mit Formelsprache umsetzbar oder muß ich hier tatsächlich "Hand" anlegen?

Bin gespannt auf Eure Ansätze

Gruß

Tom

-----------------------------------------------------

Einen Haufen User, die einem von der Arbeit abhalten wollen :)

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Selektive Repliken anlegen
« Antwort #1 am: 30.12.10 - 00:45:27 »
Es gibt notesDatabase.createReplica. In Verbindung mit dem NotesDbDirectory sollte zumindest das Anlegen kein Problem sein.
Wie man jetzt aber die Replizierformel ändert, weiß ich nicht, ggf. steckt sie in diesem speziellen Dokument:
Set doc = db.GetDocumentByID("FFFF0800")

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.710
  • Geschlecht: Männlich
Re: Selektive Repliken anlegen
« Antwort #2 am: 30.12.10 - 10:11:51 »
Du musst zunachst einen ReplicaStub anlegen. Dafür gibt es in LS aber keinen direkten Befehl.

Über notesDatabase.CreateReplica( newServer$, newDbFile$ ) kann man zwar eine neue replik erstellen, es wird aber sofort repliziert.

Daher müssen wir mal wieder zur API greifen

Declaration
Code
Declare Function W32_NSFDbOpen Lib "nnotes.dll" Alias "NSFDbOpen" _
(Byval dbname As String, dbHandle As Long ) As Long
Declare Function W32_NSFDbClose Lib "nnotes.dll" Alias "NSFDbClose" _
(Byval dbHandle As Long ) As Long
Declare Function W32_NSFDBCREATE Lib "NNOTES.DLL" Alias "NSFDbCreate" _
(Byval dbname As String, Byval dbClass As Single, Byval forceIt As Single) As Long
Declare Function W32_NSFDBREPLICAINFOSET Lib "NNOTES.DLL" Alias "NSFDbReplicaInfoSet" _
(Byval dbHandle As Long, replInfoStruct As Long) As Long
Declare Function W32_NSFDBREPLICAINFOGET Lib "NNOTES.DLL" Alias "NSFDbReplicaInfoGet" _
(Byval dbHandle As Long, replInfoStruct As Long) As Long

Function CreateReplStub
Code
Function CreateReplStub(S_Server As String, S_Db As String, T_Server As String, T_Db As String, forceit As Single) As Long
	Dim S_DbString As String
	Dim T_DbString As String
	Dim dbhandle As Long
	Dim retNoteID As Long
	Dim noteClass As Long
	Dim replInfo(5) As Long
	
	Select Case Ucase$(S_Server)
	Case "LOCAL"
		S_DbString = S_Db
	Case "LOKAL"
		S_DbString = S_Db
	Case ""
		S_DbString = S_Db
	Case Else
		S_DbString = S_Server + "!!" + S_Db
	End Select
	
	Select Case Ucase$(T_Server)
	Case "LOCAL"
		T_DbString = T_Db
	Case "LOKAL"
		T_DbString = T_Db
	Case ""
		T_DbString = T_Db
	Case Else
		T_DbString = T_Server + "!!" + T_Db
	End Select
	
'get the replica info struct from Source DB
	
	rc = W32_NSFDBOPEN(S_DbString, dbhandle)
	rc = W32_NSFDBREPLICAINFOGET(dbhandle, replInfo(0))
	rc = W32_NSFDBCLOSE(dbhandle)
	
'crete new DB and asign replikaInfo
	
	rc = W32_NSFDBCREATE(T_DbString, DBCLASS_NOTEFILE, forceIt)
	Print "Create",rc
	rc = W32_NSFDBOPEN(T_DbString, dbhandle)
	Print "Open", rc
	rc = W32_NSFDBREPLICAINFOSET(dbhandle, replInfo(0))
	Print "Set", rc
	rc = W32_NSFDBCLOSE(dbhandle)
	Print "close", rc
	
End Function

aufgerufen wird der code dann beispielsweise:
Code
Sub Click(Source As Button)
	rc = CreateReplStub("comm3/singultus/de", "mail\bgates.nsf", "comm2/singultus/de", "mail\bgates.nsf", True) 
End Sub

Der code erstellt einen replica stub in dem du jetzt über
notesReplicationEntry.Formula = formula$ die Replikationsformel setzen kannst.

Ein bisschen ErrorHandling solltest du auch noch einbauen. Habe den Code auf das Nötigste abgespeckt.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline mastertom

  • Senior Mitglied
  • ****
  • Beiträge: 350
  • Geschlecht: Männlich
  • Yet another Domino-Day!
Re: Selektive Repliken anlegen
« Antwort #3 am: 30.12.10 - 18:00:17 »
Wow... das liest sich sehr schlüssig... da werde ich mich gleich mal dransetzen :-)

Vielen Dank für die Unterstützung... Ich melde mich dann entsprechender Erfolgsmeldung :-)


Gruß

Tom

-----------------------------------------------------

Einen Haufen User, die einem von der Arbeit abhalten wollen :)

Offline 0xse

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 507
  • Geschlecht: Männlich
Re: Selektive Repliken anlegen
« Antwort #4 am: 03.01.11 - 11:51:59 »
Bis auf die Anlage des Replik-Rumpfes findest du alles hier:
http://atnotes.de/index.php/topic,47655.0.html

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Selektive Repliken anlegen
« Antwort #5 am: 03.01.11 - 14:26:44 »
Wenn die Bedingungen gegeben sind, dann geht das Anlegen eines Replica Stubs sogar noch einfacher: Die Quell-Replik wird mittels NotesReplication.Disabled auf "nicht replizierbar" gesetzt. Dann mit CreateReplica eine Replik erzeugen - wegen des Flags wird daraus nur ein Stub. Anschliessend das erforderliche weitere Vorgehen bzgl. Replication Formula und dann NotesReplication.Disabled wieder auf False setzen.

HTH,
Bernhard

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Selektive Repliken anlegen
« Antwort #6 am: 12.10.21 - 21:18:10 »
ich weiss, sehr alten thread.. aber ich muss hier einmal etwas melden.

Ich habe aktuell die aufgabe beim Merge von 4 Server zu einen neuen mit DAOS, genau dieses zu tun, replik stumf anlegen, DAOS enabeln und dann erst replizieren.

Wenn der Replication disabeld ist, bekommt der CreateReplica ein User Defined error, und geht damit nicht. Leider.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Selektive Repliken anlegen
« Antwort #7 am: 13.10.21 - 07:46:00 »
Der Ansatz von Ulrich funktioniert einwandfrei, den setze ich hier auch ein. Nach Aufruf von CreateReplStub kannst Du dann ganz einfach die Replizierformel setzen:
Code
Set dbTarget = New NotesDatabase( targetServer, targetPath )
Set repl = dbTarget.Replicationinfo
Set replEntry = repl.Getentry("-", "CN=TargetServerName/O=Certifier", True)
replEntry.Formula = replFormula
Call replEntry.Save
Call repl.Save
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 CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 642
  • Geschlecht: Männlich
Re: Selektive Repliken anlegen
« Antwort #8 am: 13.10.21 - 10:41:28 »
Wenn man keine Replizierungsformel braucht sondern nur die eigentliche Replikation bis zum Aktivieren des DAOS unterdrücken möchte geht es noch viel einfacher ohne Script und API-Tricks:

1) Alle gewünschten DB's im Adminclient markieren und Replikation deaktivieren.
2) Die DB's im Adminclient auf den Zielserver ziehen und bestätigen.

Dank AdminP sind wenige Minuten später die leeren Repliken angelegt.

Jetzt kann man in Ruhe den DAOS aktivieren und danach die Replikation gleich wieder freigeben, den Rest macht der Replikator.

HTH
Carsten

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Selektive Repliken anlegen
« Antwort #9 am: 13.10.21 - 21:13:51 »
Wenn es doch so einfach wäre...

Server 1 bis 6, die daten haben von sih UND Server 7 bi 15 ( ! ) und aus historische gründen mit einen verzeichnis struktur /alteServername/verzeichnis/unterverzeichnis/Datenbank.nsf liegen nicht an den Stelle wo sie zukünftig liegen sollten.,

Dazu gibtr es notes 7 8 und 9 Servern (wenigstens ehemalige), und mehrere Replieken in unterschiedliche verzeichnisse. Und einige knapp an der 64 GB grenze dran..

Das habe ich schon "kontrolliert" und alle Replieken zusammen gefunden.

Dann muss ein neuen Pfad gemacht werden wo die zukunftige Datenbanke auf den neuen Server liegen sollten..

Und klar Ulrichs lösung funktioniert. Den verwende ich auch, der andere mit Replizierung ausschalten, direkt über mein Posting, darüber war meine Meldung gemeint.. Entschuldigung wenn das nicht klar war.

Neue Server ist Domino 11, und mit DAOS für den Anhänge die sicherlich über all doppelt und dreifach vorhanden sind. Daten werden auch nur per PULL geholt, sonnst könnten die DB's kaputt gehen mit den 64 GB Grenze.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Selektive Repliken anlegen
« Antwort #10 am: 14.10.21 - 15:06:25 »
Dann mache auf jedne Fall ein Create_R10_Databases in die INI des Servers bevor Du die Repliken erstellst. Dann ist wenigstens die Grenze bei 265GB...
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 ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Selektive Repliken anlegen
« Antwort #11 am: 14.10.21 - 19:40:23 »
Guter hinweis, ich war der FALSCHE meinung das den R11 Server das selber tun würde.. gemacht.

Replizierung voin 2 TB daten dauert dann einen weile.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Selektive Repliken anlegen
« Antwort #12 am: 15.10.21 - 09:03:17 »
durchaus... bezüglich "automatisch": Erinnerst Du Dich an das Debakel beim automatischen Update des ODS von Version 4 auf Version 5 mit Datenverlust, korrupten Datenbanken, etc.? Seither hat sich IBM und jetzt auch HCL nie mehr getraut eine neue ODS OHNE einen entsprechenden INI- Parameter automatisch zu aktivieren...
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 ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Selektive Repliken anlegen
« Antwort #13 am: 15.10.21 - 13:43:13 »
Ich habe es verdrängt :-)

Jedenfalls läuft es jetzt und müssen sehr viele Datenbanken mittels Pull Repliziert werden zum neuen.

Verbindungsdokumente mit Pull Only erstellt, und von 18 bis 8 laufen lassen. Damit tagsüber das netzwerk nicht so belastet wird.

Mal sehen ob es am Montagmorgen fertig ist.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz