Gunakan fitur Orkestrasi Tugas di Data Management (DMS) untuk membangun alur tugas multi-langkah yang dijadwalkan guna mengarsipkan data historis secara otomatis. Pada akhir tutorial ini, Anda akan memiliki alur tugas yang berfungsi dan:
Membuat tabel arsip bulanan untuk catatan yang berusia lebih dari enam bulan
Menyalin baris yang memenuhi kriteria dari tabel sumber ke tabel arsip
Menghapus baris yang telah dimigrasikan dari tabel sumber
Berjalan secara otomatis pada pukul 01.00 di hari pertama setiap bulan
Langkah-langkah dalam tutorial ini:
Prasyarat
Sebelum memulai, pastikan Anda telah:
Instansiasi basis data yang terdaftar di DMS. Untuk detailnya, lihat Mendaftarkan instansiasi basis data Alibaba Cloud.
Memiliki instans dengan status Normal. Untuk memeriksanya, buka halaman utama Konsol DMS, arahkan kursor ke instans di panel navigasi kiri, lalu baca tooltip statusnya
Memiliki akses Owner terhadap alur tugas jika mode kontrol instans adalah Flexible Management atau Stable Change. Persyaratan ini tidak berlaku untuk instans dalam mode Security Collaboration. Untuk detailnya, lihat Ikhtisar
Database yang didukung
Orkestrasi Tugas mendukung jenis database berikut:
Database relasional
MySQL: ApsaraDB RDS for MySQL, PolarDB for MySQL, ApsaraDB MyBase for MySQL, PolarDB for Xscale, dan database MySQL dari sumber lain
SQL Server: ApsaraDB RDS for SQL Server, ApsaraDB MyBase for SQL Server, dan database SQL Server dari sumber lain
PostgreSQL: ApsaraDB RDS for PostgreSQL, PolarDB for PostgreSQL, ApsaraDB MyBase for PostgreSQL, dan database PostgreSQL dari sumber lain
OceanBase: ApsaraDB for OceanBase dalam mode MySQL, ApsaraDB for OceanBase dalam mode Oracle, dan database OceanBase yang dikelola sendiri
PolarDB for PostgreSQL (Compatible with Oracle)
Oracle
Dameng (DM)
Db2
Database NoSQL: Lindorm
Gudang data: AnalyticDB for MySQL, AnalyticDB for PostgreSQL, Data Lake Analytics (DLA), MaxCompute, Hologres
Penyimpanan objek: Object Storage Service (OSS)
Siapkan tabel sumber
Tutorial ini menggunakan tabel sumber bernama test. Jalankan pernyataan berikut untuk membuat tabel dan memasukkan data sampel:
-- Buat tabel sumber
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';
-- Masukkan data sampel
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');Anda dapat menjalankan pernyataan ini di tab SQLConsole di DMS atau dengan mengirimkan tiket perubahan data. Untuk detailnya, lihat Kelola database di tab SQLConsole dan Normal Data Modify.
Langkah 1: Buat alur tugas
Masuk ke Konsol DMS V5.0.
Di bilah navigasi atas, pilih All Features > Data + AI > Data Development > Task Orchestration.
Jika Anda menggunakan mode normal Konsol DMS, arahkan kursor ke ikon di pojok kiri atas lalu pilih Data + AI > Data Development > Task Orchestration.
Klik Create Task Flow.
Di kotak dialog New Task Flow, masukkan Task Flow Name dan Description, lalu klik OK.
Langkah 2: Konfigurasikan variabel waktu
Alur tugas menggunakan dua variabel waktu sebagai kondisi filter SQL agar jendela pengarsipan secara otomatis mundur enam bulan relatif terhadap tanggal saat ini. Semua node dalam alur tugas dapat mereferensikan variabel ini menggunakan sintaksis ${variable_name}.
Di tab Variable Configuration di bagian bawah halaman, klik Task Flow Variable di panel kiri dan buat dua variabel berikut:
| Variabel | Format waktu | Offset | Deskripsi | Contoh (jika hari ini 27 Juni 2023) |
|---|---|---|---|---|
yearmonth6_name | yyyy-MM | -, 6, Month | Bulan enam bulan sebelumnya, akurat hingga bulan | 2022-12 |
yearmonth6_date | yyyy-MM-01 | -, 6, Month | Hari pertama bulan enam bulan sebelumnya, akurat hingga hari | 2022-12-01 |
yearmonth6_namedigunakan sebagai akhiran dalam nama tabel arsip (misalnya,test_2022-12).yearmonth6_datedigunakan sebagai tanggal batas dalam klausaWHEREkedua node SQL.
Untuk sintaksis dan opsi variabel lengkap, lihat Variabel.
Langkah 3: Buat dan konfigurasikan node
Alur tugas memerlukan dua node Single Instance SQL: satu untuk memigrasikan data ke tabel arsip, dan satu lagi untuk menghapus baris yang telah dimigrasikan dari tabel sumber.
Buat node Migrate Data
Node ini membuat tabel arsip bulanan (jika belum ada) dan menyalin semua catatan yang berusia lebih dari enam bulan dari test ke dalamnya.
Dari panel Task Type di sisi kiri kanvas, seret node Single Instance SQL ke kanvas.
Klik kanan node tersebut dan pilih Rename. Masukkan Migrate Data sebagai nama node.
Klik ganda node tersebut untuk membuka editor SQL.
Pilih database Anda di kotak pencarian database dan masukkan SQL berikut:
CREATE TABLE IF NOT EXISTS `test_${yearmonth6_name}` LIKE test; INSERT INTO `test_${yearmonth6_name}` SELECT * FROM `test` WHERE gmt_create < '${yearmonth6_date}';Pernyataan pertama membuat
test_${yearmonth6_name}dengan skema yang sama sepertitest, melewati pembuatan jika tabel sudah ada. Pernyataan kedua menyalin semua baris dengan tanggalgmt_createsebelum batas enam bulan ke tabel arsip.Klik Preview untuk memvalidasi pernyataan SQL.
Buat node Clear Historical Data
Node ini menghapus dari test semua baris yang telah disalin ke tabel arsip.
Seret node Single Instance SQL lainnya ke kanvas.
Klik kanan node tersebut dan pilih Rename. Masukkan Clear Historical Data sebagai nama node.
Klik ganda node tersebut untuk membuka editor SQL.
Pilih database Anda di kotak pencarian database dan masukkan SQL berikut:
PeringatanJalankan pernyataan DELETE selama jam sepi. Menghapus volume data besar dapat menahan kunci tabel dalam periode panjang dan mengganggu operasi lainnya.
DELETE FROM `test` WHERE gmt_create < '${yearmonth6_date}';Pernyataan ini menghapus semua baris yang telah disalin ke tabel arsip, sehingga menjaga
testbebas dari catatan yang berusia lebih dari enam bulan.Klik Preview untuk memvalidasi pernyataan SQL.
Langkah 4: Hubungkan node dan atur penjadwalan
Hubungkan node
Di kanvas, arahkan kursor ke node Migrate Data, klik lingkaran kosong di sisi kanannya, lalu seret garis koneksi ke node Clear Historical Data. Hal ini menentukan urutan eksekusi: Migrate Data dijalankan terlebih dahulu, lalu Clear Historical Data.
Konfigurasikan penjadwalan
Di bagian bawah halaman, klik tab Task Flow Information.
Di bagian Scheduling Settings, konfigurasikan parameter berikut:
Parameter Nilai Enable scheduling Aktifkan Scheduling type Timed Scheduling/Cyclic scheduling Effective time 1970-01-01 – 9999-01-01 (default; jadwal berjalan tanpa batas) Scheduling cycle Month Specified time 1st of each month Specific point in time 01:00 Time zone Zona waktu pilihan Anda Cron expression Dihasilkan otomatis berdasarkan pengaturan di atas Contoh ini menjadwalkan alur tugas untuk berjalan pada pukul 01.00 di hari pertama setiap bulan. Sesuaikan pengaturan sesuai kebutuhan Anda. Untuk opsi lainnya, lihat Ikhtisar.
Langkah 5: Jalankan alur tugas dan verifikasi hasilnya
Jalankan uji coba
Klik Try Run di pojok kiri atas kanvas. Periksa output log:
status SUCCEEDEDdi baris terakhir: uji coba berhasil.status FAILEDdi baris terakhir: uji coba gagal. Tinjau log untuk mengidentifikasi node mana yang gagal dan alasannya, perbaiki konfigurasi, lalu coba lagi.
Verifikasi hasilnya
Di tab SQLConsole, jalankan kueri untuk memastikan bahwa:
Catatan dengan
gmt_createsebelum batas enam bulan telah disalin ke tabel arsiptest_${yearmonth6_name}.Catatan tersebut tidak lagi ada di tabel
test.
Untuk detail cara melakukan kueri data, lihat Kelola database di tab SQLConsole.