Utilice la función Task Orchestration de Data Management (DMS) para construir un flujo de tareas programado y de múltiples pasos que archive automáticamente los datos históricos. Al finalizar este tutorial, tendrá un flujo de tareas funcional que:
Crea una tabla de archivo mensual para los registros con más de seis meses de antigüedad.
Copia las filas que cumplen los criterios de la tabla de origen a la tabla de archivo.
Elimina las filas migradas de la tabla de origen.
Se ejecuta automáticamente a la 01:00 del primer día de cada mes.
Pasos de este tutorial:
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de base de datos registrada en DMS. Para más detalles, consulte Register an Alibaba Cloud database instance.
Una instancia con estado Normal. Para comprobarlo, vaya a la página principal de la consola de DMS, pase el cursor sobre la instancia en el panel de navegación izquierdo y lea la información emergente del estado.
Acceso de propietario al flujo de tareas si el modo de control de la instancia es Flexible Management o Stable Change. Este requisito no aplica a las instancias en modo Security Collaboration. Para más detalles, consulte Descripción general.
Bases de datos compatibles
Task Orchestration es compatible con los siguientes tipos de bases de datos:
Bases de datos relacionales
MySQL: ApsaraDB RDS for MySQL, PolarDB for MySQL, ApsaraDB MyBase for MySQL, PolarDB for Xscale y bases de datos MySQL de otros orígenes.
SQL Server: ApsaraDB RDS for SQL Server, ApsaraDB MyBase for SQL Server y bases de datos SQL Server de otros orígenes.
PostgreSQL: ApsaraDB RDS for PostgreSQL, PolarDB for PostgreSQL, ApsaraDB MyBase for PostgreSQL y bases de datos PostgreSQL de otros orígenes.
OceanBase: ApsaraDB for OceanBase en modo MySQL, ApsaraDB for OceanBase en modo Oracle y bases de datos OceanBase autogestionadas.
PolarDB for PostgreSQL (Compatible with Oracle).
Oracle.
Dameng (DM).
Db2.
Base de datos NoSQL: Lindorm.
Almacenes de datos: AnalyticDB for MySQL, AnalyticDB for PostgreSQL, Data Lake Analytics (DLA), MaxCompute, Hologres.
Object storage: Object Storage Service (OSS).
Configurar la tabla de origen
Este tutorial utiliza una tabla de origen llamada test. Ejecute las siguientes instrucciones para crear la tabla e insertar datos de ejemplo:
-- Create the source table
CREATE TABLE test (
`id` bigint(20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'Primary key',
`gmt_create` DATETIME NOT NULL COMMENT 'Creation time',
`gmt_modified` DATETIME NOT NULL COMMENT 'Modification time',
`content` TEXT COMMENT 'Test data'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Table for a task orchestration test';
-- Insert sample data
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-01-01 01:00:00', '2020-01-01 01:00:00', 'value1');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-02-01 01:00:00', '2020-02-01 01:00:00', 'value2');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-03-01 01:00:00', '2020-03-01 01:00:00', 'value3');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-04-01 01:00:00', '2020-04-01 01:00:00', 'value4');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-05-01 01:00:00', '2020-05-01 01:00:00', 'value5');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-06-01 01:00:00', '2020-06-01 01:00:00', 'value6');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-07-01 01:00:00', '2020-07-01 01:00:00', 'value7');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-08-01 01:00:00', '2020-08-01 01:00:00', 'value8');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-09-01 01:00:00', '2020-09-01 01:00:00', 'value9');
INSERT INTO test(`gmt_create`, `gmt_modified`, `content`) VALUES ('2020-10-01 01:00:00', '2020-10-01 01:00:00', 'value10');
Estas instrucciones se pueden ejecutar en la pestaña SQLConsole de DMS o mediante la creación de un ticket de cambio de datos. Para más detalles, consulte Manage a database on the SQLConsole tab y Normal Data Modify.
Paso 1: Crear un flujo de tareas
Inicie sesión en la consola de DMS V5.0.
-
En la barra de navegación superior, elija All Features > Data + AI > Data Development > Task Orchestration.
Si usa el modo normal de la consola de DMS, pase el cursor sobre el ícono en la esquina superior izquierda y elija Data + AI > Data Development > Task Orchestration .
Haga clic en Create Task Flow.
En el cuadro de diálogo New Task Flow, introduzca un valor en Task Flow Name y otro en Description. Después, haga clic en OK.
Paso 2: Configurar variables de tiempo
El flujo de tareas utiliza dos variables de tiempo como condiciones de filtro SQL. De este modo, la ventana de archivado retrocede automáticamente seis meses respecto a la fecha actual. Todos los nodos del flujo pueden hacer referencia a estas variables mediante la sintaxis ${variable_name}.
En la pestaña Variable Configuration, ubicada en la parte inferior de la página, haga clic en Task Flow Variable en el panel izquierdo y cree las dos variables que se muestran a continuación:
|
Variable |
Formato de hora |
Desplazamiento |
Descripción |
Ejemplo (si hoy es 27 de junio de 2023) |
|
|
|
-, 6, Month |
Mes correspondiente a seis meses atrás, con precisión de mes. |
|
|
|
|
-, 6, Month |
Primer día del mes correspondiente a seis meses atrás, con precisión de día. |
|
yearmonth6_namese utiliza como sufijo en el nombre de la tabla de archivo (por ejemplo,test_2022-12).yearmonth6_datefunciona como fecha límite en la cláusulaWHEREde ambos nodos SQL.
Para conocer la sintaxis completa de las variables y sus opciones, consulte Variables.
Paso 3: Crear y configurar nodos
El flujo de tareas requiere dos nodos Single Instance SQL: uno para migrar los datos a la tabla de archivo y otro para eliminar las filas migradas de la tabla de origen.
Crear el nodo Migrate Data
Este nodo crea una tabla de archivo mensual (si aún no existe) y copia en ella todos los registros de test con más de seis meses de antigüedad.
En el panel Task Type, ubicado a la izquierda del lienzo, arrastre un nodo Single Instance SQL hacia el área de trabajo.
Haga clic derecho en el nodo y seleccione Rename. Introduzca Migrate Data como nombre del nodo.
Haga doble clic en el nodo para abrir el editor SQL.
-
Seleccione su base de datos en el cuadro de búsqueda e introduzca el siguiente código SQL:
CREATE TABLE IF NOT EXISTS `test_${yearmonth6_name}` LIKE test; INSERT INTO `test_${yearmonth6_name}` SELECT * FROM `test` WHERE gmt_create < '${yearmonth6_date}';La primera instrucción crea
test_${yearmonth6_name}con el mismo esquema quetesty omite la creación si la tabla ya existe. La segunda instrucción copia en la tabla de archivo todas las filas cuya fechagmt_createsea anterior al límite de seis meses. Haga clic en Preview para validar las instrucciones SQL.
Crear el nodo Clear Historical Data
Este nodo elimina de test todas las filas que se copiaron a la tabla de archivo.
Arrastre otro nodo Single Instance SQL al lienzo.
Haga clic derecho en el nodo y seleccione Rename. Introduzca Clear Historical Data como nombre del nodo.
Haga doble clic en el nodo para abrir el editor SQL.
-
Seleccione su base de datos en el cuadro de búsqueda e introduzca el siguiente código SQL:
AvisoEjecute la instrucción DELETE fuera del horario de mayor actividad. Eliminar grandes volúmenes de datos puede retener bloqueos de tabla durante mucho tiempo e interrumpir otras operaciones.
DELETE FROM `test` WHERE gmt_create < '${yearmonth6_date}';Esta instrucción quita todas las filas que ya se copiaron a la tabla de archivo. Así,
testqueda libre de registros con más de seis meses de antigüedad. Haga clic en Preview para validar la instrucción SQL.
Paso 4: Conectar nodos y establecer la programación
Conectar los nodos
En el lienzo, pase el cursor sobre el nodo Migrate Data, haga clic en el círculo vacío de su lado derecho y arrastre la línea de conexión hasta el nodo Clear Historical Data. Esto define el orden de ejecución: primero se ejecuta Migrate Data y después Clear Historical Data.
Configurar la programación
En la parte inferior de la página, haga clic en la pestaña Task Flow Information.
-
En la sección Scheduling Settings, configure los parámetros que se muestran a continuación:
Parámetro
Valor
Enable scheduling
Actívelo.
Scheduling type
Timed Scheduling/Cyclic scheduling
Effective time
1970-01-01 – 9999-01-01 (valor predeterminado; la programación se ejecuta de forma indefinida).
Scheduling cycle
Month
Specified time
1st of each month
Specific point in time
01:00
Time zone
Su zona horaria preferida.
Cron expression
Se genera automáticamente según la configuración anterior.
Este ejemplo programa el flujo de tareas para que se ejecute a la 01:00 del primer día de cada mes. Ajuste la configuración según sus necesidades. Para conocer más opciones, consulte Overview.
Paso 5: Ejecutar el flujo de tareas y comprobar los resultados
Ejecución de prueba
Haga clic en Try Run en la esquina superior izquierda del lienzo. Revise la salida del registro:
Si la última línea muestra
status SUCCEEDED, la ejecución de prueba finalizó correctamente.Si la última línea muestra
status FAILED, la ejecución de prueba terminó con errores. Revise los registros para identificar qué nodo falló y por qué, corrija la configuración e inténtelo de nuevo.
Comprobar los resultados
En la pestaña SQLConsole, ejecute consultas para confirmar lo siguiente:
Los registros con un valor de
gmt_createanterior al límite de seis meses se copiaron a la tabla de archivotest_${yearmonth6_name}.Esos mismos registros ya no existen en la tabla
test.
Para obtener más detalles sobre cómo consultar datos, consulte Manage a database on the SQLConsole tab.