Fractionnement d’une partition dans un groupe de partitions de base de données - Amazon Aurora

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.

Fractionnement d’une partition dans un groupe de partitions de base de données

Vous pouvez fractionner manuellement une partition d’un groupe de partitions de base de données en deux partitions plus petites. C’est ce qu’on appelle un fractionnement de partition initiée par l’utilisateur.

Aurora PostgreSQL Limitless Database peut également fractionner des partitions lorsqu’elles contiennent un volume de données très important ou lorsqu’elles sont fortement sollicitées. C’est ce qu’on appelle un fractionnement de partition initiée par le système.

Prérequis

Les fractionnements de partitions initiés par l’utilisateur sont soumis 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 partitionnée.

  • Un utilisateur doit disposer du privilège rds_aurora_limitless_cluster_admin. Ce privilège est détenu par le rôle rds_superuser ; il est donc également accordé à l’utilisateur principal. Le rds_superuser peut 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 to username;
  • Vous devez connaître l’ID du sous-cluster (nœud) de la partition que vous souhaitez fractionner. Vous pouvez identifier les 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 fractionnements de partitions initiés par le système, configurez les paramètres suivants du cluster de bases de données dans un groupe de paramètres personnalisé associé à votre cluster de bases de données :

Paramètre Valeur

rds_aurora.limitless_enable_auto_scale

on

rds_aurora.limitless_auto_scale_options

split_shard ou add_router,split_shard

rds_aurora.limitless_finalize_split_shard_mode

Ce paramètre détermine la manière dont les fractionnements de partitions initiées par le système sont finalisés. La valeur peut être l’une des suivantes :

  • user_initiated : vous décidez quand finaliser le fractionnement de partitions. C’est la valeur par défaut.

  • immediate : les fractionnements de partitions sont finalisés immédiatement.

Pour plus d’informations, consultez Finalisation des fractionnements de partitions.

Note

Ce paramètre s’applique uniquement aux fractionnements de partitions initiés par le système.

Pour plus d’informations, consultez Groupes de paramètres de cluster de bases de données pour les clusters de bases de données Amazon Aurora.

Fractionnement d’une partition

Pour fractionner une partition dans un groupe de partitions de base de données, utilisez la fonction rds_aurora.limitless_split_shard. Cette fonction lance une tâche de fractionnement de partition qui s’exécute de manière asynchrone.

SELECT rds_aurora.limitless_split_shard('subcluster_id');

Une fois la tâche soumise avec succès, attendez que l’ID de tâche soit renvoyé, par exemple :

SELECT rds_aurora.limitless_split_shard('3'); job_id --------------- 1691300000000 (1 row)
Note

Les opérations simultanées de fractionnement de partition ne sont pas prises en charge. Effectuez chaque opération l’une après l’autre, en veillant à finaliser une opération avant d’en initier une nouvelle.

Suivi des fractionnements de partitions

Vous pouvez utiliser l’ID de tâche pour suivre une tâche de fractionnement de partition. 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);

Exemples :

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 génère une erreur si la tâche spécifiée en entrée n’existe pas.

SELECT * from rds_aurora.limitless_list_shard_scale_jobs(1691300000001); ERROR: no job found with the job ID provided

Vous pouvez suivre l’état de toutes les tâches de fractionnement de partition en utilisant la même requête sans ID 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)

La tâche peut présenter l’un des états suivants :

  • IN_PROGRESS : la tâche de fractionnement de partition a été soumise et est en cours. Une seule tâche peut être en cours d’exécution à la fois.

  • PENDING : la tâche de fractionnement de partition attend que vous la finalisiez. Pour plus d’informations, consultez Finalisation des fractionnements de partitions.

  • CANCELLATION_IN_PROGRESS : la tâche de fractionnement de partition est annulée par l’utilisateur.

  • CANCELED : la tâche de fractionnement de partition a été annulée par l’utilisateur ou le système.

  • SUCCESS : la tâche de fractionnement de partition s’est terminée avec succès. Le champ message contient l’ID d’instance de la nouvelle partition.

  • FAILED : la tâche de fractionnement de partition a échoué. Le champ message contient les détails de l’échec et toutes les actions qui peuvent être prises en conséquence.

Finalisation des fractionnements de partitions

La finalisation est la dernière étape du processus de fractionnement de partition. Cela peut engendrer une période d’indisponibilité. Si vous démarrez une tâche de fractionnement de partition, la finalisation est effectuée immédiatement une fois la tâche terminée.

Parfois, le système fractionne les partitions en fonction de la charge de travail, lorsque vous avez activé les fractionnements de partitions initiés par le système à l’aide du paramètre rds_aurora.limitless_enable_auto_scale.

Dans ce cas, vous pouvez décider si la finalisation doit avoir lieu immédiatement ou au moment de votre choix. Le paramètre rds_aurora.limitless_finalize_split_shard_mode de cluster de bases de données vous permet de définir quand cette opération a lieu :

  • Si vous définissez la valeur sur immediate, la finalisation se produit immédiatement.

  • Si vous définissez la valeur sur user_initiated, vous devez finaliser la tâche de fractionnement de partition manuellement.

    Un événement RDS vous est envoyé et l’état de la tâche de fractionnement de partition est défini sur PENDING.

Lorsque ce paramètre est défini sur user_initiated, vous utilisez la fonction rds_aurora.limitless_finalize_split_shard pour finaliser la tâche de fractionnement de partition :

SELECT * FROM rds_aurora.limitless_finalize_split_shard(job_id);
Note

Cette fonction s’applique uniquement aux fractionnements de partitions initiés par le système, et non par vous.

Annulation d’un fractionnement de partition

Les fractionnements de partitions initiés par l’utilisateur ou par le système IN_PROGRESS ou PENDING peuvent être annulés. Vous avez besoin de l’ID de la tâche pour pouvoir 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 tâches.