Dividere uno shard in un gruppo di shard DB - Amazon Aurora

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.

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_superuserHa questo privilegio, quindi lo possiede anche l'utente principale. rds_superuserPossono 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 to username;
  • È 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

rds_aurora.limitless_enable_auto_scale

on

rds_aurora.limitless_auto_scale_options

O split_shard add_router,split_shard

rds_aurora.limitless_finalize_split_shard_mode

Questo parametro determina come vengono finalizzate le suddivisioni degli shard avviate dal sistema. Il valore può essere uno dei seguenti:

  • user_initiated— Siete voi a decidere quando finalizzare lo shard split. Si tratta del valore di default.

  • immediate— Le divisioni degli shard vengono finalizzate immediatamente.

Per ulteriori informazioni, consulta Finalizzazione delle suddivisioni degli shard.

Nota

Questo 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. Il message campo contiene l'ID dell'istanza del nuovo shard.

  • FAILED— Il processo shard-Split non è riuscito. Il message 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 suimmediate, ciò avviene immediatamente.

  • Se si imposta il valore suuser_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.