PostgreSQL 9: Wird das Staubsaugen einer Tabelle auf dem Primärserver auf dem Spiegelserver repliziert?

18

Ausführen von PostgreSQL 9.0.1, wobei die Streaming-Replikation eine schreibgeschützte Spiegelinstanz auf dem neuesten Stand hält. Auto-Vacuum ist auf der Primärseite aktiviert, mit Ausnahme einiger Tabellen, die vom Auto-Vacuum-Daemon nicht gesaugt werden, um die E / A während der Geschäftszeit zu reduzieren. Diese Tabellen sind "materialisierte Ansichten".

Jede Nacht um Mitternacht führen wir ein Vakuum in der Datenbank durch, um die Tabellen zu bereinigen, die vom automatischen Vakuum ausgeschlossen sind. Ich frage mich, ob sich dieser Prozess auf den Spiegel überträgt oder ob ich auch ein Vakuum auf dem Spiegel einrichten muss.

Scott Herbert
quelle
1
Hervorragende Frage. Die Streaming-Replikation verwendet das Write-Ahead-Protokoll, um festzustellen, ob die von VACUUM vorgenommenen Änderungen protokolliert wurden oder nicht.
DerfK
1
Interessanterweise habe ich das automatische Staubsaugen auf dem Nur-Lese-Spiegel aktiviert, aber wenn ich in die Tabellenstatistik schaue, scheint es, als wäre es noch nie gelaufen. Da in allen Tabellen 0 lebende / tote Tupel aufgeführt sind und keine Historien von Vakuen oder Analysen sichtbar sind.
Scott Herbert
developer.postgresql.org/pgdocs/postgres/hot-standby.html - 25.5.2. Behandlung von Abfragekonflikten - "Die Anwendung eines Vakuum-Bereinigungsdatensatzes aus WAL-Konflikten mit Standby-Transaktionen, deren Snapshots noch alle zu entfernenden Zeilen" sehen "können ............. Dies scheint darauf hinzudeuten, dass VACUUM ist WAL-geloggt, und daher ist es ein "Ja" zu meiner Frage. Würde gerne mehr Informationen von einem PG-Guru bekommen!
Scott Herbert
Es wird erwartet, dass die Daten aus dynamischen Ansichten auf Primär- und Standby-Ebene unterschiedlich sind. Diese Ansichten verwenden Systemfunktionen zum Erfassen der Daten, und diese Funktionen lesen die Daten aus speicherinternen Datenstrukturen und nicht aus einer physischen Tabelle. Wenn Sie z. B. eine ANALYSE für primär durchführen, werden die Optimierungsstatistiken (die für die Abfrageplanung verwendet werden) auch im Standby-Modus aktualisiert. Die Zeit, zu der die ANALYSE für die Tabelle durchgeführt wurde, wird jedoch nicht in den pg_stat_user_tables angezeigt, da diese Informationen nicht in der Transaktion protokolliert werden protokolliert.
Gurjeet Singh
Die Schlussfolgerung ist also, dass das auf dem Master auftretende AUTOVACUUM keine Auswirkung darauf hat, dass es auf dem Slave ausgeführt wird, richtig? Angenommen, dies ist der Fall, wenn ich eine Tabelle habe, die KEINE Aktualisierungen / Löschungen aufweist, nur Einfügungen, wäre es möglich, das automatische Vakuum im Master zu deaktivieren, da ich nur darauf schreibe und die Lesevorgänge auf dem Slave stattfinden.
Henley Chiu

Antworten:

16

Vakuum und Autovakuum replizieren sich wie jede andere Schreiboperation. (Nun, sie sind natürlich intern etwas Besonderes, aber was Ihre Frage betrifft, handelt es sich um normale Schreibvorgänge.) Das Ausführen von Vakuum oder Autovakuum auf dem Slave hat keine Auswirkungen und ist nicht erforderlich.

Peter Eisentraut
quelle