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.
Temas
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
. Elrds_superuser
tiene este privilegio; por lo tanto, el usuario maestro también lo tiene. Elrds_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 tousername
; -
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 |
---|---|
|
|
|
Indique |
|
Esta parámetro determina cómo finalizan las divisiones de particiones iniciadas por el sistema. El valor puede ser uno de los siguientes:
Para obtener más información, consulte Finalización de las divisiones de particiones. notaEste 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 campomessage
contiene el ID de instancia de la nueva partición. -
FAILED
: el trabajo de división de particiones ha fallado. El campomessage
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.