Update: Ich habe dies in den AWS-Foren gepostet. Bitte melden Sie sich an und fragen Sie dort nach .
Zum Zeitpunkt des Schreibens unterstützt Amazon RDS keine physische Replikation außerhalb von RDS. Sie können GRANT
das REPLICATION
Recht eines rds_superuser
Benutzers mit einem Login, aber Sie können keine replication
Einträge für externe IPs in konfigurieren pg_hba.conf
.
Außerdem werden beim Erstellen einer DB-Parametergruppe in RDS einige Schlüsselparameter angezeigt, jedoch gesperrt, z. B. archive_command
die gesperrt sind /etc/rds/dbbin/pgscripts/rds_wal_archive %p
. AWS RDS für PostgreSQL macht diese WALs anscheinend nicht für den externen Zugriff verfügbar (z. B. über S3), wie dies erforderlich wäre, wenn Sie die WAL-Versandreplikation für externe PITR verwenden würden.
Wenn Sie also Wal-Shipping möchten, verwenden Sie an dieser Stelle kein RDS. Es ist eine einfach zu verwendende Datenbank in Dosen, aber einfach zu verwenden bedeutet oft, dass sie auch begrenzt ist, und das ist hier sicherlich der Fall. Wie Joe Love in den Kommentaren ausführt, werden WAL-Versand und PITR innerhalb von RDS bereitgestellt , aber Sie können von außerhalb von RDS keinen Zugriff auf die WAL erhalten .
Sie müssen daher die eigenen Backup-Funktionen von RDS verwenden - Speicherauszüge, Snapshots und ein eigenes WAL-basiertes PITR.
Selbst wenn Sie mit RDS Replikationsverbindungen (für pg_basebackup
oder Streaming von Replikationen) herstellen und auf archivierte WAL zugreifen konnten, können Sie diese WAL möglicherweise nicht tatsächlich nutzen. RDS führt ein gepatchtes PostgreSQL aus, obwohl niemand weiß, wie stark gepatcht oder ob es das Format auf der Festplatte erheblich verändert. Es läuft auch auf der von Amazon ausgewählten Architektur, die wahrscheinlich x64 Linux ist, aber nicht leicht zu bestimmen ist. Da das PostgreSQL-Festplattenformat und die Replikation von der Architektur abhängig sind, können Sie nur auf Hosts replizieren, die dieselbe Architektur wie die von Amazon RDS verwenden, und nur dann, wenn Ihr PostgreSQL-Build mit deren kompatibel ist.
Dies bedeutet unter anderem, dass Sie keine einfache Möglichkeit haben, von RDS wegzuwandern. Sie müssten alle Schreibvorgänge in die Datenbank so lange anhalten, bis a ausgeführt pg_dump
, wiederhergestellt und die neue Datenbank in Betrieb genommen werden kann. Die üblichen Tricks mit Replikation und Failover, mit rsync usw. funktionieren nicht, da Sie keinen direkten Zugriff auf den DB-Host haben.
Selbst wenn RDS ein nicht gepatchtes PostgreSQL-Programm ausführen würde, möchte Amazon Ihnen pg_basebackup
aus Sicherheitsgründen wahrscheinlich nicht erlauben, WAL-Streaming in RDS oder Import in RDS durchzuführen. PostgreSQL behandelt das Datenverzeichnis als vertrauenswürdigen Inhalt, und wenn Sie clevere 'LANGUAGE c'-Funktionen entwickelt haben, die interne Funktionen einbinden, oder andere knifflige Aufgaben ausführen, können Sie den Server möglicherweise ausnutzen, um einen größeren Zugriff zu erhalten, als Sie eigentlich hätten . Daher wird Amazon in Kürze keine eingehenden WAL-Anfragen mehr zulassen.
Sie könnten ausgehenden WAL-Versand unterstützen, aber die oben genannten Probleme mit Formatkompatibilität, Änderungsfreiheit usw. gelten weiterhin.
Verwenden Sie stattdessen ein Tool wie Londiste oder Bucardo.
Dies ist jetzt mithilfe der logischen Replikation möglich: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication
quelle
Die Replikation mit Trigger-basierten Systemen wie Londiste und Bucardo in und aus RDS wird ab dem 10. November 2014 gemäß einer Antwort in diesem Forenthread unterstützt .
Ankündigung hier
quelle
pg_basebackup
usw. verwendet wird. Sie haben die beste Wahl getroffen, da sie aus Sicherheitsgründen die physische Replikation nicht wirklich unterstützen können.