Mit Software für virtuelle Maschinen wie VirtualBox können inkrementelle VM-Klone erstellt werden. Das heißt, Daten werden nach dem "Berühren" (geöffnet und beschreibbar geöffnet) kopiert und im inkrementellen Cache des neuen Klons gespeichert.
Ich suche nach der gleichen Option für ein Postgres-DBMS.
Wie kann ich eine inkrementelle Datenbankkopie einrichten, bei der Einträge aus der Originaldatenbank gelesen und Zeilen aus der lokalen Kopie berührt / geändert werden?
Wie kann ich ein solches Verhalten auf Dateisystem- / Speicherebene mithilfe einer separaten DBMS-Instanz emulieren, wenn dies nicht auf DBMS-Ebene erfolgt?
Hintergrund: Die Idee ist, den leistungsstarken Datenbankserver zu verwenden, ohne jedoch viel Ressourcenaufwand für eine inszenierte / Entwickler-Datenbankkopie zu verursachen.
quelle
Antworten:
So etwas gibt es eigentlich nicht.
Sie können verwenden
pg_basebackup
oderpg_dump
zu kopieren , die Original - DB, aber es gibt keine Copy-on-Write - Anlage. Die integrierte Replikation erfordert eine Kopie, die nichts gemeinsam nutzt, und die Replikate sind schreibgeschützt.Sie können Replikationsoptionen von Drittanbietern wie Londiste oder Slony-I verwenden, um den Status des Masters auf die Entwicklungscomputer zu replizieren. Diese Systeme sind jedoch etwas fragil, befassen sich nicht mit der DDL-Replikation und können erhebliche Auswirkungen auf den Master-Server haben Performance.
Zukünftige PostgreSQL-Versionen werden hoffentlich eine logische Log-Streaming-Replikation haben, die näher an Ihren Wünschen liegt. Es existiert jetzt als Patch für den Quellcode, aber zum Zeitpunkt des Schreibens (S. 9.3 Release) befindet es sich in der Alpha-Entwicklungsphase, wo es für einige Verwendungszwecke validiert wurde, jedoch nicht für den allgemeinen Gebrauch.
Ich würde wahrscheinlich ein oder zwei Schichten nach unten gehen. Ich würde Snapshots zum Kopieren und Schreiben von Dateisystemen oder sogar Images von virtuellen Maschinen zum Kopieren beim Schreiben verwenden, um das zu erreichen, was Sie wollen.
quelle
Delphix virtualisiert Postgres sowie Oracle und SQL Server. Delphix ist eine Software, die als VM ausgeführt wird. Delphix stellt eine Verbindung zu einer Quellendatenbank her und sammelt einen sogenannten "Zeitfluss". Ein Zeitablauf ist die Erfassung von Daten aus der Quellendatenbank, mit der Delphix Klone auf einem Zielcomputer überall in einem vom Zeitablauf abgedeckten Zeitfenster hochfahren kann. Der Zeitablauf beträgt standardmäßig zwei Wochen. Daten, die älter als die zwei Wochen sind und nicht verwendet werden, werden gelöscht. Delphix sieht für die Zieldatenbanken, die Klone, wie ein NAS aus. Neue Klone verweisen nur auf vorhandene Datenblöcke in Delphix, sodass neue Klone keinen neuen Speicherplatz beanspruchen und in wenigen Minuten erstellt werden können. Die Klone können innerhalb von Minuten von der Quelle aus aktualisiert, verzweigt werden, um eine Datensteuerung zu erstellen, die Daten enthält, wie die Quellcodeverwaltung zu codieren ist, und können zurückgesetzt werden, um destruktive QS-Tests immer wieder ausführen zu können.
Sie können eine kostenlose Version von Delphix hier herunterladen: http://datavirtualizer.com/delphix-express-installation/
Vollständige Offenlegung: Ich arbeite bei Delphix
quelle