Keine Archivdaten mehr an Ihren Standby-Server senden: Kontinuierliche Protokollübertragung in Actian NoSQL 11.1
Wichtigste Erkenntnisse
- Actian NoSQL 11.1 führt „Logstream“ ein, um festgeschriebene Änderungen kontinuierlich über TCP von einer Primärdatenbank auf eine Standby-Datenbank zu replizieren, anstatt Archivdateien manuell zu übertragen und wiederherzustellen.
- Der Standby-Server bleibt während des Empfangs von Updates im schreibgeschützten Modus online, sodass Berichtsfunktionen und andere Lesevorgänge ihn im Normalbetrieb nutzen können.
- Durch die fortlaufende Sequenzverfolgung kann die Replikation nach kurzen Netzwerkunterbrechungen fortgesetzt werden, ohne dass Archivdateien manuell wiederhergestellt werden müssen.
Vor Actian NoSQL 11.1 war es nicht möglich, eine Standby-Datenbank zu betreiben. Die Standby-Datenbank befand sich im SUSPENDED-Modus (= nicht startbar), und die Archivdateien mussten manuell auf die Standby-Datenbank angewendet werden.
Außerdem wurden die festgeschriebenen Transaktionen in Archivprotokollen gespeichert, und der DBA muss jedes Archiv auf die Standby-Datenbank anwenden und würde es nur mit vbackup -resume, falls die Primärdatenbank beschädigt wurde.
Im Falle eines Failovers führte ein Mitarbeiter unter Zeitdruck einen mehrstufigen Wiederherstellungsvorgang durch. Ein Fehler bei diesem Vorgang führte dazu, dass die Wiederherstellung fehlschlug.
Actian NoSQL 11.1 macht diesen manuellen Schritt überflüssig. Die neue logstream Das Dienstprogramm überträgt die durch die festgeschriebene Transaktion geänderten Objekte über eine TCP-Verbindung von der Primär- zur Standby-Datenbank, wendet sie fortlaufend an und hält die Standby-Datenbank dabei die ganze Zeit im schreibgeschützten Modus.
Die folgende Tabelle zeigt einige wesentliche Unterschiede zwischen dem Rollforward-Verfahren und dem neuen Logstream-Verfahren:
Was ändert sich?
| ROLL FORWARD Archiv im Standby-Modus | Actian NoSQL 11.1 Logstream | |
|---|---|---|
| Verkehr | Einzelne Archivdateien, die auf Festplatte oder Band geschrieben und anschließend kopiert wurden | Live-TCP-Stream in Echtzeit |
| Aufwand für den Bediener | vbackup -restore bei jedem Aktualisierungsschritt | „logstream -in“ und „logstream -out“ laufen kontinuierlich |
| Standby-Zustand | Angehalten (= nicht startbar), bis die Wiederherstellung abgeschlossen ist | Online und im „Schreibschutz“-Modus |
| Zeitfenster für Datenverlust | Abhängig davon, wie oft Sie Archive erstellen und versenden | Gebunden an die „ Streaming “-Kadenz; hängt vom Netzwerk, der Systemauslastung und den TCP-Einstellungen des Betriebssystems ab |
Die beiden operativen Erfolge sind:
- Die Wiederherstellung hängt nicht mehr von einer manuellen Wiederherstellung der Archivdateien ab.
- Die Standby-Datenbank kann nun zum Lesen von Objekten verwendet werden, während gleichzeitig Rollforward-Änderungen empfangen werden.
Architektur
Es gibt zwei Logstream-Prozesse, die untereinander eine Socket-Verbindung offen halten.
logstream -outläuft auf dem Primärserver. Es liest die Roll-Forward-Protokoll-Einträge, sobald die Datenbank sie erzeugt, bündelt sie zu Netzwerk-Batches und sendet sie an den Standby-Server.logstream -inläuft auf dem Standby-Server. Es überwacht einen von Ihnen gewählten Port, empfängt die Batches und trägt die Datensätze bei ihrem Eintreffen in die Standby-Datenbank ein.

Logstream-Workflow für Dienstprogramme
Objekte werden ohne manuelle Zwischenschritte direkt von der Primärdatenbank in die Standby-Datenbank gestreamt.
Der Port ist ein beliebiger ungenutzter Port auf dem Standby-Host. Es gibt keinen festen Standardwert; in den Beispielen in diesem Beitrag wird der Port 5051 verwendet. Vergewissern Sie sich, dass der gewählte Port frei ist, bevor Sie eine Bindung vornehmen können \logstream -in\ dazu.
Der Status wird auf beiden Seiten gespeichert
Diese beiden Logstream-Prozesse sind unabhängig von der Roll-Forward- Aufzeichnung -Sequenznummer, die erreicht wurde. Die \-out\ Die Seite kennt die zuletzt gesendete Aufzeichnung ; die \-in\ Die Seite kennt die zuletzt von ihr angewendete Aufzeichnung .
Diese Architektur hat eine einzige Betriebsregel: start \logstream -in\ auf dem Host der Standby-Datenbank, bevor Sie beginnen \logstream -out\ auf dem Primärserver. Der Absender benötigt einen Empfänger auf dem Standby-Server, mit dem er eine Verbindung herstellen kann.
Der Standby-Modus führt Lesevorgänge durch, während er synchronisiert wird
Erstellen Sie die Standby-Baseline im Standby-Modus:
vbackup -restore -standbyMode\
Eine mit \ wiederhergestellte Datenbank-standbyMode\ nimmt die eingehenden Schreibblöcke von \ entgegenlogstream -in\ wobei sie für Lesezugriffe durch Anwendungen offen bleibt. Client-Anwendungen können eine Verbindung herstellen und Abfragen daran ausführen. Jeder Versuch, Daten in einem in der Standby-Datenbank gespeicherten Objekt zu ändern oder zu schreiben, schlägt fehl mit \SM_DB_IS_READONLY\, da sich die Datenbank im Standby-Modus (=READONLY) befindet.
In der Praxis bedeutet dies, dass Sie im Normalbetrieb Berichts-Workloads, leseintensive Dienste oder Testumgebungen auf den Standby-Server umleiten können, anstatt für einen zweiten Server zu bezahlen, der bis zu einem Failover untätig bleibt.
Einen Netzwerkausfall überstehen
Da beide Enden ihre Position in der Sequenz beibehalten, führt eine unterbrochene Verbindung lediglich zu einer Unterbrechung des Datenstroms und zu nichts weiter.

Logstream – Ausfallsicherheit der Dienstprogramme
Eine Netzwerkpartitionierung unterbricht den Stream, und der aktive Logstream behält seine aktuelle Sequenzposition bei. Falls die Verbindung nach kurzer Zeit wiederhergestellt wird, sind beide Logstream-Prozesse aktiv. Während dieser Zeit wächst das logische Protokoll des Primärservers weiter, wobei alle festgeschriebenen Transaktionen gespeichert werden.
Sobald die Verbindung wiederhergestellt ist, werden die Logstream-Prozesse ab der zuletzt verwendeten Sequenznummer fortgesetzt. Selbst im Falle eines vorübergehenden Netzwerkproblems sind keine Maßnahmen seitens des Bedieners erforderlich, um einen der Logstream-Prozesse neu zu starten.
Was weiterhin in den Zuständigkeitsbereich des DBAs fällt
Mit Logstream entfällt die Notwendigkeit einer manuellen Wiederherstellung, dennoch sollte der DBA die Prozesse weiterhin überwachen. Der DBA sollte:
- Beide Prozesse müssen laufen. Der Stream läuft nur, solange beide
logstream -outist bei den Vorwahlen undlogstream -inbefindet sich im Standby-Modus. Beziehen Sie beide Logstream-Prozesse in die vom Unternehmen festgelegten Überwachungsmaßnahmen ein. - Beobachten Sie die Datei „logical.log“ auf dem Primärserver. Solange die TCP-Verbindung zwischen den beiden Prozessen unterbrochen ist, kann der Primärserver keine Objekte weiterleiten, die durch festgeschriebene Transaktionen geändert wurden, daher ist sein
logical.logDie Datei wird immer größer.
Wie schnell sie wächst, hängt davon ab, wie viele Client-Anwendungen auf die Primärdatenbank schreiben; auf einem stark ausgelasteten System kann sie sehr schnell anwachsen. Wenn die Festplattenpartition, auf der logical.log Wenn der Speicherplatz vollständig belegt ist, wird die Primärdatenbank heruntergefahren. Ein längerer Netzwerkausfall kann daher zu einem Ausfall der Primärdatenbank führen, und beide Logstream-Prozesse können nach einem langen TCP-Timeout beendet werden, wenn sie nicht regelmäßig überwacht werden.
Eine bewährte Vorgehensweise besteht darin, sowohl für den Status „aktiv“ der beiden Logstream-Prozesse als auch für den freien Speicherplatz auf dieser Partition eine „Warnmeldung“ auszulösen.
Den Stream optimieren
Zwei Parameter aktiviert logstream -out Steuerung, wann ein Stapel gesendet wird.

Sobald der erste Schwellenwert erreicht ist – sei es die verstrichene Zeit oder die Befüllung einer Charge –, wird der Transfer ausgelöst.
Das -aggression Der Parameter legt die maximale Anzahl von Sekunden fest, die ein Teilstapel zurückgehalten wird, bevor er gesendet wird (Standardwert: 60). -batchsize Legt die maximale Anzahl von Protokolleinträgen in einem Stapel fest (Standardwert: 100). Eine wenig ausgelastete Datenbank sendet einen kleinen Stapel, wenn der Timer abläuft; eine stark ausgelastete Datenbank füllt den Stapel zunächst vollständig und sendet dann häufiger.
Die Standardeinstellungen sind für Testumgebungen ausreichend und bilden einen guten Ausgangspunkt für den Einsatz in der Produktion. Das tatsächliche Replikationsverhalten wird jedoch nicht nur von diesen beiden Werten bestimmt: Die TCP-Einstellungen des Betriebssystems, die Systemauslastung auf beiden Hosts und die Netzwerkauslastung spielen ebenfalls eine Rolle, sodass es keine einzelne Einstellung gibt, die pauschal genannt werden kann. Sollten Sie in der Produktion ein Leistungsproblem feststellen, eröffnen Sie bitte einen Supportfall beim Actian-Supportteam, bevor Sie einen dieser Werte ändern. Der Support wird Sie um eine kleine Auswahl an Dateien bitten, um die Ursache zu ermitteln. Sollte die Analyse auf Batching hindeuten, wird er Ihnen konkrete Werte empfehlen und die Verbesserung gemeinsam mit Ihnen überprüfen.
Synchronisierungsstatus prüfen
vbackup -info gibt an, wo sich die jeweilige Seite des Paares befindet. Auf der Primärseite:
> vbackup -info primarydb
Currently transferring logs, next sequential number: #427...
Im Standby-Modus:
> vbackup -info standbydb
Currently injecting logs...
Records applied up to sequential number #10532...
Wenn beide Logstream-Prozesse gleichzeitig laufen, wird in der Überwachungsausgabe und in den Protokollen jeweils eine Sequenznummer angezeigt. Diese müssen nicht übereinstimmen, damit ein einwandfreier Zustand vorliegt.
Wenn beide Logstream-Prozesse gleichzeitig laufen, wird in der Überwachungsausgabe und in den Protokollen jeweils eine Sequenznummer angezeigt. Diese müssen nicht übereinstimmen, damit ein einwandfreier Zustand vorliegt.
Den Standby-Modus aktivieren: logstream -finish
Durch die Promotion wird der Standby-Server in eine normale Standard-Datenbank mit Lese- und Schreibzugriff umgewandelt. Dies kommt in zwei Situationen zum Einsatz: bei einem Failover nach Ausfall des Primärservers und bei einer geplanten Außerbetriebnahme des Primärservers, beispielsweise im Zuge eines Hardwarewechsels. In beiden Fällen werden die beiden logstream Die Prozesse müssen zunächst beendet werden. Die Promotion kann und sollte nicht ausgeführt werden, solange einer der Prozesse aktiv ist, und der Promotion-Befehl weigert sich, ausgeführt zu werden, wenn er einen aktiven Logstream-Prozess erkennt. Im Folgenden finden Sie die Schritte zur Promotion des Standby-Servers.
- Den Stream anhalten. Stopp
logstream -outauf dem Primärserver, sofern dieser noch erreichbar ist, dann beendenlogstream -inim Standby-Modus. - Die Aktion durchführen:
logstream -finish standbydb. Dadurch wird die STANDBY-Datenbank von schreibgeschützt auf multi-Nutzer umgestellt und die Datenbank ordnungsgemäß heruntergefahren. - Starten Sie die Datenbank:
startdb standbydb. Starten Sie die Datenbank im Mehrbenutzermodus. Es liegt an Ihnen, ob Sie sie als Ihre neue Primärdatenbank verwenden möchten; in diesem Fall müssen Sie folgenden Befehl ausführen: „vbackup -rollforward -backup„
Die Beförderung erfolgt in eine Richtung. Nach der Beförderung erhält die Datenbank keine Aktualisierungen mehr von der ursprünglichen Quelle. Wenn Sie einen neuen Standby benötigen, richten Sie diesen anhand des neuen Primärservers mit dem Befehl „vbackup -restore -standbyMode“ ein und starten Sie einen neuen Stream.
Geplante Migrationen
Derselbe Mechanismus sorgt dafür, dass Hardware-Aktualisierungen und Umzüge von Rechenzentren ohne Ausfallzeit für den Archivversand abgewickelt werden können.
- Überprüfen. Wenn beide Datenbanken aktiv sind, führen Sie folgenden Befehl aus:
vbackup -infoauf jeder Seite, um sicherzustellen, dass beide Logstream-Prozesse aktiv sind und der Standby-Prozess vollständig auf dem aktuellen Stand ist. - Halten Sie den Datenstrom der Reihe nach an. Stopp
logstream -outbei der Vorwahl, dannlogstream -inim Standby-Modus, solange das Netzwerk einwandfrei funktioniert. - Werben. Ausführen
logstream -finishundstartdbauf der Zielhardware, wie oben beschrieben. - Außerbetrieb nehmen. Deaktivieren Sie die Archivierung auf dem alten Primärserver mit
vbackup -off primarydbund es aus dem Verkehr ziehen.
Die Umstellung erfolgt mit nur wenigen Befehlen, und der neue Primärserver hat den Leseverkehr bereits so lange bedient, wie Sie ihn zuvor testen wollten.
Lizenzierung und Verfügbarkeit
Logstream wird mit Actian NoSQL 11.1 ausgeliefert. Es sind keine zusätzlichen lizenzierten Komponenten erforderlich: Die Lizenz, die Sie für Actian NoSQL 11.0 verwenden, gilt auch für Version 11.1.
Erste Schritte
- Aktivieren Sie den Rollforward in der Primärdatenbank. Dies erfolgt über
vbackup -rollforward -backupum diese backup später in der Standby-Datenbank wiederherstellen zu können. - Aktualisieren Sie beide Hosts auf Actian NoSQL 11.1 und erstellen Sie die Standby-Baseline mit
vbackup -restore -standbyMode. - Wählen Sie einen freien Port im Standby-Modus aus. Starten
logstream -inda, dannlogstream -outbei der Vorwahl. - Füge beide Prozesse und den des Primärservers hinzu
logical.logPartition in Ihre Überwachung einbeziehen. - Ansehen
vbackup -infoauf beiden Seiten. Lassen Sie-aggressionund-batchsizein ihren Standardkonfigurationen, sofern der Support nichts anderes empfiehlt.
Die Befehle in diesem Beitrag zeigen nur die wichtigsten Optionen, darunter auch die neue -standbyMode Flag. Vollständige Syntax für vbackup, logstream, und startdb, einschließlich der Argumente für Host und Port sowie der Hinweise zur Plattform, finden Sie in der Dokumentation zu Actian NoSQL 11.1.
Haben Sie Fragen oder Anregungen zu Logstream? Wenden Sie sich über die Actian-Community oder Ihren Kundenbetreuer an das Actian NoSQL-Team.