Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einen Shard in eine DB-Shard-Gruppe aufteilen
Sie können einen Shard in einer DB-Shard-Gruppe manuell in zwei kleinere Shards aufteilen. Dies wird als vom Benutzer initiierter Shard-Split bezeichnet.
Aurora Postgre SQL Limitless Database kann auch Shards aufteilen, wenn sie sehr große Datenmengen haben oder sehr häufig genutzt werden. Dies wird als systeminitiierter Shard-Split bezeichnet.
Themen
Voraussetzungen
Benutzerinitiierte Shard-Splits haben die folgenden Voraussetzungen:
-
Sie müssen über eine DB-Shard-Gruppe verfügen.
-
Die DB-Shard-Gruppe darf nicht leer sein: Sie muss mindestens eine Shard-Tabelle enthalten.
-
Ein Benutzer muss das Privileg haben.
rds_aurora_limitless_cluster_admin
Derrds_superuser
hat dieses Recht; daher hat es auch der Masterbenutzer. Errds_superuser
kann das Privileg anderen Benutzern gewähren:/* Logged in as the master user or a user with rds_superuser privileges */ CREATE USER
username
; GRANT rds_aurora_limitless_cluster_admin tousername
; -
Sie müssen die Subcluster-ID (Node) des Shards kennen, den Sie aufteilen möchten. Sie können die ID mithilfe der folgenden Abfrage ermitteln:
SELECT * FROM rds_aurora.limitless_subclusters; subcluster_id | subcluster_type ---------------+----------------- 1 | router 2 | router 3 | shard 4 | shard 5 | shard 6 | shard
Um vom System initiierte Shard-Splits zu aktivieren, legen Sie die folgenden DB-Cluster-Parameter in einer benutzerdefinierten DB-Cluster-Parametergruppe fest, die Ihrem DB-Cluster zugeordnet ist:
Parameter | Wert |
---|---|
|
|
|
Entweder oder |
|
Dieser Parameter bestimmt, wie vom System initiierte Shard-Splits abgeschlossen werden. Der Wert kann eine der folgenden Formen annehmen:
Weitere Informationen finden Sie unter Shard-Splits werden abgeschlossen. AnmerkungDieser Parameter gilt nur für vom System initiierte Shard-Splits. |
Weitere Informationen finden Sie unter DB-Cluster-Parametergruppen für Amazon Aurora Aurora-DB-Cluster.
Einen Shard aufteilen
Verwenden Sie die Funktion, um einen Shard in eine DB-Shard-Gruppe aufzuteilen. rds_aurora.limitless_split_shard
Diese Funktion startet einen Shard-Split-Job, der asynchron ausgeführt wird.
SELECT rds_aurora.limitless_split_shard('
subcluster_id
');
Warten Sie nach erfolgreicher Übermittlung des Jobs auf die Rückgabe einer Job-ID, zum Beispiel:
SELECT rds_aurora.limitless_split_shard('3'); job_id --------------- 1691300000000 (1 row)
Shard-Splits verfolgen
Sie können die Job-ID verwenden, um einen Shard-Split-Job nachzuverfolgen. Führen Sie die folgende Abfrage aus, um einen bestimmten Job zu beschreiben und weitere Informationen dazu zu erhalten:
SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(
job_id
);
Beispielsweise:
SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(1691300000000); job_id | action | job_details | status | submission_time | message ---------------+-------------+-----------------------+---------+------------------------+------------------------------------------- 1691300000000 | SPLIT_SHARD | Split Shard 3 by User | SUCCESS | 2023-08-06 05:33:20+00 | Scaling job succeeded. + | | | | | New shard instance with ID 7 was created. (1 row)
Die Abfrage gibt einen Fehler zurück, wenn Sie einen nicht vorhandenen Auftrag als Eingabe übergeben.
SELECT * from rds_aurora.limitless_list_shard_scale_jobs(1691300000001); ERROR: no job found with the job ID provided
Sie können den Status aller Shard-Split-Jobs verfolgen, indem Sie dieselbe Abfrage ohne Job-ID verwenden, zum Beispiel:
SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(); job_id | action | job_details | status | submission_time | message ---------------+-------------+-----------------------+-------------+------------------------+-------------------------------------------------------------- 1691200000000 | SPLIT_SHARD | Split Shard 3 by User | IN_PROGRESS | 2023-08-05 01:46:40+00 | 1691300000000 | SPLIT_SHARD | Split Shard 4 by User | SUCCESS | 2023-08-06 05:33:20+00 | Scaling job succeeded. + | | | | | New shard instance with ID 7 was created. 1691400000000 | SPLIT_SHARD | Split Shard 5 by User | FAILED | 2023-08-07 09:20:00+00 | Error occurred for the add shard job 1691400000000. | | | | | Retry the command. If the issue persists, contact AWS Support. 1691500000000 | SPLIT_SHARD | Split Shard 5 by User | CANCELED | 2023-08-07 09:20:00+00 | Scaling job was cancelled. (4 rows)
Der Auftragsstatus kann einer der folgenden sein:
-
IN_PROGRESS
— Der Shard-Split-Job wurde eingereicht und ist in Bearbeitung. Sie können jeweils nur einen Job in Bearbeitung haben. -
PENDING
— Der Shard-Split-Job wartet darauf, dass Sie ihn abschließen. Weitere Informationen finden Sie unter Shard-Splits werden abgeschlossen. -
CANCELLATION_IN_PROGRESS
— Der Shard-Split-Job wird vom Benutzer abgebrochen. -
CANCELED
— Der Shard-Split-Job wurde vom Benutzer oder vom System erfolgreich abgebrochen. -
SUCCESS
— Der Shard-Split-Job wurde erfolgreich abgeschlossen. Dasmessage
Feld enthält die Instanz-ID des neuen Shards. -
FAILED
— Der Shard-Split-Job ist fehlgeschlagen. Dasmessage
Feld enthält die Einzelheiten des Fehlers und alle Maßnahmen, die als Folgemaßnahme zu dem fehlgeschlagenen Job ergriffen werden können.
Shard-Splits werden abgeschlossen
Das Finalisieren ist der letzte Schritt des Shard-Split-Prozesses. Es verursacht einige Ausfallzeiten. Wenn Sie einen Shard-Split-Job starten, erfolgt der Abschluss sofort, nachdem der Job erfolgreich abgeschlossen wurde.
Manchmal teilt das System Shards auf der Grundlage der Arbeitslast auf, wenn Sie systeminitiierte Shard-Splits mithilfe des Parameters aktiviert haben. rds_aurora.limitless_enable_auto_scale
In diesem Fall können Sie wählen, ob die Finalisierung sofort oder zu einem von Ihnen gewünschten Zeitpunkt erfolgt. Sie verwenden den rds_aurora.limitless_finalize_split_shard_mode
DB-Cluster-Parameter, um auszuwählen, wann dies geschehen soll:
-
Wenn Sie den Wert auf setzen
immediate
, geschieht dies sofort. -
Wenn Sie den Wert auf setzen
user_initiated
, müssen Sie den Shard-Split-Job manuell abschließen.Es wird ein RDS Ereignis an Sie gesendet, und der Status des Shard-Split-Jobs wird auf gesetzt.
PENDING
Wenn diese Einstellung auf gesetzt istuser_initiated
, verwenden Sie die rds_aurora.limitless_finalize_split_shard
Funktion, um den Shard-Split-Job abzuschließen:
SELECT * FROM rds_aurora.limitless_finalize_split_shard(
job_id
);
Anmerkung
Diese Funktion gilt nur für Shard-Splits, die vom System initiiert werden, nicht von Ihnen.
Einen Shard-Split stornieren
Sie können einen vom Benutzer oder vom System initiierten Shard-Split stornieren, der oder ist. IN_PROGRESS
PENDING
Sie benötigen die Job-ID, um ihn zu stornieren.
SELECT * from rds_aurora.limitless_cancel_shard_scale_jobs(
job_id
);
Es wird keine Ausgabe zurückgegeben, es sei denn, es liegt ein Fehler vor. Sie können die Kündigung mithilfe einer Job-Tracking-Abfrage verfolgen.