DMS güvenlik kurallarındaki SQL denetimi optimizasyonu; SQL Konsolu ve veri değiştirme biletlerindeki SQL deyimlerini eksik tablo açıklamaları veya gerekli sütunlar gibi uyumluluk sorunlarına karşı kontrol eder ve kilitsiz değişiklikler gibi iyileştirmeler önerir. Bu konuda bir SQL denetimi kuralının nasıl yapılandırılacağı ve bunun bir veri değiştirme biletine nasıl uygulanacağı gösterilmektedir.
Arka plan
DMS; A table must have comments, An INSERT statement cannot insert a null value into a NOT NULL column ve Field names cannot be duplicated in an INSERT statement gibi varsayılan SQL denetimi kuralları içerir.
Kullanılabilir SQL uyumluluk kontrollerine ve optimizasyon önerilerine genel bir bakış için bkz. SQL denetimi optimizasyonunu yapılandırma.
Ön koşullar
Başlamadan önce aşağıdaki deyimi kullanarak migration_job tablosunu oluşturun:
CREATE TABLE `migration_job` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key',
`gmt_create` datetime NOT NULL COMMENT 'Creation time',
`ref_id` bigint(20) unsigned NOT NULL COMMENT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Test';
Örneğiniz Güvenlik İş Birliği kontrol modunu kullanıyorsa bir Güvenlik kuralı kümesi oluşturma oluşturup Güvenlik kuralı kümesi uygulama işlemlerini veritabanı örneğine uygulayabilirsiniz.
Adım 1: Güvenlik kurallarını yapılandırma
Aşağıdaki adımlar Güvenlik İş Birliği modu için SQL denetimi optimizasyonu kurallarını yapılandırır. Esnek Yönetim veya Kararlı Değişiklik modları için ilgili kontrol modunun yanındaki SQL review optimization seçeneğini tıklayın.
Şu adrese giderek DMS 5.0 konsolunda oturum açın.
-
DMS konsolunun sol üst köşesindeki
simgesinin üzerine gelin ve yolunu izleyin.NotDMS konsolunu normal modda kullanıyorsanız üst gezinme çubuğundan seçeneğini belirleyin.
Hedef güvenlik kuralı kümesini bulun ve Actions sütunundaki Edit seçeneğini tıklayın.
Details sayfasının sol gezinme bölmesinde SQL audit optimization recommendations seçeneğini tıklayın.
-
A table must have a primary key kuralını bulun ve Actions sütunundaki Edit seçeneğini tıklayın.
NotKuralları filtrelemek için Tag, Behavioral action veya Status öğesinin yanındaki
simgesini tıklayın. Tag, kural kapsamını (DDL veya DML) belirtir. Status etkinleştirilmiş veya devre dışı bırakılmış olabilir. -
Rule content configuration iletişim kutusunda parametreleri yapılandırın. Bu örnek için davranışsal eylemi Must Improve olarak ayarlayın.
NotVarsayılan sistem kuralları Must Improve seçeneğini içermez. Kullanılabilir behavioral action seçenekleri için bkz. System behavioral actions.
-
OK seçeneğini tıklayın.
Bundan sonraki veri geliştirme, veri değiştirme ve SQL denetimi gibi görevlerde DMS, SQL deyimlerinizi yapılandırılan güvenlik kurallarına göre kontrol eder.
Adım 2: Veri değişikliği yürütme
Şu adrese giderek DMS 5.0 konsolunda oturum açın.
-
DMS konsolunun sol üst köşesindeki
simgesinin üzerine gelin ve yolunu izleyin.NotDMS konsolunu normal modda kullanıyorsanız üst gezinme çubuğundan seçeneğini belirleyin.
-
Data Change Ticket Application sayfasında parametreleri yapılandırın ve Submit Application seçeneğini tıklayın.
NotParametre açıklamaları için bkz. Normal Data Modify.
Hedef güvenlik kuralı kümesiyle ilişkili veritabanı örneğini seçin.
-
Veri değişikliği için SQL kodu aşağıdaki gibidir:
CREATE TABLE test1 ( id bigint COMMENT 'id', name varchar(60) COMMENT 'name' ) DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_bin ENGINE = INNODB; INSERT INTO migration_job(id, ref_id, gmt_create, gmt_create) VALUES(1, null, now(), now());
-
Bileti gönderdikten sonra sistem, SQL deyimlerini 1. Adımda yapılandırılan güvenlik kurallarına göre kontrol eder.
Denetim; bir Must Improve öğesi, iki potansiyel sorun ve bir Suggested Improvement öğesi bulur.
View Details seçeneğini tıklayın. Belirli önerileri görüntülemek için SQL denetimi hata öğelerinin üzerine gelin.
-
Önerilere dayanarak Modify SQL seçeneğini tıklayın, SQL'i optimize edin ve ardından Confirm Change seçeneğini tıklayın.
Değişiklikler aşağıdaki gibidir:
CREATEdeyiminetest1tablosu için birincil anahtar ve açıklama ekleyin.INSERTdeyiminden yinelenengmt_createalanını kaldırın veref_idalanı için bir değer girin.
Değiştirilen SQL kodu aşağıdaki gibidir:
CREATE TABLE test1 ( id bigint PRIMARY KEY COMMENT 'id', name varchar(60) COMMENT 'name' ) DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_bin ENGINE = INNODB COMMENT = 'Comment'; INSERT INTO migration_job(id, ref_id, gmt_create) VALUES(1, 2, now()); Sistem ön kontrolü tekrar gerçekleştirir.
-
Submit for Approval seçeneğini tıklayın ve yöneticinin bileti onaylamasını bekleyin.
Onaydan sonra sistem bir yürütme görevi oluşturur.
-
Bilet onaylandıktan sonra Execute Change seçeneğini tıklayın. Task Settings iletişim kutusunda yürütme parametrelerini yapılandırın ve Confirm and Execute seçeneğini tıklayın.
NotBilet oluştururken Execution Method seçeneği Automatically execute after approval olarak ayarlanırsa sistem bu adımı otomatik olarak atlar.
Duraklatılmış bir görev yeniden başlatılırsa görev duraklatıldığı yerden devam eder.
Parameter
Description
Execution strategy
Yürütme stratejisi seçenekleri:
-
Execute Immediately: Confirm and Execute seçeneğini tıkladığınızda görevi başlatır.
-
Scheduled Execution: Görevi belirtilen gelecekteki bir zamanda çalıştırır.
Enable global transaction
Tüm deyimlerin global bir işlemde kapsanıp kapsanmayacağını belirtir. Varsayılan olarak devre dışıdır.
-
Etkin: Başarısızlık durumunda tüm değişiklikler geri alınır. Yalnızca DML deyimleri için geçerlidir, DDL için geçerli değildir.
-
Devre dışı: Deyimler sırayla yürütülür. Başarısızlık durumunda görev durur ancak önceki değişiklikler geri alınmaz.
Enable backup
Yürütmeden önce etkilenen satırların yedeğinin alınıp alınmayacağını belirtir. Varsayılan olarak etkindir. Yedekten hızlı veri geri yüklemeye olanak tanır.
Note
-
Yedekleme yalnızca UPDATE ve DELETE deyimleri için desteklenir.
-
Yedekleme MongoDB ve Redis için desteklenmez.
-
Etkin:
UPDATEveyaDELETEdeyimlerini yürütmeden önce sistem bir yedekleme komut dosyası oluşturur.-
MySQL ve MariaDB veritabanları için
REPLACE INTOyedekleme deyimi oluşturulur.Note
MySQL veritabanları arasında RDS for MySQL, PolarDB for MySQL, PolarDB-X ve diğer MySQL uyumlu kaynaklar bulunur.
-
MySQL ve MariaDB dışındaki veritabanı motorları için
INSERTyedekleme deyimi oluşturulur.
-
-
Devre dışı: Yedekleme komut dosyası oluşturulmaz.
NotSQL execution control içindeki security rules modülü; veritabanı kilit zaman aşımı, veritabanı yükü ve yürütme sonrası bekleme ilkeleri dahil olmak üzere SQL görevi yürütmeyi izler. Varsayılanları değiştirmek için bkz. SQL yürütme kontrolünü yapılandırma.
Başarılı yürütmeden sonra yürütme durumunu, yürütme sayısını, etkilenen satırları, komut dosyalarını ve günlükleri görüntülemek için Actions sütunundaki Details seçeneğini tıklayın.
Veri değişikliklerini doğrulamak için veritabanı SQL konsoluna da bağlanabilirsiniz.
Sonraki adımlar
Yürütülen deyimler, süre ve zamanlama ayrıntıları dahil olmak üzere yürütme günlüklerini görüntülemek için Details seçeneğini tıklayın.