Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-06-12 GMT+08:00

Descripción del clúster lógico

Conceptos

Un clúster físico se puede dividir en grupos de nodos, que son clústeres lógicos. Todos los nodos físicos de un clúster físico se dividen en varios clústeres lógicos. Un clúster lógico es esencialmente un grupo de nodos que contiene uno o más nodos físicos. Cada nodo físico pertenece sólo a un clúster lógico, y las tablas de datos de usuario sólo se pueden distribuir dentro del mismo clúster lógico. Los datos de cada clúster lógico están aislados de los demás. Los recursos físicos asignados a un clúster lógico se utilizan principalmente para operaciones en sus propias tablas de datos, pero también para consultas interactivas con otros clústeres lógicos. Una empresa puede desplegar servicios en diferentes clústeres lógicos para implementar la gestión de servicios unificada y, mientras tanto, aislar los datos y recursos de los servicios.

Los clústeres lógicos se crean dividiendo los nodos de un clúster físico. Las tablas de una base de datos se pueden asignar a diferentes nodos físicos por clúster lógico. Un clúster lógico puede contener tablas de varias bases de datos. Figura 1 muestra las relaciones entre clústeres lógicos, bases de datos y tablas.

Un clúster elástico es un clúster que siempre existe en modo de clúster lógico y consiste en nodos que no forman parte de ningún clúster lógico. Es un grupo de nodos especial que puede tener múltiples o cero DN. No se puede crear manualmente un clúster elástico. Cuando se crea el primer clúster lógico en un clúster físico, también se crea automáticamente un clúster elástico y todos los nodos físicos que no pertenecen al clúster lógico se añaden automáticamente al clúster elástico. Los DN del clúster elástico se utilizarán para los clústeres lógicos creados más adelante. Para crear un clúster lógico, asegúrese de que el clúster lógico tiene DN. (Los DN no son necesarios solo cuando crea el primer clúster lógico en el modo de clúster físico) Puede agregar nuevos nodos físicos al clúster elástico a través de ampliación horizontal.

Figura 1 Relaciones entre clústeres lógicos, bases de datos y tablas
  • Los clústeres lógicos se admiten en 8.1.0.100 o posterior.
  • Se recomienda asignar tablas de una base de datos al mismo clúster lógico.
  • Un clúster lógico no es un subclúster independiente. Puede aislar datos, recursos y permisos, pero no puede ser operado o mantenido de forma independiente.
  • La opción Change all specifications no admite clústeres lógicos.
  • El clúster lógico de un clúster de GaussDB(DWS) 3.0 no se puede cambiar si el clúster físico original contiene datos. Asegúrese de que el clúster físico original esté vacío durante la conmutación.

Arquitectura de clústeres lógicos

Figura 2 muestra la arquitectura de un clúster físico dividido en múltiples clústeres lógicos. Los nodos en el clúster físico se dividen en grupos de nodos. Los trabajos de los usuarios 1 y 2 se ejecutan en diferentes grupos de nodos. Los dos usuarios pueden definir grupos de recursos dentro de su propio clúster lógico para controlar los recursos (CPU, memoria y E/S) utilizados para diferentes trabajos. Si algunos trabajos del usuario 1 necesitan acceder a los datos del usuario 2, pueden acceder a datos a través de grupos de nodos después de haber sido autorizados. Para un clúster lógico, puede configurar los recursos accesibles entre clústeres lógicos para asegurarse de que sus recursos son suficientes.

Figura 2 Arquitectura de clústeres lógicos

Un clúster físico se divide en múltiples clústeres lógicos. Puede definir un grupo de recursos para cada uno de ellos en función de los requisitos de servicio. Las tablas de usuario no se distribuyen entre los clústeres lógicos. Si los servicios no acceden a los datos de los clústeres lógicos, no competirán por los recursos. Los recursos se pueden asignar a trabajos en el mismo clúster lógico mediante grupos de recursos. Si es necesario, puede permitir que los servicios accedan a los datos de los clústeres lógicos y controlar los recursos utilizados para dicho acceso para reducir la competencia de recursos entre trabajos dentro y fuera de un clúster lógico.

Después de crear un clúster físico, debe decidir si desea dividirlo en clústeres lógicos. No puede dividirlo en clústeres lógicos si ya ha creado tablas de usuario antes, porque estas tablas de usuario se distribuyen en todos los nodos físicos. Para obtener más información acerca de las limitaciones, consulte Restricciones y limitaciones. Si desea gestionar un clúster existente (por ejemplo, un clúster de base de datos construido en una versión anterior a 8.1.0.100) como clúster lógico, puede actualizar el clúster a 8.1.0.100 o posterior y, a continuación, convertir todos los nodos del clúster en un único clúster lógico. A continuación, agregue nodos al clúster físico y cree otro clúster lógico en los nuevos nodos.

Las operaciones en clústeres lógicos incluyen:

Restricciones y limitaciones

  • La unidad más pequeña de creación, ampliación horizontal y reducción horizontal de un clúster lógico es un anillo. Un anillo consiste en al menos tres hosts, donde se despliegan los DN primario, en espera y secundario.
  • Durante la conmutación del clúster lógico, si el clúster físico original tiene datos, el clúster se bloqueará. Puede ejecutar sentencias DML simples, como agregar, eliminar, modificar y consultar datos. Sin embargo, la ejecución de sentencias DDL complejas, como los objetos de base de datos operativos, bloqueará los servicios e informará de errores. Realice esta operación con precaución.
  • Un clúster lógico no se puede realizar una copia de respaldo o restaurar de forma independiente.
  • Un clúster lógico no se puede actualizar de forma independiente.
  • Un clúster físico no se puede revertir en un clúster físico después de convertirlo en un clúster lógico.
  • En el modo de clúster lógico, sólo se pueden crear clústeres lógicos y no se pueden crear grupos de nodos. Además, no se pueden crear grupos de nodos en un clúster lógico.
  • Las operaciones O&M (creación, eliminación, edición, ampliación, reducción, y reinicio) de clústeres lógicos no se pueden realizar simultáneamente.
  • Los objetos de base de datos públicos (excluidos los catálogos del sistema, las tablas externas y las vistas) se distribuyen en todos los nodos de un clúster físico. Después de reiniciar un nodo del clúster lógico, se interrumpirán las operaciones de DDL realizadas por otros clústeres lógicos en los objetos.
  • En el modo de clúster lógico, cada DN contiene solamente las tablas en el agrupamiento lógico al que pertenece el DN. Es necesario crear funciones definidas por el usuario en todos los DN. Por lo tanto, no se puede utilizar %type para hacer referencia a los tipos de campos de tabla en el cuerpo de función.
  • En el modo de clúster lógico, la sentencia WITH RECURSIVE no se puede empujar hacia abajo.
  • En el modo de clúster lógico, las particiones solo se pueden intercambiar en el mismo clúster lógico. Las tablas particionadas y las tablas comunes en diferentes clústeres lógicos no se pueden intercambiar.
  • En el modo de clúster lógico, si los parámetros de función o los valores devueltos contienen tipos de tabla, estos tipos de tabla deben pertenecer al mismo clúster lógico.
  • En modo de clúster lógico, ejecute el comando CREATE TABLE.... Al crear una tabla extranjera mediante LIKE, asegúrese de que la tabla de origen y la tabla extranjera que se va a crear se encuentran en el mismo clúster lógico.
  • En el modo de clúster lógico, la sentencia CREATE TABLE no se puede utilizar durante la creación de un esquema (CREATE SCHEMA...). Primero debe crear un esquema y después crear una tabla en el esquema.
  • Un clúster lógico no admite la arquitectura de un nodo primario y varios nodos en espera. Un clúster lógico solo tiene efecto en la arquitectura de un nodo primario, un nodo en espera y un nodo secundario.
  • Un usuario de clúster lógico no puede acceder a las tablas temporales globales creadas por otro usuario de clúster lógico.

Permisos necesarios en las herramientas

A continuación se describen los permisos de usuario para los objetos de base de datos en clústeres lógicos:

  • El permiso de CREATE ON NODE GROUP se puede conceder a cualquier usuario o rol para realizar operaciones como la creación de tablas en un clúster lógico.
    • Si el esquema especificado para una tabla creada es un esquema privado de un usuario (es decir, el esquema tiene el mismo nombre que el usuario y el propietario del esquema es el usuario), el propietario de la tabla creada es el usuario por defecto. No es necesario asociar la tabla con un clúster lógico.
    • Cuando un usuario asociado a un clúster lógico crea una tabla, si no se especifica la cláusula to group, la tabla se creará en ese clúster lógico. El clúster lógico asociado con el usuario puede cambiarse.
    • Si un usuario no está asociado con ningún clúster lógico, cuando el usuario crea una tabla, la tabla se creará en el clúster lógico especificado por default_storage_nodegroup. Si default_storage_nodegroup se establece en installation, la tabla se creará en el primer clúster lógico. En el modo de clúster lógico, el clúster lógico con el OID más pequeño se establece como el primer clúster lógico. Si default_storage_nodegroup no está establecido, su valor es installation de forma predeterminada.
    • GaussDB(DWS) 3.0 admite la creación de clústeres lógicos de solo lectura. Si un usuario está asociado a un clúster lógico de sólo lectura, las tablas temporales de nivel de sesión (tablas temporales locales y tablas temporales volátiles, excluidas las tablas temporales globales) solo se puede crear en el clúster lógico de sólo lectura. Si el usuario crea otras tablas comunes y externas, las tablas se crearán en el clúster lógico especificado por default_storage_nodegroup. Si default_storage_nodegroup se establece en installation, la tabla se creará en el primer clúster lógico.
    • El administrador del sistema puede ejecutar el comando ALTER ROLE para establecer default_storage_nodegroup para cada usuario. Para obtener más información sobre la sintaxis, consulte ALTER ROLE.
  • Reglas de creación de tablas
    • Si no se especifica to group para una tabla de usuario pero default_storage_nodegroup está establecido, las tablas se crearán en el clúster lógico especificado.
    • Si default_storage_nodegroup se establece en installation, se crearán tablas en el primer clúster lógico, es decir, el clúster lógico con el OID más pequeño.
  • El propietario de una tabla se puede cambiar por cualquier usuario. Sin embargo, debe comprobar los permisos del esquema y del grupo de nodos al realizar operaciones en la tabla.
  • Un administrador del sistema puede asociarse a un clúster lógico y puede crear tablas en varios clústeres lógicos.
    • Si el administrador del sistema está asociado a un clúster lógico y no se especifica to group al crear una tabla, la tabla se creará en el clúster lógico asociado de forma predeterminada. Si se especifica to group, la tabla se crea en el clúster lógico especificado.
    • Si el administrador del sistema no está asociado con un clúster lógico y no se especifica to group, se crean tablas en el clúster lógico de default_storage_nodegroup. Para obtener más información, consulte las reglas de creación de tablas.
  • Los permisos de administrador del sistema se pueden conceder a un usuario asociado a un clúster lógico, pero también se aplican las reglas de creación de tablas.
  • No se comprobará el permiso de clúster lógico para acceder a objetos que no sean de tabla (como esquemas/secuencias/funciones/activadores).
  • Un grupo de recursos debe estar asociado a un clúster lógico.
    • Un clúster lógico puede asociarse con varios grupos de recursos, pero un grupo de recursos solo puede asociarse con un clúster lógico.
    • Los trabajos ejecutados por usuarios de clústeres lógicos asociados a un grupo de recursos sólo pueden usar recursos del grupo de recursos.
    • No es necesario crear un grupo de cargas de trabajo para definir el número de trabajos simultáneos en un clúster lógico. Por lo tanto, los grupos de carga de trabajo no son necesarios para los clústeres lógicos.
  • Cuando se elimina un clúster lógico, sólo se eliminan los objetos de tabla, tabla externa y grupo de recursos.
    • Los objetos dependientes de las tablas (incluidas las secuencias/funciones/activadores parcialmente dependientes) en el clúster lógico también se eliminarán.
    • Las asociaciones de clústeres lógicos con sus usuarios y los tenants principal-secundario se eliminarán durante el proceso. Como resultado, los usuarios se asociarán con el grupo de nodos de installation predeterminado y con el grupo de recursos global predeterminado.
  • Un usuario de clúster lógico puede crear una base de datos si se le concede el permiso.

Grupo de nodos de tabla de replicación

Un grupo de nodos de tabla de replicación es un grupo de nodos especial en modo de clúster lógico. Puede contener uno o más clústeres lógicos, pero solo puede crear tablas de replicación. Un escenario típico es crear tablas de dimensiones públicas. Si varios clústeres lógicos requieren algunas tablas de dimensiones comunes, cree un grupo de nodos de tabla de replicación y agréguele las tablas de dimensiones comunes. Los clústeres lógicos contenidos en el grupo de nodos de tabla de replicación pueden acceder a estas tablas de dimensiones en los DN locales, sin necesidad de acceder a las tablas en otros DN. Si se escala un clúster lógico, el grupo de nodos de la tabla de replicación se escalará en consecuencia. Si se elimina el clúster lógico, se escalará el grupo de nodos de la tabla de replicación. Sin embargo, si el grupo de nodos de la tabla de replicación contiene sólo un clúster lógico y se elimina el clúster lógico, también se eliminará el grupo de nodos de la tabla de replicación. En este caso, cree tablas en un clúster lógico en su lugar.

Cree un grupo de nodos de tabla de replicación mediante la sentencia SQL CREATE NODE GROUP y elimine uno mediante DROP NODE GROUP. Antes de eliminar un grupo de nodos de tabla de replicación, elimine todos los objetos de tabla del grupo de nodos.

La creación de grupos de nodos de tabla de replicación se admite en 8.1.2 o posterior.

Escenarios de aplicación

Escenario 1: Aislar datos con distintas necesidades de recursos
Figura 3 División de grupos lógicos basada en las necesidades de recursos

Como se muestra en la figura anterior, los datos con diferentes requisitos de recursos se almacenan en diferentes grupos lógicos, y diferentes grupos lógicos también soportan el acceso mutuo. Esto asegura que las funciones no se vean afectadas mientras los recursos están aislados.

  • Las tablas T1 y T2 se usan para calcular una gran cantidad de datos y generar datos de informe (por ejemplo, procesamiento por lotes bancarios). Este proceso implica la importación por lotes grandes y la consulta de big data, que consumen una gran cantidad de memoria y recursos de E/S de los nodos y toman mucho tiempo. Sin embargo, tal consulta no requiere un alto rendimiento en tiempo real. Por lo tanto, los datos de estas dos tablas pueden separarse en una agrupación lógica diferente.
  • Las tablas T3 y T4 contienen algunos datos de computación y datos en tiempo real, que se utilizan principalmente para la consulta de puntos y la consulta en tiempo real. Estas consultas necesitan un alto rendimiento en tiempo real. Para evitar la interferencia de otras operaciones de alta carga, los datos de estas dos tablas pueden separarse en un grupo lógico diferente.
  • Las tablas T5 y T6 se utilizan principalmente para operaciones OLTP con alta simultaneidad. Los datos de estas tablas se actualizan con frecuencia y son sensibles a E/S. Para evitar el impacto de la consulta de big data en E/S, los datos de estas dos tablas se pueden separar en un clúster lógico diferente.
Escenario 2: Aislar datos para distintos servicios y mejorar la multitenencia de un clúster de datos
Figura 4 Datos multiservicio basados en clústeres lógicos y gestión de múltiples tenants

Un clúster de base de datos grande a menudo almacena datos para varios servicios. Cada servicio tiene sus propias tablas de datos. Para asignar recursos para diferentes servicios, puede crear varios tenants. Específicamente, asigne diferentes usuarios de servicio a diferentes tenants para minimizar la contención de recursos entre servicios. A medida que la escala de servicio crece continuamente, el número de servicios en el sistema de clúster también aumenta. La creación de múltiples tenants se vuelve menos eficaz en el control de la competencia de recursos. Dado que cada tabla se distribuye a través de todos los DN de un clúster de base de datos, cada operación de tabla de datos puede implicar a todos los DN, lo que aumenta la carga de la red y el consumo de recursos del sistema. Simplemente escalar el clúster no es suficiente para resolver este problema. Por lo tanto, se pueden crear múltiples clústeres lógicos para manejar el creciente número de servicios, como se muestra en la figura anterior.

Puede crear un clúster lógico independiente y asignarle nuevos servicios. De esta manera, los nuevos servicios tienen poco impacto en los servicios existentes. Además, si la escala de servicio en clústeres lógicos existentes crece, puede escalar los clústeres lógicos existentes.

Un clúster lógico no es adecuado para gestionar varios sistemas de base de datos independientes. Un sistema de base de datos independiente requiere O&M independiente y necesita ser gestionado, monitoreado, respaldado y actualizado por separado. Además, los fallos deben aislarse entre clústeres. Los clústeres lógicos no pueden lograr una operación independiente y un aislamiento completo de fallos.