Data Management (DMS) içindeki Task Orchestration özelliğini kullanarak geçmiş verileri otomatik olarak arşivleyen, zamanlanmış ve çok adımlı bir görev akışı oluşturun. Bu öğreticiyi tamamladığınızda aşağıdaki işlemleri yapan çalışan bir görev akışınız olur:
Altı aydan eski kayıtlar için aylık bir arşiv tablosu oluşturur
Koşulları sağlayan satırları kaynak tablodan arşiv tablosuna kopyalar
Geçişi tamamlanan satırları kaynak tablodan siler
Her ayın ilk günü saat 01:00'de otomatik olarak çalışır
Bu konudaki adımlar:
Ön koşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
DMS'ye kaydedilmiş bir veritabanı örneği. Ayrıntılar için bkz. Bir Alibaba Cloud veritabanı örneği kaydedin
Durumu Normal olan bir örnek. Durumu kontrol etmek için DMS konsol ana sayfasına gidin, sol gezinme bölmesindeki örneğin üzerine gelin ve durum araç ipucunu okuyun
Örnek yönetim modu Flexible Management veya Stable Change ise görev akışı için Sahip erişimi. Bu gereksinim Security Collaboration modundaki örnekler için geçerli değildir. Ayrıntılar için bkz. Overview
Desteklenen veritabanları
Task Orchestration aşağıdaki veritabanı türlerini destekler:
İlişkisel veritabanları
MySQL: ApsaraDB RDS for MySQL, PolarDB for MySQL, ApsaraDB MyBase for MySQL, PolarDB for Xscale ve diğer kaynaklardan gelen MySQL veritabanları
SQL Server: ApsaraDB RDS for SQL Server, ApsaraDB MyBase for SQL Server ve diğer kaynaklardan gelen SQL Server veritabanları
PostgreSQL: ApsaraDB RDS for PostgreSQL, PolarDB for PostgreSQL, ApsaraDB MyBase for PostgreSQL ve diğer kaynaklardan gelen PostgreSQL veritabanları
OceanBase: MySQL modunda ApsaraDB for OceanBase, Oracle modunda ApsaraDB for OceanBase ve kendi kendine yönetilen OceanBase veritabanları
PolarDB for PostgreSQL (Oracle ile uyumlu)
Oracle
Dameng (DM)
Db2
NoSQL veritabanı: Lindorm
Veri ambarları: AnalyticDB for MySQL, AnalyticDB for PostgreSQL, Data Lake Analytics (DLA), MaxCompute, Hologres
Nesne depolama: Object Storage Service (OSS)
Kaynak tabloyu ayarlayın
Bu öğreticide test adlı bir kaynak tablo kullanılır. Tabloyu oluşturmak ve örnek veriler eklemek için aşağıdaki deyimleri çalıştırın:
-- 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');
Bu deyimleri DMS'deki SQLConsole sekmesinde veya bir veri değişikliği bileti göndererek çalıştırabilirsiniz. Ayrıntılar için bkz. SQLConsole sekmesinde bir veritabanını yönetin ve Normal Data Modify.
Adım 1: Bir görev akışı oluşturun
DMS konsolu V5.0 üzerinde oturum açın.
-
Üst gezinme çubuğunda All Features > Data + AI > Data Development > Task Orchestration seçeneğini belirleyin.
Normal modda DMS konsolunu kullanıyorsanız sol üst köşedeki simgenin üzerine gelin ve Data + AI > Data Development > Task Orchestration seçeneklerini belirleyin.
Create Task Flow öğesine tıklayın.
New Task Flow iletişim kutusunda bir Task Flow Name ve Description girin, ardından OK öğesine tıklayın.
Adım 2: Zaman değişkenlerini yapılandırın
Görev akışı, arşivleme penceresinin geçerli tarihe göre altı ay geriye otomatik olarak kaymasını sağlamak için SQL filtre koşulları olarak iki zaman değişkeni kullanır. Görev akışındaki tüm düğümler bu değişkenlere ${variable_name} sözdizimini kullanarak başvurabilir.
Sayfanın alt kısmındaki Variable Configuration sekmesinde sol bölmedeki Task Flow Variable öğesine tıklayın ve aşağıdaki iki değişkeni oluşturun:
| Değişken | Zaman biçimi | Ofset | Açıklama | Örnek (bugün 27 Haziran 2023 ise) |
|---|---|---|---|---|
yearmonth6_name |
yyyy-MM |
-, 6, Month | Altı ay öncesi ay, ay hassasiyetinde | 2022-12 |
yearmonth6_date |
yyyy-MM-01 |
-, 6, Month | Altı ay öncesi ayın ilk günü, gün hassasiyetinde | 2022-12-01 |
yearmonth6_namearşiv tablosu adında son ek olarak kullanılır (örneğin,test_2022-12).yearmonth6_dateher iki SQL düğümündekiWHEREyan tümcesinde kesme tarihi olarak kullanılır.
Tam değişken sözdizimi ve seçenekleri için bkz. Değişkenler.
Adım 3: Düğümler oluşturun ve yapılandırın
Görev akışı iki Single Instance SQL düğümü gerektirir: biri verileri arşiv tablosuna geçirmek, diğeri ise geçişi tamamlanan satırları kaynak tablodan silmek içindir.
Migrate Data düğümünü oluşturun
Bu düğüm, aylık bir arşiv tablosu oluşturur (zaten yoksa) ve test tablosundaki altı aydan eski tüm kayıtları bu tabloya kopyalar.
Tuvalin sol tarafındaki Task Type panelinden bir Single Instance SQL düğümünü tuvale sürükleyin.
Düğüme sağ tıklayın ve Rename seçeneğini belirleyin. Düğüm adı olarak Migrate Data girin.
SQL düzenleyicisini açmak için düğüme çift tıklayın.
-
Veritabanı arama kutusunda veritabanınızı seçin ve aşağıdaki SQL kodunu girin:
CREATE TABLE IF NOT EXISTS `test_${yearmonth6_name}` LIKE test; INSERT INTO `test_${yearmonth6_name}` SELECT * FROM `test` WHERE gmt_create < '${yearmonth6_date}';İlk deyim,
testile aynı şemaya sahiptest_${yearmonth6_name}tablosunu oluşturur; tablo zaten varsa oluşturma işlemi atlanır. İkinci deyim,gmt_createtarihi altı aylık kesme noktasından önce olan tüm satırları arşiv tablosuna kopyalar. SQL deyimlerini doğrulamak için Preview öğesine tıklayın.
Clear Historical Data düğümünü oluşturun
Bu düğüm, arşiv tablosuna kopyalanan tüm satırları test tablosundan siler.
Başka bir Single Instance SQL düğümünü tuvale sürükleyin.
Düğüme sağ tıklayın ve Rename seçeneğini belirleyin. Düğüm adı olarak Clear Historical Data girin.
SQL düzenleyicisini açmak için düğüme çift tıklayın.
-
Veritabanı arama kutusunda veritabanınızı seçin ve aşağıdaki SQL kodunu girin:
UyarıDELETE deyimini yoğun olmayan saatlerde çalıştırın. Büyük hacimli verilerin silinmesi tablo kilitlerini uzun süre tutabilir ve diğer işlemleri kesintiye uğratabilir.
DELETE FROM `test` WHERE gmt_create < '${yearmonth6_date}';Bu deyim, arşiv tablosuna zaten kopyalanmış tüm satırları kaldırarak
testtablosunun altı aydan eski kayıt içermemesini sağlar. SQL deyimini doğrulamak için Preview öğesine tıklayın.
Adım 4: Düğümleri bağlayın ve zamanlamayı ayarlayın
Düğümleri bağlayın
Tuvale üzerinde Migrate Data düğümünün üzerine gelin, sağ tarafındaki boş daireye tıklayın ve bağlantı çizgisini Clear Historical Data düğümüne sürükleyin. Bu işlem yürütme sırasını tanımlar: önce Migrate Data çalışır, ardından Clear Historical Data çalışır.
Zamanlamayı yapılandırın
Sayfanın alt kısmında Task Flow Information sekmesine tıklayın.
-
Scheduling Settings bölümünde aşağıdaki parametreleri yapılandırın:
Parametre Değer Enable scheduling Açık Scheduling type Timed Scheduling/Cyclic scheduling Effective time 1970-01-01 – 9999-01-01 (varsayılan; zamanlama süresiz çalışır) Scheduling cycle Ay Specified time Her ayın 1'i Specific point in time 01:00 Time zone Tercih ettiğiniz saat dilimi Cron expression Yukarıdaki ayarlara göre otomatik oluşturulur Bu örnek, görev akışını her ayın ilk günü saat 01:00'de çalışacak şekilde zamanlar. Gereksinimlerinize uygun olarak ayarları değiştirin. Daha fazla seçenek için bkz. Overview.
Adım 5: Görev akışını çalıştırın ve sonuçları doğrulayın
Test çalıştırması
Tuvalin sol üst köşesindeki Try Run öğesine tıklayın. Günlük çıkışını kontrol edin:
Son satırda
status SUCCEEDEDgörürseniz test çalıştırması başarıyla tamamlandı demektir.Son satırda
status FAILEDgörürseniz test çalıştırması başarısız oldu demektir. Hangi düğümün neden başarısız olduğunu belirlemek için günlükleri inceleyin, yapılandırmayı düzeltin ve tekrar deneyin.
Sonuçları doğrulayın
SQLConsole sekmesinde aşağıdakileri onaylamak için sorgular çalıştırın:
Altı aylık kesme noktasından önceki
gmt_createdeğerine sahip kayıtlartest_${yearmonth6_name}arşiv tablosuna kopyalandı.Aynı kayıtlar artık
testtablosunda bulunmuyor.
Veri sorgulama hakkında ayrıntılı bilgi için bkz. SQLConsole sekmesinde bir veritabanını yönetin.