División de una partición en un grupo de particiones de base de datos - Amazon Aurora

División de una partición en un grupo de particiones de base de datos

Puede dividir manualmente una partición de un grupo de particiones de base de datos en dos particiones más pequeñas. Esto se denomina división de particiones iniciada por el usuario.

Base de datos ilimitada de Aurora PostgreSQL también puede dividir las particiones si contienen grandes cantidades de datos o se usan con mucha frecuencia. Esto se denomina división de particiones iniciada por el sistema.

Requisitos previos

Las divisiones de particiones iniciadas por el usuario tienen los siguientes requisitos previos:

  • Debe tener un grupo de particiones de base de datos.

  • El grupo de particiones de base de datos no puede estar vacío: debe contener al menos una tabla particionada.

  • Un usuario debe tener el privilegio rds_aurora_limitless_cluster_admin. El rds_superuser tiene este privilegio; por lo tanto, el usuario maestro también lo tiene. El rds_superuser puede conceder el privilegio a otros usuarios:

    /* Logged in as the master user or a user with rds_superuser privileges */ CREATE USER username; GRANT rds_aurora_limitless_cluster_admin to username;
  • Debe conocer el ID del subclúster (nodo) de la partición que desea dividir. Puede obtener el ID realizando la siguiente consulta:

    SELECT * FROM rds_aurora.limitless_subclusters; subcluster_id | subcluster_type ---------------+----------------- 1 | router 2 | router 3 | shard 4 | shard 5 | shard 6 | shard

Para habilitar la división de particiones iniciada por el sistema, debe establecer los siguientes parámetros de clúster de base de datos en un grupo de parámetros de clúster de base de datos personalizado asociado a su clúster de base de datos:

Parámetro Valor

rds_aurora.limitless_enable_auto_scale

on

rds_aurora.limitless_auto_scale_options

Indique split_shard o add_router,split_shard

rds_aurora.limitless_finalize_split_shard_mode

Esta parámetro determina cómo finalizan las divisiones de particiones iniciadas por el sistema. El valor puede ser uno de los siguientes:

  • user_initiated: usted decide cuándo debe finalizar la división de particiones. Este es el valor predeterminado.

  • immediate: las divisiones de particiones finalizan de inmediato.

Para obtener más información, consulte Finalización de las divisiones de particiones.

nota

Este parámetro solo se aplica a divisiones de particiones iniciadas por el sistema.

Para obtener más información, consulte Grupos de parámetros de clústeres de base de datos para clústeres de base de datos en Amazon Aurora.

División de una partición

Para dividir una partición en un grupo de particiones de base de datos, utilice la función rds_aurora.limitless_split_shard. Esta función inicia un trabajo de división de particiones que se ejecuta de forma asíncrona.

SELECT rds_aurora.limitless_split_shard('subcluster_id');

Espere a que se devuelva el ID del trabajo cuando el trabajo se haya enviado correctamente, por ejemplo:

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

Seguimiento de divisiones de particiones

Puede usar el ID del trabajo para realizar el seguimiento de un trabajo de división de particiones. Para describir un trabajo en particular y obtener más detalles sobre él, ejecute la siguiente consulta:

SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(job_id);

Por ejemplo:

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 consulta devuelve un error cuando se pasa un trabajo inexistente como entrada.

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

Puede realizar un seguimiento del estado de todos los trabajos de división de particiones con la misma consulta sin un ID de trabajo, por ejemplo:

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)

El estado del trabajo puede ser uno de los siguientes:

  • IN_PROGRESS: el trabajo de división de particiones se ha enviado y está en curso. Solo puede tener un trabajo en curso a la vez.

  • PENDING: el trabajo de división de particiones está esperando a que lo finalice. Para obtener más información, consulte Finalización de las divisiones de particiones.

  • CANCELLATION_IN_PROGRESS: el usuario está cancelando el trabajo de división de particiones.

  • CANCELED: el usuario o el sistema han cancelado correctamente el trabajo de división de particiones.

  • SUCCESS: el trabajo de división de particiones se ha completado correctamente. El campo message contiene el ID de instancia de la nueva partición.

  • FAILED: el trabajo de división de particiones ha fallado. El campo message contiene los detalles del error y cualquier acción que se pueda tomar como seguimiento del trabajo fallido.

Finalización de las divisiones de particiones

La finalización es el último paso del proceso de división de particiones. Esta tarea provoca algunos tiempos de inactividad. Si inicia un trabajo de división de particiones, la finalización se produce inmediatamente después de que el trabajo se complete correctamente.

A veces, el sistema divide las particiones en función de la carga de trabajo, cuando activa las divisiones de particiones iniciadas por el sistema con el parámetro rds_aurora.limitless_enable_auto_scale.

En este caso, puede elegir si quiere que la finalización se produzca inmediatamente o en el momento que desee. Utilice el parámetro de clúster de bases de datos rds_aurora.limitless_finalize_split_shard_mode para elegir cuándo ocurrirá:

  • Si establece el valor en immediate, ocurrirá inmediatamente.

  • Si establece el valor en user_initiated, tendrá que finalizar el trabajo de división de particiones manualmente.

    Se le envía un evento de RDS y el estado del trabajo de división de particiones se establece en PENDING.

Cuando se establece en user_initiated, utiliza la función rds_aurora.limitless_finalize_split_shard para finalizar el trabajo de división de particiones:

SELECT * FROM rds_aurora.limitless_finalize_split_shard(job_id);
nota

Esta función solo se aplica a las divisiones de particiones iniciadas por el sistema, no por usted.

Cancelación de la división de particiones

Puede cancelar una división de particiones iniciada por el usuario o por el sistema, es decir, IN_PROGRESS o PENDING. Para cancelarlo, necesita el ID del trabajo.

SELECT * from rds_aurora.limitless_cancel_shard_scale_jobs(job_id);

No se devuelve ningún resultado a menos que haya un error. Puede hacer un seguimiento de la cancelación mediante una consulta de seguimiento del trabajo.