Wie kann ich eine fortlaufende Kopie einer Datenbank von der Produktion bis zur Bereitstellung auf Heroku planen?

8

Ich möchte einen Zeitplan erstellen, bei dem meine Staging-Datenbank immer eine Kopie meiner Produktionsdatenbank ist und die Kopie einmal am Tag oder einmal pro Stunde erstellt wird.

Ich weiß, dass es eine einfache Möglichkeit gibt, eine einmalige Kopie mit heroku pg durchzuführen:

%Vor%

Aber das ist nur eine einmalige Sache.

Ich weiß auch, dass es einfach ist, zeitgesteuerte Befehle mit dem Heroku-Scheduler auszuführen, die in einmaligen Prüfständen ausgeführt werden. Aber auf den Dynos ist der Heroku Toolbelt nicht installiert, daher ist heroku pg:copy nicht verfügbar.

Ich habe versucht, pg_dump | pg_restore zu verwenden, aber ich stoße auf eines von zwei Problemen:

Ohne das Schema einzuschränken, scheitert es, weil ich nicht die richtigen Berechtigungen habe, denke ich:

%Vor%

Bei der Einschränkung von pg_dump auf nur --schema=public tritt ein Fehler auf, da einige Erweiterungen vom öffentlichen Schema abhängen und nicht gelöscht werden.

%Vor%

Was ist der beste Weg dies zu tun?

    
Ian Storm Taylor 31.12.2016, 00:41
quelle

2 Antworten

2

Es gibt keinen Grund, warum Sie die CLI nicht als Vorstufe für jede Kopie der Produktionsdatenbank herunterladen und auf dem Prüfstand installieren können.

Sie benötigen lediglich ein Shell-Skript, das vom Scheduler aufgerufen wird, und das Shell-Skript installiert die CLI und verwendet Umgebungsvariablen, um die erforderlichen Anmeldeinformationen zu speichern.

Einfacher zweistufiger Prozess ...

  1. Installieren Sie CLI
  2. Verwenden Sie CLI, um eine Kopie der Datenbank durchzuführen

Tatsächlich kann es eine eigenständige App ohne Web- oder Worker-Prozesse sein, die dies ausführt.

Wir verwenden eine ähnliche Methode, um unsere eigenen Backups auszuführen und sie unabhängig von Herokus eigenem Backup in einen AWS S3-Bucket hochzuladen. Daher installieren wir sowohl die Heroku als auch die AWS-CLIs.

    
David Aldridge 26.01.2017, 21:23
quelle
4

Haben Sie überlegt, einen Datenbank-Follower (auch Master / Slave-Konfiguration genannt) zu erstellen? Ссылка

Dies würde Ihre Follower-Datenbank kontinuierlich mit Daten aus der Produktion aktualisieren. Beachten Sie, dass, wenn Sie Daten direkt in der Follower-Datenbank geändert haben, dies nicht unbedingt überschrieben werden würde, also nicht sicher, ob dies eine mögliche Lösung für das ist, was Sie brauchen.

    
Julie 26.01.2017 20:16
quelle

Tags und Links