Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Division d'une partition dans un groupe de partitions de base de données
Vous pouvez diviser manuellement une partition d'un groupe de partitions de base de données en deux partitions plus petites. C'est ce qu'on appelle une division de partition initiée par l'utilisateur.
La base de données Aurora PostgreSQL Limitless peut également diviser des partitions lorsqu'elles contiennent de très grandes quantités de données ou lorsqu'elles sont très utilisées. C'est ce que l'on appelle une division de partition initiée par le système.
Rubriques
Prérequis
Les divisions de partition initiées par l'utilisateur répondent aux conditions préalables suivantes :
-
Vous devez disposer d'un groupe de partitions de base de données.
-
Le groupe de partitions de base de données ne peut pas être vide : il doit contenir au moins une table fragmentée.
-
Un utilisateur doit disposer de
rds_aurora_limitless_cluster_admin
ce privilège. Ilrds_superuser
possède ce privilège ; par conséquent, l'utilisateur principal l'a également. Ilsrds_superuser
peuvent accorder le privilège à d'autres utilisateurs :/* Logged in as the master user or a user with rds_superuser privileges */ CREATE USER
username
; GRANT rds_aurora_limitless_cluster_admin tousername
; -
Vous devez connaître l'ID du sous-cluster (nœud) de la partition que vous souhaitez scinder. Vous pouvez obtenir l'ID à l'aide de la requête suivante :
SELECT * FROM rds_aurora.limitless_subclusters; subcluster_id | subcluster_type ---------------+----------------- 1 | router 2 | router 3 | shard 4 | shard 5 | shard 6 | shard
Pour activer les divisions de partitions initiées par le système, définissez les paramètres de cluster de base de données suivants dans un groupe de paramètres de cluster de base de données personnalisé associé à votre cluster de bases de données :
Paramètre | Valeur |
---|---|
|
|
|
L'un |
|
Ce paramètre détermine la manière dont les divisions de partitions initiées par le système sont finalisées. La valeur peut être l'une des suivantes :
Pour de plus amples informations, veuillez consulter Finalisation de la division des partitions. NoteCe paramètre s'applique uniquement aux divisions de partitions initiées par le système. |
Pour de plus amples informations, veuillez consulter Groupes de paramètres de cluster de base de données pour les clusters de bases de données Amazon Aurora.
Fractionnement d'une partition
Pour diviser une partition dans un groupe de partitions de base de données, utilisez la rds_aurora.limitless_split_shard
fonction. Cette fonction lance une tâche de division de partitions qui s'exécute de manière asynchrone.
SELECT rds_aurora.limitless_split_shard('
subcluster_id
');
Attendez le retour d'un identifiant de tâche une fois la soumission réussie de la tâche, par exemple :
SELECT rds_aurora.limitless_split_shard('3'); job_id --------------- 1691300000000 (1 row)
Note
Les opérations simultanées de division de partition ne sont pas prises en charge. Exécutez chaque opération de manière séquentielle et terminez chaque opération avant de lancer une autre opération d'ajout.
Suivi des divisions de partitions
Vous pouvez utiliser l'ID de tâche pour suivre une tâche divisée en plusieurs parties. Pour décrire une tâche particulière et obtenir plus de détails à son sujet, exécutez la requête suivante :
SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(
job_id
);
Par exemple :
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 requête renvoie une erreur lorsque vous transmettez une tâche inexistante en entrée.
SELECT * from rds_aurora.limitless_list_shard_scale_jobs(1691300000001); ERROR: no job found with the job ID provided
Vous pouvez suivre le statut de toutes les tâches partagées en utilisant la même requête sans identifiant de tâche, par exemple :
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)
Le statut du poste peut être l'un des suivants :
-
IN_PROGRESS
— La tâche partagée a été soumise et est en cours. Vous ne pouvez avoir qu'une seule tâche en cours à la fois. -
PENDING
— Le job shard-split attend que vous le finalisiez. Pour de plus amples informations, veuillez consulter Finalisation de la division des partitions. -
CANCELLATION_IN_PROGRESS
— La tâche partagée est annulée par l'utilisateur. -
CANCELED
— La tâche partagée a été annulée avec succès par l'utilisateur ou par le système. -
SUCCESS
— La tâche de division des partitions s'est terminée avec succès. Lemessage
champ contient l'ID d'instance de la nouvelle partition. -
FAILED
— La tâche de partage a échoué. Lemessage
champ contient les détails de l'échec et toutes les actions qui peuvent être entreprises à la suite de l'échec de la tâche.
Finalisation de la division des partitions
La finalisation est la dernière étape du processus de division des partitions. Cela entraîne des temps d'arrêt. Si vous démarrez une tâche divisée en partitions, la finalisation se fait immédiatement une fois la tâche terminée avec succès.
Parfois, le système divise les partitions en fonction de la charge de travail, lorsque vous avez activé les divisions de partitions initiées par le système à l'aide du paramètre. rds_aurora.limitless_enable_auto_scale
Dans ce cas, vous pouvez choisir si la finalisation a lieu immédiatement ou au moment que vous choisissez. Vous utilisez le paramètre de rds_aurora.limitless_finalize_split_shard_mode
cluster de base de données pour choisir le moment où cela se produit :
-
Si vous définissez la valeur sur
immediate
, cela se produit immédiatement. -
Si vous définissez la valeur sur
user_initiated
, vous devez finaliser le travail de division des partitions manuellement.Un événement RDS vous est envoyé et le statut de la tâche de partage est défini sur.
PENDING
Lorsque ce paramètre est défini suruser_initiated
, vous utilisez la rds_aurora.limitless_finalize_split_shard
fonction pour finaliser le travail de division des partitions :
SELECT * FROM rds_aurora.limitless_finalize_split_shard(
job_id
);
Note
Cette fonction s'applique uniquement aux divisions de partitions initiées par le système, et non par vous.
Annulation d'un partage
Vous pouvez annuler une division de partition initiée par l'utilisateur ou par le système qui est ou. IN_PROGRESS
PENDING
Vous avez besoin de l'identifiant de la tâche pour l'annuler.
SELECT * from rds_aurora.limitless_cancel_shard_scale_jobs(
job_id
);
Aucune sortie n'est renvoyée sauf en cas d'erreur. Vous pouvez suivre l'annulation à l'aide d'une requête de suivi des offres d'emploi.