2017-08-15 7 views
1

Bei der Verwendung von Streaming-Replikation kann jemand bitte den Zweck von archive_command und restore_command in PostgreSQL erklären?Verwendung von archive_command in PostgreSQL Streaming-Replikation

Wie ich in der Streaming-Replikation Sekundärserver lesen und die teilweise gefüllten WAL-Dateien.Anwenden habe ich meine wal Segment Speicherort in pg_xlog und mit archive_command ich kopiere dies in mein lokales Archiv-Verzeichnis say/arclogs.

Wenn also der sekundäre Server die teilweise gefüllten Archivprotokolle von pg_xlog über das Netzwerk lesen soll, dann werden die Dateien in/arclogs verwendet. und die Dateien werden nur an/arclogs gesendet, wenn sie 16 mb sind?

Ich bin neu in PostgreSQL & Ihre Hilfe wird appericated.

Antwort

2

Der Master behält normalerweise nur eine begrenzte Anzahl von WAL in pg_xlog, gesteuert durch die Einstellung wal_keep_segments des Masters. Wenn das Replikat zu langsam oder zu lange nicht verbunden ist, löscht der Master diese Transaktionsprotokolle, um sicherzustellen, dass das Replikat weiter ausgeführt werden kann, ohne dass Speicherplatz frei wird.

Wenn dies passiert, hat das Replikat keine Möglichkeit, den Master nachzuholen, da es einen kontinuierlichen und lückenlosen WAL-Stream benötigt.

So können Sie:

  • aktivieren WAL-Archivierung (archive_command und archive_mode) als Ausweich, so die Replik wechseln WAL von Archiven Wiedergabe, wenn der Master WAL löscht ihn aus seiner pg_xlog muss. Das Replikat ruft die WAL mit seiner restore_command ab. Wichtig ist, dass sich die archivierte WAL nicht auf derselben Maschine wie der Master befinden muss und normalerweise nicht.

oder

  • eine physische Replikation Steckplatz (primary_slot_name in recovery.conf), um die Replik an den Master anzuschließen. Wenn ein Steckplatz verwendet wird, weiß der Master, welche WAL das Replikat benötigt, selbst wenn das Replikat getrennt ist. So wird WAL nicht noch immer von einem Replikat aus pg_xlog entfernt. Der Nachteil ist jedoch, dass pg_xlog sich füllen kann, wenn ein Replikat zu lange inaktiv ist und der Master wegen fehlendem Speicherplatz fehlschlägt.

oder

  • Do weder, und Repliken erlauben zu versagen, wenn sie weit hinter sich zu fallen. Dann erstellen Sie sie neu aus einem neuen Basis-Backup, wenn dies passiert.

Die Dokumentation braucht wirklich ein Überblickstück, um das alles zusammen zu setzen.

WAL-Archivierung hat einen zusätzlichen Vorteil: Wenn Sie eine base backup des Servers machen können Sie es, plus WAL-Archive, eine point-in-time restore des Masters tun. Auf diese Weise können Sie Daten wiederherstellen, beispielsweise durch versehentliches Löschen von Tabellen. PgBarman ist eines der Tools, die Ihnen dabei helfen können.

+0

Wirklich die Antwort, die ich will.danke Craig.More Gold Abzeichen warten auf Sie.immer noch ein Problem, archive_command kopiert nur das gesamte 16mb Segment an den/arlogs Ort in Streaming-Replikation zu und nicht teilweise gefüllt Segmentdateien richtig? und sekundär liest von/pg_xlog location? –

+0

@Ankushsharma Secondary im Streaming-Modus verbindet zu Master-und Master-Streams von 'pg_xlog' und kann Teilsegmente, wie sie generiert werden. Secondary im Archiv-Modus liest von 'restore_command', kann nur ganze 16mb-Segmente empfangen und liest sie von wo auch immer' restore_command' sagt, wo immer 'archive_command' steht. Ich rate Ihnen dringend, WAL-E oder PgBarman oder etwas zu verwenden, um dies zu verwalten. –

Verwandte Themen