Einen Shard in eine DB-Shard-Gruppe aufteilen - Amazon Aurora

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.

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 Der rds_superuser hat dieses Recht; daher hat es auch der Masterbenutzer. Er rds_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 to username;
  • 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

rds_aurora.limitless_enable_auto_scale

on

rds_aurora.limitless_auto_scale_options

Entweder oder split_shard add_router,split_shard

rds_aurora.limitless_finalize_split_shard_mode

Dieser Parameter bestimmt, wie vom System initiierte Shard-Splits abgeschlossen werden. Der Wert kann eine der folgenden Formen annehmen:

  • user_initiated— Sie entscheiden, wann der Shard-Split abgeschlossen werden soll. Dies ist der Standardwert.

  • immediate— Shard-Splits werden sofort abgeschlossen.

Weitere Informationen finden Sie unter Shard-Splits werden abgeschlossen.

Anmerkung

Dieser 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. Das message Feld enthält die Instanz-ID des neuen Shards.

  • FAILED— Der Shard-Split-Job ist fehlgeschlagen. Das message 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 setzenimmediate, geschieht dies sofort.

  • Wenn Sie den Wert auf setzenuser_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.