Redistribución de datos
La redistribución de datos, en la que los datos de los nodos existentes se asignan uniformemente a los nuevos nodos después de escalar un clúster, es una tarea que requiere mucho tiempo pero crucial que acelera la respuesta del servicio.
De forma predeterminada, la redistribución se inicia automáticamente después de la ampliación del clúster. Para una mayor confiabilidad, deshabilite la función de redistribución automática e inicie manualmente una tarea de redistribución después de que la ampliación se realice correctamente. De esta manera, tanto el escalado horizontal como la redistribución pueden ser reintentados en caso de fallas.
Actualmente, la redistribución sin conexión y la redistribución en línea son compatibles. El modo predeterminado es la redistribución sin conexión.
Antes de iniciar la redistribución o cuando la redistribución está en pausa, puede establecer prioridades de redistribución para las tablas que no se han redistribuido por esquema o tabla.
- La función de redistribución de clústeres se admite en versiones de clúster de 8.1.1.200 o posteriores.
- La programación sin conexión no se admite en 8.2.0 o posterior.
- Esta función sólo se puede activar manualmente cuando la información de la tarea del clúster muestra To be redistributed después de escalar horizontalmente.
- También puede seleccionar el modo de redistribución al configurar el escalamiento horizontal del clúster (consulte Configurar parámetros avanzados).
- Las colas de redistribución se ordenan según el tamaño de relpage de las tablas. Para asegurarse de que el tamaño de página es correcto, se recomienda realizar la operación ANALYZE en las tablas que se redistribuirán.
Redistribución sin conexión
Precauciones
- En el modo de redistribución sin conexión, la base de datos no admite operaciones de DDL y DCL. Las tablas que se están redistribuyendo solo admiten operaciones simples de DQL.
- Durante la redistribución de tablas, se agrega un bloqueo compartido a las tablas. Todas las operaciones de inserción, actualización y eliminación, así como las operaciones de DDL en las tablas, se bloquean durante mucho tiempo, lo que puede provocar un tiempo de espera de bloqueo. No realice consultas que tarden más de 20 minutos durante la redistribución (el tiempo predeterminado para solicitar el bloqueo de escritura durante la redistribución es de 20 minutos). De lo contrario, la redistribución de datos puede fallar debido al bloqueo de tiempo de espera.
Procedimiento
- Inicie sesión en la consola de gestión de GaussDB(DWS).
- Elija Clusters. Todos los clústeres se muestran de forma predeterminada.
- En la columna Operation del clúster de destino, elija More > Scale Node > Redistribute, como se muestra en la siguiente figura.
Se muestra la página Redistribution.
- En la página de Redistribute que se muestra, mantenga el modo de redistribución sin conexión predeterminado y haga clic en Next: Confirm para enviar la tarea.
Redistribución en línea
Precauciones
En el modo de redistribución en línea, la base de datos admite operaciones parciales de DDL y DCL.
- Las tablas que se están redistribuyendo admiten operaciones de inserción, eliminación y actualización y algunas operaciones de DDL. Se admiten las siguientes funciones:
- INSERT, DELETE, UPDATE, MERGE INTO, OVERWRITE, UPSERT
- Unir consultas a través de grupos de nodos
- Renombramiento de tablas locales, modificación de esquemas, DROP, TRUNCATE, TRUNCATE-PARTITION
- No se pueden realizar las siguientes operaciones en tablas que se están redistribuyendo:
- Ejecute sentencias ALTER TABLE (excepto TRUNCATE PARTITION), incluida la adición o eliminación de columnas o particiones.
- Crear, modificar o eliminar índices.
- VACUUM FULL y CLUSTER no se pueden ejecutar en tablas durante la redistribución de tablas.
- Modifique los objetos de secuencia de los que depende una columna, incluida su creación y modificación. Las sentencias típicas son CREATE y ALTER SEQUENCE ... OWNED BY.
- Durante la redistribución de una tabla con más de 996 columnas, las sentencias UPDATE y DELETE no se pueden ejecutar. Las sentencias SELECT y INSERT están permitidas.
- Durante la redistribución no se pueden crear, eliminar ni modificar objetos de base de datos y de espacio de trabajo.
- Un intercambio de particiones solo se puede realizar si la redistribución está completa para ambas tablas que se van a intercambiar. Las dos tablas pertenecen a diferentes grupos de nodos y no permiten el intercambio de particiones si cualquiera de ellas se está redistribuyendo.
Procedimiento
- Inicie sesión en la consola de gestión de GaussDB(DWS).
- Elija Clusters. Todos los clústeres se muestran de forma predeterminada.
- En la columna Operation del clúster de destino, elija More > Scale Node > Redistribute, como se muestra en la siguiente figura.
- En la página Redistribute que se muestra, establezca Advanced en Custom, establezca el modo de redistribución en Online mode y haga clic en Next: Confirm para enviar la tarea.
Programación fuera de línea
Precauciones
La programación sin conexión es similar a la redistribución sin conexión. En el modo de programación sin conexión, las tablas se redistribuyen solo dentro de la ventana de tiempo configurada, y la redistribución se pausa fuera de la ventana de tiempo.
- 8.2.0 y versiones posteriores no admiten programación sin conexión.
- Si un clúster se descompone durante la redistribución sin conexión, se mostrará Redistribution failed. Si el clúster se recupera, la redistribución se reanudará automáticamente. Para actualizar el estado, haga clic en Redistribute una vez completada la redistribución.
Procedimiento
- Inicie sesión en la consola de gestión de GaussDB(DWS).
- Elija Clusters. Todos los clústeres se muestran de forma predeterminada.
- En la columna Operation del clúster de destino, elija More > Scale Node > Redistribute, como se muestra en la siguiente figura.
Se muestra la página Redistribution.
- En la página Redistribute que se muestra, establezca Advanced en Custom y el modo de redistribución en Offline scheduling y configure la ventana de programación y haga clic en Next: Confirm para enviar la tarea.
En el modo de redistribución programada y fuera de la ventana de tiempo programada, se pausa una tarea de redistribución y el estado del clúster es de Redistribution paused.