Tutorial: Conversión de un clúster físico que contiene datos en un clúster lógico
Escenario
Un clúster de base de datos grande suele contener una gran cantidad de datos puestos en diferentes tablas. Con la gestión de recurso, puede crear grupos de recursos para aislar los recursos de diferentes servicios. Se pueden asignar diferentes usuarios de servicios a diferentes grupos de recursos para reducir la competencia de recursos (CPU, memoria, E/S y almacenamiento) entre servicios.
A medida que aumenta la escala del servicio, también aumenta el número de servicios en el sistema de clústeres. La creación de varios grupos de recursos se vuelve menos eficaz para controlar la competencia de recursos. GaussDB(DWS) utiliza la arquitectura distribuida. y sus datos se distribuyen en múltiples nodos. Cada tabla se distribuye a través de todos los DN en el clúster, una operación en una tabla de datos puede implicar a todos los DN, lo que aumenta las cargas de red y el consumo de recursos del sistema. Para resolver este problema, la ampliación horizontal no es efectivo. Se recomienda dividir un clúster de GaussDB(DWS) en múltiples clústeres lógicos.
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.
Figura 1 muestra un ejemplo. Las tablas de datos de servicio originales de una empresa se almacenan en clúster físico originaldws-demo (en verde). Una vez que los servicios se conmutan al lc1 de clúster lógico (en azul), se agrega un nuevo lc2 de clúster lógico al clúster físico a través de ampliación horizontal. Las tablas de datos de servicio originales se conmutan a clúster lógico lc1, y las nuevas tablas de datos de servicio se escriben en clúster lógico lc2. De esta manera, se aíslan los datos de los servicios antiguos y nuevos. El usuario u2 asociado con el clúster lógico lc2 puede acceder a las tablas del clúster lógico lc1 a través de clústeres lógicos después de la autorización.
- Cluster scale: Ampliar horizontalmente el clúster físico original de tres nodos a seis nodos y dividirlo en dos clústeres lógicos.
- Service isolation: Los datos de servicio nuevos y antiguos se aíslan en diferentes clústeres lógicos.
Creación de un clúster y preparación de datos de tabla
- Crear un clúster. Para obtener más información, véase Creación de un clúster de GaussDB(DWS) 2.0.
- Después de conectarse a la base de datos, cree la tabla t1 como administrador del sistema dbadmin e inserte dos registros de datos en la tabla.
1 2
CREATE TABLE t1 (id int, name varchar(20)); INSERT INTO t1 VALUES (1,'joy'),(2,'lily');
Conversión a clúster lógico lc1
Durante la conversión, puede ejecutar sentencias DML simples, como agregar, eliminar, modificar y consultar datos. Las sentencias DDL complejas, como las operaciones en objetos de base de datos, bloquearán los servicios. Se recomienda realizar la conversión durante las horas fuera de pico.
- Inicie sesión en la consola GaussDB(DWS). En el panel de navegación, elija Cluster Management. Haga clic en el nombre de un clúster para ir a la página Cluster Information.
- Active el interruptor Logical Cluster.
Figura 2 Activación de la función de clúster lógico
- En el panel de navegación, elija Logical Clusters. Haga clic en Add Logical Cluster en la esquina superior derecha, escriba el nombre del clúster lógico lc1 y haga clic en OK.
Durante la conmutación, el clúster actual no está disponible. Espera unos 2 minutos (el tiempo de conversión varía dependiendo del volumen de datos de servicio). Si se muestra lc1 en la página del clúster lógico, la conversión se realiza correctamente.
Figura 3 Adición de un clúster lógico
Figura 4 La conversión de clúster lógico se realizó correctamente
Adición de nodos al clúster elastic_group
- Volver a la página Cluster Management. En la columna Operation del clúster, elija More > Scale Node > Scale Out.
Figura 5 Ampliación de un clúster
- Establezca New Nodes a 3. Habilitar Online Scale-out. Establezca elastic_group como el clúster lógico de destino. Confirme la configuración, active la casilla de verificación de confirmación y haga clic en Next: Confirm.
Figura 6 Proceso de ampliación horizontal
- Haga clic en Next: Confirm y, a continuación, haga clic en OK.
Espera unos 10 minutos hasta que la ampliación tenga éxito.
Adición de clúster lógico lc2
- En la página Cluster Management, haga clic en el nombre de un clúster para ir a la página de detalles del clúster. En el panel de navegación, elija Logical Clusters.
- Haga clic en Add Logical Cluster en la esquina superior derecha, seleccione tres nodos en el panel derecho para agregarlos al panel izquierdo, escriba el nombre de clúster lógico lc2 y haga clic en OK.
Después de aproximadamente 2 minutos, el clúster lógico se agrega correctamente.
Figura 7 Adición de un clúster lógico
Figura 8 Selección de un anillo host
Figura 9 Agregado clúster lógico
Creación de clústeres lógicos, asociación de los mismos con los usuarios y consulta de datos en clústeres lógicos
- Conéctese a la base de datos como administrador del sistema y ejecute la siguiente sentencia SQL para consultar la tabla de servicio original t1:
Compruebe que los datos de servicio se pueden consultar después de la conversión.
1
SELECT * FROM t1;
- Ejecute las siguientes sentencias para asociar u1 al clúster lógico lc1 y u2 al clúster lógico lc2 y conceder todos los permisos de la tabla de servicios original t1 al usuario u1:
1 2 3
CREATE USER u1 NODE GROUP 'lc1' password '{password}'; CREATE USER u2 NODE GROUP 'lc2' password '{password}'; GRANT ALL ON TABLE t1 TO u1;
- Cambie a usuario u2 y consulte datos en la tabla de servicios original t1. Aparece un mensaje que indica que no tiene permiso para acceder a clúster lógicolc1. Esto indica que los datos están aislados entre clústeres lógicos.
1 2
SET ROLE u2 PASSWORD '{password}'; SELECT * FROM t1;
- Vuelva a cambiar al administrador del sistema dbadmin y conceda el permiso de acceso del clúster lógico lc1 al usuario u2.
1 2
SET ROLE dbadmin PASSWORD '{password}'; GRANT USAGE ON NODE GROUP lc1 TO u2;
- Cambie a usuario u2 y consulte la tabla t1. Esto demuestra que el usuario vinculado al clúster lógico lc2 puede consultar la tabla de servicios original t1 a través de clústeres lógicos. De esta manera, los datos se comparten entre clústeres lógicos.
1 2
SET ROLE u2 PASSWORD '{password}'; SELECT * FROM t1;