
Die Migration auf einen anderen Server ist nicht einfach, wenn wir eine große Datenbank haben. Wir möchten unsere Datenbank in Linode in eine Amazon RDS-Datenbank verschieben. Ich habe es versucht pg_dump
und pg_restore
es hat funktioniert, aber es hat viel Zeit in Anspruch genommen.
Meine Frage ist: Gibt es eine schnelle Möglichkeit wie Komprimierung ODER kann ich die Datenbank in Linode mit der Datenbank in Amazon RDS synchronisieren?
also muss ich dann nur CNAME ändern, damit es auf Amazon verweist, und dann funktioniert es weiter, da wir die Datenbank bereits miteinander synchronisiert haben?
Jeder Vorschlag ist hilfreich!
Antwort1
Wenn Sie nicht zu RDS, sondern zu einem anderen realen Host migrieren würden, könnten Sie die Streaming-Replikation für folgende Zwecke nutzen:
pg_basebackup
die DB auf den neuen Host- Starten Sie die Replik mit einem
recovery.conf
Verweis auf den aktuellen Master - Warten Sie, bis die Replikation aufgeholt hat
- Laden Sie den Master neu, wobei die synchrone Replikation für das Replikat aktiviert ist.
- ... fahren Sie dann den Master herunter, starten Sie die Replik als Master neu und los geht‘s.
Dies funktioniert nicht mit RDS, da RDS Ihnen keinen Zugriff auf den zugrunde liegenden Server gewährt. Sie können pg_basebackup
Ihre eigene Streaming-Replikation weder verwenden noch steuern. Wenn Sie also RDS verwenden, ist Ihre einzige echte Option ein Dump und Neuladen.
Theoretisch könnte Amazon Benutzern erlauben, RDS-Replikate von Mastern einzurichten, die sich nicht in RDS befinden, und diese dann zu Mastern zu machen. Das wäre eine sehr gute Idee, da es Benutzern die Migration von Datenbanken in RDS viel einfacher machen würde. Zum Zeitpunkt des Schreibens ist diese Funktion jedoch nicht vorhanden und es wäre möglicherweise kompliziert, da es nur funktionieren würde, wenn die Ursprungsdatenbank mit kompatiblen Optionen, derselben Hauptversion und auf derselben CPU-Architektur wie der Replikationsserver kompiliert wurde. Sie können beispielsweise nicht zwischen x86 und x64 replizieren. Es würde Amazon auch daran hindern, sein PostgreSQL frei an seine Bedürfnisse anzupassen.
Dies funktioniert auch umgekehrt. Sie können nicht migrierenausRDS verwendet Streaming-Replikation. Wenn Sie also eine große, stark ausgelastete Datenbank in RDS haben, wird es sehr schwierig sein, sie ohne große Ausfallzeiten wieder herauszuholen.
Ehrlich gesagt, wenn Sie bereits Ihre eigene Datenbank betreiben, sehe ich keinen Sinn in RDS. Es ist teuer und nimmt Ihnen die meiste Kontrolle über Ihre Daten. (Beachten Sie jedoch, dass ich für ein anderes Unternehmen im Bereich PostgreSQL-Dienste arbeite, meine Meinung muss also unter diesem Gesichtspunkt betrachtet werden.)
DukönnteSie können eine Replikationslösung eines Drittanbieters wie Londiste, Bucardo oder Slony-I verwenden, um Ihre Datenbank auf RDS zu replizieren. Ich habe keines dieser Tools mit RDS ausprobiert und vermute, dass sie nicht funktionieren, da Erweiterungen installiert, Ticker-Daemons ausgeführt usw. werden müssen. Möglicherweise können Sie dies mit einem EC2-Knoten tun, aber es wäre kompliziert und schwierig, es richtig zu machen.