Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Dividere uno shard in un gruppo di shard DB
È possibile dividere manualmente uno shard in un gruppo di shard DB in due shard più piccoli. Questa operazione è denominata divisione dello shard avviata dall'utente.
Aurora Postgre SQL Limitless Database può anche dividere gli shard quando hanno grandi quantità di dati o un utilizzo molto elevato. Questa operazione è denominata divisione dello shard avviata dal sistema.
Argomenti
Prerequisiti
Gli shard split avviati dall'utente hanno i seguenti prerequisiti:
-
È necessario disporre di un gruppo di shard DB.
-
Il gruppo di shard DB non può essere vuoto: deve contenere almeno una tabella condivisa.
-
Un utente deve avere il privilegio.
rds_aurora_limitless_cluster_admin
rds_superuser
Ha questo privilegio, quindi lo possiede anche l'utente principale.rds_superuser
Possono concedere il privilegio ad altri utenti:/* Logged in as the master user or a user with rds_superuser privileges */ CREATE USER
username
; GRANT rds_aurora_limitless_cluster_admin tousername
; -
È necessario conoscere l'ID del sottocluster (nodo) dello shard che si desidera dividere. È possibile ottenere l'ID utilizzando la seguente query:
SELECT * FROM rds_aurora.limitless_subclusters; subcluster_id | subcluster_type ---------------+----------------- 1 | router 2 | router 3 | shard 4 | shard 5 | shard 6 | shard
Per abilitare le suddivisioni degli shard avviate dal sistema, impostate i seguenti parametri del cluster DB in un gruppo di parametri del cluster DB personalizzato associato al cluster DB:
Parametro | Valore |
---|---|
|
|
|
O |
|
Questo parametro determina come vengono finalizzate le suddivisioni degli shard avviate dal sistema. Il valore può essere uno dei seguenti:
Per ulteriori informazioni, consulta Finalizzazione delle suddivisioni degli shard. NotaQuesto parametro si applica solo alle suddivisioni di shard avviate dal sistema. |
Per ulteriori informazioni, consulta Gruppi di parametri del cluster DB per i cluster Amazon Aurora DB.
Dividere uno shard
Per dividere uno shard in un gruppo di shard DB, usa la funzione. rds_aurora.limitless_split_shard
Questa funzione avvia un processo shard-split che viene eseguito in modo asincrono.
SELECT rds_aurora.limitless_split_shard('
subcluster_id
');
Attendi la restituzione di un ID di lavoro dopo l'invio corretto del lavoro, ad esempio:
SELECT rds_aurora.limitless_split_shard('3'); job_id --------------- 1691300000000 (1 row)
Monitoraggio delle divisioni degli shard
È possibile utilizzare l'ID del lavoro per tenere traccia di un lavoro suddiviso in frammenti. Per descrivere un particolare lavoro e ottenere maggiori dettagli al riguardo, esegui la seguente query:
SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(
job_id
);
Per esempio:
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)
La query restituisce un errore quando si passa un lavoro inesistente come input.
SELECT * from rds_aurora.limitless_list_shard_scale_jobs(1691300000001); ERROR: no job found with the job ID provided
È possibile tenere traccia dello stato di tutti i job suddivisi in shard-split utilizzando la stessa query senza un ID di lavoro, ad esempio:
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)
Lo stato del lavoro può essere uno dei seguenti:
-
IN_PROGRESS
— Il lavoro frazionato è stato inviato ed è in corso. È possibile avere un solo lavoro in corso alla volta. -
PENDING
— Il lavoro shard-split sta aspettando che tu lo finalizzi. Per ulteriori informazioni, consulta Finalizzazione delle suddivisioni degli shard. -
CANCELLATION_IN_PROGRESS
— Il lavoro shard-Split viene annullato dall'utente. -
CANCELED
— Il lavoro shard-Split è stato annullato con successo dall'utente o dal sistema. -
SUCCESS
— Il lavoro shard-Split è stato completato correttamente. Ilmessage
campo contiene l'ID dell'istanza del nuovo shard. -
FAILED
— Il processo shard-Split non è riuscito. Ilmessage
campo contiene i dettagli dell'errore e tutte le azioni che possono essere intraprese in seguito al processo fallito.
Finalizzazione delle suddivisioni degli shard
La finalizzazione è l'ultima fase del processo di suddivisione degli shard-split. Ciò causa alcuni tempi di inattività. Se si avvia un lavoro suddiviso in frammenti, la finalizzazione avviene immediatamente dopo il completamento corretto del lavoro.
A volte il sistema divide gli shard in base al carico di lavoro, se avete abilitato le suddivisioni di shard avviate dal sistema utilizzando il parametro. rds_aurora.limitless_enable_auto_scale
In questo caso, puoi scegliere se la finalizzazione avvenga immediatamente o in un momento a tua scelta. Utilizzate il parametro del cluster rds_aurora.limitless_finalize_split_shard_mode
DB per scegliere quando ciò avviene:
-
Se si imposta il valore su
immediate
, ciò avviene immediatamente. -
Se si imposta il valore su
user_initiated
, è necessario finalizzare manualmente il lavoro shard-split.Ti viene inviato un RDS evento e lo stato del processo shard-Split è impostato su.
PENDING
Quando è impostato suuser_initiated
, si utilizza la rds_aurora.limitless_finalize_split_shard
funzione per finalizzare il lavoro shard-Split:
SELECT * FROM rds_aurora.limitless_finalize_split_shard(
job_id
);
Nota
Questa funzione si applica solo agli shard split avviati dal sistema, non dall'utente.
Annullamento di uno shard split
È possibile annullare uno shard split avviato dall'utente o dal sistema che è o. IN_PROGRESS
PENDING
È necessario l'ID del lavoro per annullarlo.
SELECT * from rds_aurora.limitless_cancel_shard_scale_jobs(
job_id
);
Non viene restituito alcun output a meno che non si verifichi un errore. Puoi tenere traccia dell'annullamento utilizzando una query di tracciamento del lavoro.