Zeitpunktgesteuerte Wiederherstellung
IBM Cloud® Databases for PostgreSQL bietet eine zeitpunktgesteuerte Wiederherstellung (Point-in-Time Recovery, PITR) für jeden beliebigen Zeitpunkt während der letzten sieben Tage. Die Bereitstellung führt kontinuierliche inkrementelle Sicherungen durch und kann Transaktionen wiederholen, um eine neue Bereitstellung, die aus einer Sicherung wiederhergestellt wird, auf den gewünschten Punkt in diesem 7-Tage-Fenster zu bringen.
Auf der Registerkarte " Sichern und Wiederherstellen " der Benutzeroberfläche Ihrer Bereitstellung finden Sie alle PITR-Informationen unter "Point-in-Time-Recovery".
In PostgreSQL Version 13 und höher schlägt Ihre Zurückschreibung bei einer Zurückschreibung an einen bestimmten Punkt innerhalb der letzten sieben Tage mit einer Zurückschreibungszeit nach der letzten Transaktion mit der Nachricht recovery ended before configured recovery target is reached
fehl. Vor PostgreSQL v13wird beim Zurückschreiben an einen bestimmten Punkt innerhalb der letzten sieben Tage mit einem Zurückschreibungszeitpunkt nach der letzten Transaktion der letzte Zurückschreibungspunkt verwendet. Wenn Ihre Zurückschreibung
aus diesem Grund fehlschlägt, Restore to last available point
oder wählen Sie ein früheres Datum/eine frühere Zeit für Restore to a specific point in the last 7 days
aus.
Zu den enthaltenen Informationen gehört auch der früheste Zeitpunkt für eine PITR. Verwenden Sie den Befehl cdb postgresql earliest-pitr-timestamp
um den frühesten Wiederherstellungspunkt über die Befehlszeilenschnittstelle zu ermitteln.
ibmcloud cdb postgresql earliest-pitr-timestamp <INSTANCE_NAME_OR_CRN>
Verwenden Sie den Endpunkt /deployments/{id}/point_in_time_recovery_data
, um den frühesten Wiederherstellungspunkt über die API zu ermitteln.
{
"point_in_time_recovery_data": {
"earliest_point_in_time_recovery_time": "2019-09-09T23:16:00Z"
}
}
Wiederherstellung
Sicherungen werden in einer neuen Bereitstellung wiederhergestellt. Wenn die Bereitstellung vollständig eingerichtet ist, werden Ihre Daten aus der Sicherungsdatei in die neue Bereitstellung zurückgeschrieben. Sicherungen sind auch über Konten wiederherstellbar, jedoch nur über die API und nur dann, wenn der Benutzer, der die Wiederherstellung durchführt, Zugriff auf das Quellen- und das Zielkonto hat.
Standardmäßig wird die neue Bereitstellung automatisch auf dieselbe Festplatten- und Speicherzuweisung wie die Quellenbereitstellung zum Zeitpunkt der Sicherung, von der Sie wiederherstellen, skaliert. Dies gilt insbesondere für PITR, die möglicherweise nicht die aktuelle Größe Ihrer Implementierung ist. Wenn Sie die Ressourcen anpassen müssen, die der neuen Bereitstellung zugeordnet werden, verwenden Sie die optionalen Felder in der Benutzerschnittstelle, Befehlszeilenschnittstelle oder API, um die Größe der neuen Bereitstellung zu ändern. Vergewissern Sie sich, dass die Größe der Zuordnung für Ihre Daten und Ihre Workload ausreicht. Wenn der Bereitstellung nicht ausreichend Ressourcen zugewiesen werden, schlägt die Wiederherstellung fehl.
Während Speicher und Hauptspeicher wie in der Quellenbereitstellung wiederhergestellt werden, werden spezielle Instanzkonfigurationen nicht automatisch für die neue Instanz definiert. In diesem Fall müssen Sie nach einer Wiederherstellung die Konfiguration möglicherweise erneut ausführen. Notieren Sie alle Instanzänderungen vor der Ausführung der Wiederherstellung (Parameter wie shared_buffers, max_connections, deadlock_timeout, archive_timeout usw.), um sicherzustellen, dass die Instanz nach Abschluss der Wiederherstellung korrekt eingestellt wird.
Die Quellenbereitstellung darf nicht gelöscht werden, während die Sicherung wiederhergestellt wird. Sie müssen warten, bis die neue Bereitstellung eingerichtet ist und die Sicherung wiederhergestellt wurde, bevor Sie die alte Bereitstellung löschen. Beim Löschen einer Bereitstellung werden auch die Sicherungen gelöscht, so dass nicht nur die Wiederherstellung fehlschlägt, sondern auch die Sicherungen möglicherweise nicht wiederhergestellt werden können.
Wiederherstellung in der Benutzerschnittstelle
Um eine PITR zu starten, geben Sie die Zeit ein, zu der die Wiederherstellung in koordinierter Weltzeit erfolgen soll. Wenn Sie den letzten möglichen Zeitpunkt wiederherstellen möchten, wählen Sie diese Option aus. Wenn Sie auf die Schaltfläche Wiederherstellen klicken, wird die neue Bereitstellungsoberfläche in einer Registerkarte mit den Optionen für Ihre Wiederherstellung angezeigt. Geben Sie die Details des Dienstes ein, weisen Sie Ressourcen zu und legen Sie die Datenbankversion, die Verschlüsselung und den Endpunkt für Ihren neuen Einsatz fest. Klicken Sie auf Point in time recovery, um den Vorgang zu starten.
Wenn Sie Key Protect verwenden und einen Schlüssel haben, müssen Sie die CLI zur Wiederherstellung verwenden.
Wiederherstellung in der CLI
Der Resource Controller unterstützt die Einrichtung von Datenbankbereitstellungen und für das Einrichten und Wiederherstellen ist die Resource Controller CLI zuständig. Verwenden Sie den Befehl resource service-instance-create
.
Verwenden Sie bei PITR die Parameter point_in_time_recovery_time
und point_in_time_recovery_deployment_id
. point_in_time_recovery_deployment_id
ist die ID der Quellenimplementierung und point_in_time_recovery_time
ist die Zeitmarke in koordinierter Weltzeit, in der die Wiederherstellung erfolgen soll. Um den neuesten verfügbaren Zeitpunkt wiederherzustellen, verwenden Sie "point_in_time_recovery_time":" "
.
ibmcloud resource service-instance-create <databases-for-postgresql> <INSTANCE_NAME> <REGION> -p '{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP", "version":" "}'
Ein vorformatierter Befehl für eine bestimmte Sicherung oder PITR ist in der Detailansicht der Sicherung verfügbar.
Bei der Wiederherstellung über die Befehlszeilenschnittstelle sind optionale Parameter verfügbar. Verwenden Sie diese zum Anpassen von Ressourcen oder verwenden Sie einen Key Protect-Schlüssel für die BYOK-Verschlüsselung in der neuen Implementierung.
ibmcloud resource service-instance-create <databases-for-postgresql> <INSTANCE_NAME> standard <REGION> <--service-endpoints SERVICE_ENDPOINTS_TYPE> -p
'{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP","key_protect_key":"KEY_PROTECT_KEY_CRN", "members_disk_allocation_mb":"DESIRED_DISK_IN_MB", "members_memory_allocation_mb":"DESIRED_MEMORY_IN_MB", "members_cpu_allocation_count":"NUMBER_OF_CORES", "version":" "}'
Wiederherstellung in der API
Der Resource Controller unterstützt die Einrichtung von Datenbankbereitstellungen und für das Einrichten und Wiederherstellen ist die Resource Controller API zuständig. Sie müssen die erforderlichen Schritte ausführen, um die Resource Controller API zu verwenden, bevor Sie sie für die Wiederherstellung einer Sicherung verwenden können.
Sobald alle Informationen vorhanden sind, handelt es sich bei der Erstellungsanforderung um eine POST
-Anforderung an den Endpunkt /resource_instances
.
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<INSTANCE_NAME_OR_CRN>",
"target": "<REGION>",
"resource_group": "<RESOURCE_GROUP>",
"resource_plan_id": "<SERVICE_ID>"
"point_in_time_recovery_time":"<TIMESTAMP>",
"point_in_time_recovery_deployment_id":"<DEPLOYMENT_ID>"
}'
Die Parameter name
, target
, resource_group
und resource_plan_id
sind erforderlich. target
ist die Region, in der sich die neue Bereitstellung befinden soll. Dies kann eine andere
Region als die Quellenbereitstellung sein. Regionsübergreifende Wiederherstellungen werden unterstützt, mit Ausnahme der Wiederherstellung einer eu-de
-Sicherung in einer anderen Region.
Verwenden Sie bei PITR die Parameter point_in_time_recovery_time
und point_in_time_recovery_deployment_id
. point_in_time_recovery_deployment_id
ist die ID der Quellenimplementierung und point_in_time_recovery_time
ist die Zeitmarke in koordinierter Weltzeit, in der die Wiederherstellung erfolgen soll. Um den neuesten verfügbaren Zeitpunkt wiederherzustellen, verwenden Sie "point_in_time_recovery_time":" "
.
Wenn Sie Ressourcen anpassen oder einen Key Protect-Schlüssel verwenden müssen, müssen Sie die optionalen Parameter key_protect_key
, members_disk_allocation_mb
, members_memory_allocation_mb
, und/oder
members_cpu_allocation_count
und ihre Werte zum Hauptteil der Anforderung hinzufügen.
PITR überprüfen
Überprüfen Sie die Datenbankprotokolle, um die korrekte Wiederherstellungszeit zu überprüfen. Zur Prüfung der Datenbankprotokolle muss die Protokollierungsintegration für Ihre Bereitstellung konfiguriert sein.
Wenn Sie eine Wiederherstellung durchführen, werden Ihre Daten aus der neuesten Teilsicherung zurückgeschrieben. Alle ausstehenden Transaktionen aus dem WAL-Protokoll werden verwendet, um Ihre Datenbank bis zu dem Zeitpunkt wiederherzustellen, zu dem Sie zurückgeschrieben haben. Wenn die Wiederherstellung abgeschlossen ist und die Transaktionen ausgeführt wurden, wird in den Protokollen eine Nachricht angezeigt. Sie können mit folgendem Befehl überprüfen, ob Ihre Protokolle die Meldung enthalten:
LOG: last completed transaction was at log time 2019-09-03 19:40:48.997696+00
Es gibt zwei Szenarios, in denen die Wiederherstellung in den Protokollen nicht angezeigt wird.
- Ihre Bereitstellung verfügt bereits über eine aktuelle vollständige Sicherung und es gibt Aktivität, die nach der Sicherung ausgeführt wurde und wiedergegeben werden muss.
- Wenn Sie eine Zeit für die Wiederherstellung eingegeben haben, die einen späteren Zeitpunkt als die aktuelle Zeit oder als der letzte verfügbare PITR-Punkt angibt.
In beiden Fällen ist die Wiederherstellung in der Regel erfolgreich, aber es gibt keinen Eintrag in den Protokollen, um die genaue Zeit zu überprüfen, in der die Datenbank wiederhergestellt wurde.