Data Management Service (DMS) içindeki standart veri değişikliği özelliği, bir veritabanındaki verileri değiştirmek için SQL ifadelerini çalıştırmanıza olanak tanır. INSERT, UPDATE, DELETE ve TRUNCATE gibi ifadeleri hemen veya zamanlanmış olarak çalıştırabilirsiniz. Bu konuda standart veri değişikliği biletinin nasıl gönderileceği açıklanmaktadır.
İşlem genel bakışı
-
Standart veri değişikliği bileti yapılandırın ve gönderin
Değiştirmek istediğiniz veritabanını veya örneği seçin. Değişiklik için SQL ifadelerini girin veya bir SQL eki yükleyin.
-
Ön denetim
Ön denetim aşamasında DMS, gönderdiğiniz SQL ifadelerini doğrular. DMS, SQL türünün standart veri değişikliği için geçerli olup olmadığını ve gerekli izinlere sahip olup olmadığınızı kontrol eder.
-
Bileti onaylayın
Onaylama aşamasında DMS, SQL ifadelerinin veritabanı performansını etkileyip etkilemeyeceğini kontrol eder. Ayrıca bileti gönderen kullanıcının SQL ifadelerini çalıştırma iznine sahip olup olmadığını da denetler.
-
Veri değişikliğini yürütün
Değişiklik için gönderilen SQL ifadeleri çalıştırılır. Değişiklik hatalıysa veya iş gereksinimleri nedeniyle SQL ifadelerini geri almanız gerekiyorsa DMS, bir geri alma bileti oluşturmanıza olanak tanır. Bu sayede değişiklik tamamlandıktan sonra orijinal verileri hızla geri yükleyebilirsiniz.
Strateji seçimi
Veri değişikliği yaparken iş senaryonuzuna uygun bir yöntem seçebilirsiniz:
Etkiyi önce kilitsiz bir değişiklikle doğrulayın: Kilitsiz değişiklik, tek tablo ve basit SQL işlemleri için uygundur. Parçalanmayı gidermek ve sonucu kontrol etmek amacıyla kilitsiz değişiklik bileti gönderin.
Sonuç beklenenden farklıysa standart veri değişikliğine geçin: Kilitsiz değişiklik beklenen sonucu üretmezse bunun yerine standart veri değişikliği bileti göndererek değişikliği gerçekleştirin.
Kilitsiz veri değişikliği yalnızca tek tablo ve basit SQL işlemlerini destekler. Daha karmaşık değişiklikler için doğrudan standart veri değişikliği kullanın.
Ön koşullar
Örneğin kontrol modu Stabil Değişim veya Güvenlik İş Birliği olmalıdır. Daha fazla bilgi için bkz. Kontrol modları.
Notlar
Biletin onay durumundan bağımsız olarak bileti kapatabilirsiniz. Bu sayede bilet onaylandıktan sonra görevin yanlışlıkla yürütülmesini önlersiniz.
-
Hazırlama ortamındaki veri değişikliklerini biletlerle yönetebilirsiniz. Biletler; veri yedeklemesi ve satır sayısı kontrolleri gibi koruma mekanizmaları sağlar. Bir işlem beklenen sonucu üretmezse verileri hızla geri yükleyebilirsiniz.
NotBilet onaylamanın geliştirme verimliliğini etkileyeceğinden endişe duyuyorsanız onaydan muaf ayarları yapılandırabilirsiniz. Daha fazla bilgi için bkz. SQL değişikliği.
-
Mantıksal veritabanları, mantıksal tablolar ve yönlendirme algoritmaları yapılandırdıysanız parçalama değişiklikleri için tek bir bilet gönderebilirsiniz. Her fiziksel veritabanı ve tablo için ayrı biletler göndermenize gerek kalmaz.
Bir yönlendirme algoritması kullanıyorsanız ve güncelleme koşulu bir yönlendirme alanı içeriyorsa ifade otomatik olarak doğru fiziksel veritabanına ve tabloya yönlendirilerek yürütülür.
Aşağıdaki durumlarda SQL ifadesi her bir parçada sırayla çalışır; bu da çalışma süresini artırabilir: Yönlendirme algoritması yapılandırılmamışsa, değişiklik koşulu bir yönlendirme alanı içermiyorsa veya yönlendirme alanının türü ya da yapı tanımı hatalıysa.
DMS, yalnızca
UPDATEveyaDELETEifadelerini yürütmeden önce otomatik olarak bir yedekleme betiği eki oluşturur.
Yordam
Adım 1: Bileti yapılandırın ve gönderin
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ğunda yolunu izleyin.
-
Veri Değişikliği Bileti İsteği sayfasında bilet parametrelerini yapılandırın. Aşağıdaki tabloda bazı parametreler açıklanmıştır.
NotAşağıdaki örnek, Güvenlik İş Birliği modundaki bir örnek için parametrelerin nasıl yapılandırılacağını gösterir. Stabil Değişim modundaki bir örnek seçerseniz parametreler farklı olabilir.
Veri kaynağı örneklerini değiştirme özelliği aşamalı olarak kullanıma sunulmaktadır.
Yapılandırma öğesi
Gerekli
Açıklama
Change Target
Evet
Database veya Data Source Instance seçebilirsiniz.
NotŞu anda veri kaynağı örneği değişiklikleri için yalnızca aşağıdaki türlerdeki MySQL örneklerini seçebilirsiniz: RDS MySQL, PolarDB for MySQL ve AnalyticDB for MySQL.
Database veya Data Source Instance
Evet
Değişiklik izniniz olan bir veritabanını veya örneği arayıp seçin.
NotŞu anda veri kaynağı örneği değişikliği için yalnızca bir örnek seçebilirsiniz.
Reason Category
Evet
Daha sonra kolayca bulabilmeniz için veri değişikliğinin nedenini seçin.
NotYöneticiler, neden kategorileri listesini bölümünde yapılandırabilir. Daha fazla bilgi için bkz. Yapılandırma yönetimi.
Business Background
Evet
İletişim ek yükünü azaltmak için değişikliğin nedenini veya hedefini ayrıntılı olarak açıklayın.
Execution Method
Evet
Bilet için bir yürütme yöntemi seçin:
-
Onaylandıktan sonra işlemi gönderen kişi yürütür.
-
Onaylandıktan sonra otomatik olarak yürütülür.
-
Son onaylayan tarafından yürütülür.
NotYöneticiler, yürütme yöntemleri listesini bölümünde değiştirebilir. Daha fazla bilgi için bkz. Yapılandırma yönetimi.
Affected Rows
Evet
Bu değişikliğin etkileyeceği veri satırı sayısını tahmin edin.
Change SQL
Evet
Text veya Attachment seçebilirsiniz.
SQL Text
Evet
Bu yapılandırma öğesi yalnızca Change SQL değerini Text olarak ayarlarsanız görünür. SQL metin kutusuna doğrudan yürütülebilen SQL ifadelerini girin.
Not-
Birden çok SQL ifadesini noktalı virgül (;) ile ayırın.
-
Hedef bir örnek ise SQL ifadelerindeki her tablo adından önce veritabanı adını eklemeniz gerekir.
${dbName}.${tableName}biçimini kullanın. -
Bileti gönderdiğinizde sistem SQL sözdizimini otomatik olarak kontrol eder. Sözdizimi hatalıysa bileti gönderemezsiniz.
Attachment
Evet
Bu yapılandırma öğesi yalnızca Change SQL değerini Attachment olarak ayarlarsanız görünür. Değişiklik için SQL ekini yükleyin.
NotEk .txt, .zip veya .sql dosyası olabilir. Maksimum dosya boyutu 15 MB'tır.
Rollback SQL
Hayır
Text veya Attachment seçebilirsiniz.
NotGeri alma SQL'sini girmeniz veya bir geri alma dosyası yüklemeniz durumunda DMS, geri alma bileti oluştururken geri alma SQL bilgilerini otomatik olarak doldurur. Aksi takdirde bilgileri kendiniz girmeniz gerekir.
SQL Text
Hayır
Bu yapılandırma öğesi yalnızca Rollback SQL değerini Text olarak ayarlarsanız görünür. Geri alma SQL ifadelerini girin. Geri alma SQL'si, değişiklik SQL'sinin ters betiğidir.
Attachment
Hayır
Bu yapılandırma öğesi yalnızca Rollback SQL değerini Attachment olarak ayarlarsanız görünür. Geri alma SQL ekini yüklemek için Upload File düğmesini tıklayın.
NotEk .txt, .zip veya .sql dosyası olabilir. Maksimum dosya boyutu 15 MB'tır.
Stakeholders
Hayır
Belirtilen paydaşlar bileti görüntüleyebilir ve üzerinde iş birliği yapabilir. Paydaş olmayan kullanıcılar, yöneticiler ve DBA'lar hariç bileti görüntüleyemez.
Ticket Attachment
Hayır
Geçerli bilet için ek bilgiler sağlamak üzere bir ek yükleyin.
Submit Request düğmesini tıklayın.
Adım 2: SQL'i ön denetimden geçirin
Bileti gönderdikten sonra sistem otomatik olarak bir ön denetim gerçekleştirir. Ön denetim başarısız olursa istemi temel alarak SQL ifadelerini değiştirin ve tekrar deneyin.
Ön denetim başarılı olduktan sonra her bir kontrol öğesinin (SQL Splitting, Type Check, Permission Check, SQL Review ve Check Scanned Rows) durumu Passed olarak görüntülenir. Affected Rows değeri de gösterilir. Etkilenen satırların gerçek sayısı SQL yürütme davranışına bağlıdır.
Adım 3: Bileti onaylayın
Ön denetim başarılı olduktan sonra Submit for Approval düğmesini tıklayın. Notice iletişim kutusunda OK düğmesini tıklayın.
Veri değişiklikleri için varsayılan onay şablonundaki onaylayan bir DBA'dır. Varsayılan onay şablonunu değiştirmek için bkz. Varsayılan onay şablonunu değiştirin.
Notice iletişim kutusu; fiziksel veritabanı sayısı, SQL ifadeleri sayısı ve tahmini etkilenen satır sayısı gibi doğrulama bilgilerini görüntüler. Sistem tarafından doğrulanan etkilenen satır sayısı, girdiğiniz sayıdan farklıysa kırmızı bir uyarı mesajı görünür. Bileti göndermeden önce bilgileri onaylayın.
Adım 4: Değişikliği yürütün
Mümkünse değişiklikleri yoğun olmayan saatlerde yürütün.
-
Bilet onaylandıktan sonra Execute Change düğmesini tıklayın. Task Settings iletişim kutusunda görev yürütme parametrelerini ayarlayın ve Execute düğmesini tıklayın.
NotBileti oluştururken Execution Method değerini Execute automatically after approval olarak ayarlarsanız sistem bu adımı atlar.
Duraklatılmış bir görevi yeniden başlatırsanız betik duraklatıldığı yerden devam eder.
Yapılandırma öğesi
Açıklama
Execution Policy
Bir yürütme ilkesi seçin:
-
Execute Immediately: Execute düğmesini tıkladıktan sonra görev hemen başlar.
-
Execute: Görev için bir başlangıç saati belirtin. Örneğin, görevi 22 Mayıs 2024 tarihinde 00:00:00 saatinde çalıştırın.
NotZamanlanmış bir görevin gerçek yürütme zamanında ±1 dakikalık bir hata payı olabilir.
Scheduled Execution
Görev için bir bitiş saati belirtin. Belirtilen bitiş saatinde görev tamamlanmazsa sistem kalan SQL görevlerinin çalışmasını durdurur. Bu sayede görevlerin yoğun saatlerde çalışması ve iş operasyonlarını etkilemesi önlenir.
NotGörevin gerçek bitiş zamanında ±1 dakikalık bir hata payı olabilir.
Specify End Time
Global işlemlerin etkinleştirilip etkinleştirilmeyeceğini seçin. Bu özellik varsayılan olarak devre dışıdır.
-
Etkinleştir: Yürütme başarısız olursa tüm değişiklikler geri alınır. Bu durum yalnızca DML ifadeleri için geçerlidir, DDL ifadeleri için geçerli değildir.
-
Devre dışı bırak: SQL görevleri tek tek gönderilir. Bir görev başarısız olursa yürütme durur ancak hiçbir değişiklik geri alınmaz.
Enable Global Transaction
Yedeklemelerin etkinleştirilip etkinleştirilmeyeceğini seçin. Bu özellik varsayılan olarak etkindir. Bu özelliği etkinleştirirseniz daha sonra verileri hızla geri yüklemek için yedekleme dosyasını kullanabilirsiniz.
Not-
Veri yedeklemesi yalnızca UPDATE ve DELETE ifadelerini yürütürken desteklenir.
-
MongoDB ve Redis için veri yedeklemesi desteklenmez.
-
En fazla 500.000 satır veri yedeklenebilir. Fazlası otomatik olarak kırpılır.
-
İlişkili tablolar için veri yedeklemesi desteklenmez.
-
Etkinleştir:
UPDATEveyaDELETEifadelerini yürütmeden önce sistem otomatik olarak bir yedekleme betiği eki oluşturur.-
Veritabanı MySQL veya MariaDB ise
REPLACE INTOyedekleme ifadesi oluşturulur.NotMySQL şunları içerir: RDS MySQL, PolarDB for MySQL, PolarDB-X ve diğer MySQL kaynakları.
-
Veritabanı MySQL veya MariaDB dışındaki bir motor ise
INSERTyedekleme ifadesi oluşturulur.
-
-
Devre dışı bırak: Yedekleme eki oluşturulmaz.
Enable Backup
Veritabanı için birincil/standby kontrolünü etkinleştirdikten sonra birincil ve standby örnekler arasında gerçek zamanlı veri eşitlemesini sağlayabilirsiniz. Bu sayede veritabanı yüksek kullanılabilirliği ve hızlı olağanüstü durum kurtarma iyileştirilir.
Enable Primary/Standby Check
SQL ifadelerini toplu halde yürütme ilkesi.
-
Grayscale Type: DMS, görevdeki tüm SQL ifadelerini otomatik olarak yürütür.
-
No Grayscale: İlk SQL ifadesi başarıyla yürütüldükten sonra DMS yürütmeyi otomatik olarak duraklatır. Devam etmek için Yeniden Dene düğmesini tıklayın. Kalan SQL ifadeleri başka bir duraklama olmadan tek seferde yürütülür.
-
Pause after the first SQL statement succeeds: Her SQL ifadesinden sonra yürütme duraklatılır. Sonraki SQL ifadesini yürütmek için Yeniden Dene düğmesini manuel olarak tıklamanız gerekir.
NotSQL görevlerinin yürütülmesi, Pause after each SQL statement succeeds modülü tarafından, özellikle de Security Rules bölümü tarafından izlenir. Buna SQL yürütmeden önce veritabanı kilidi zaman aşımı, veritabanı yük kontrolleri ve SQL yürütmeden sonra bekleme ilkeleri gibi mekanizmalar dahildir. Varsayılan algılama noktası ayarlarını değiştirmek için bkz. SQL yürütme kontrolünü yapılandırın.
Bilet başarıyla yürütüldükten sonra SQL Execution Control sütununda Actions düğmesini tıklayarak yürütme durumu, yürütme sayısı, etkilenen satır sayısı, yürütme betiği ve günlükler gibi ayrıntıları görüntüleyin.
Bilet başarıyla yürütüldükten sonra hedef veritabanının SQL penceresine giderek veri değişikliğinin beklentilerinizi karşılayıp karşılamadığını kontrol edebilirsiniz.
-
İsteğe bağlı: Orijinal verileri hızla geri yüklemek için bir geri alma bileti oluşturun.
Veri değişikliği beklentilerinizi karşılamazsa orijinal verileri hızla geri yüklemek için bir geri alma bileti oluşturabilir veya manuel olarak standart bir veri değişikliği bileti gönderebilirsiniz. Aşağıdaki adımlar bir geri alma biletinin nasıl oluşturulacağını göstermektedir:
Biletin Details alanında hedef görevin sağ tarafındaki Execution düğmesini tıklayın.
-
Bir geri alma Generate Rollback Ticket seçin ve Source düğmesini tıklayın. Aşağıdaki üç geri alma kaynağı desteklenir:
Geri alma metni: Bileti yapılandırırken girdiğiniz geri alma metni.
Geri alma eki: Bileti yapılandırırken yüklediğiniz geri alma eki.
-
Yedekleme dosyası: Bilet yürütme sırasında oluşturulan yedekleme eki.
NotOrijinal verileri bir yedekleme dosyası kullanarak geri yüklemek için değişikliği yürütmeden önce yedeklemeleri etkinleştirmeniz gerekir.
-
(İsteğe bağlı): Gerektiğinde geri alma metnini, ekini veya yedekleme dosyasını değiştirebilirsiniz.
Geri alma metni: SQL metin kutusunda doğrudan değiştirebilirsiniz.
Geri alma eki veya yedekleme dosyası: Eki yerel bilgisayarınıza indirebilir, değiştirdikten sonra geri alma biletine yeniden yükleyebilirsiniz.
Geri alma bilgilerinin doğru olduğunu onayladıktan sonra OK düğmesini tıklayın. Sonraki bilet süreci standart bir veri değişikliği biletiyle aynıdır.
-
Yedekleme dosyasını indirin.
Yedekleme dosyasını kaydetmek veya DMS'e yüklemeden önce değiştirmek için indirebilirsiniz.
-
Actions sütununda Download Backup düğmesini tıklayın. Yedekleme dosyası aşağıdaki ana bölümleri içerir:
Değişiklik için orijinal SQL ifadesi.
Veri değişikliği için sorgu SQL ifadesi.
Veri değişikliği yedekleme SQL'si.
Örneğin:
/* [Database]: rds@rm-bp144d5ky4l4rli0417****.mysql.rds.aliyuncs.com:3306[rds mysql] */ /* [SQL]: UPDATE t_order SET product_id = 88 WHERE id = 10054 [BACKUP SQL]: SELECT * FROM t_order WHERE id = 10054 */ REPLACE INTO `t_order`(`id`,`product_id`,`gmt_create`,`gmt_modified`,`customer_id`,`price`,`status`,`province`) VALUES (10054,81,'2021-12-14 09:44:44','2021-12-14 09:44:44',71,63.45,'Success','Hangzhou'); -
Yedekleme dosyasından yedekleme ifadesini çıkarın. Yedekleme ifadesinin doğru olduğunu onayladıktan sonra verileri gerektiği şekilde geri yüklemek için yeni bir standart veri değişikliği bileti gönderin.
NotYanlışlıkla bir
UPDATEifadesi yürütüldüyse ve yedekleme ifadesi birINSERTifadesiyse kurtarma yöntemini kendiniz belirlemeniz gerekir.
-
-
(İsteğe bağlı) Değişikliğin beklentileri karşıladığını doğrulayın.
Bilet ayrıntıları sayfasında Submit Request alanında fare işaretçisini veritabanı adının üzerine getirin ve Basic Information düğmesini tıklayın.
SQL Console'a yönlendirilirsiniz. Tablo verilerini sorgulayarak beklentilerinizi karşılayıp karşılamadığını kontrol edin.
SSS
-
S: DMS'de bir veri değişikliği gönderdiğimde gönderim şu hata mesajıyla başarısız oluyor: "Yayınlanan XXX veritabanının topolojisi, değişiklik temel çizgisi veritabanının topolojisiyle tutarsız. Lütfen topolojiyi düzeltin ve tekrar deneyin."
C: Mantıksal bir veritabanı değişikliği için temel çizgisi veritabanının ve üretim veritabanının parçalama yapısı tutarlı olmalıdır. Örneğin, temel çizgisi veritabanında 8 parça ve 256 tablo varsa üretim veritabanında da 8 parça ve 256 tablo olması gerekir. Çevrimiçi değişiklikler için betik, üretim veritabanı ile temel çizgisi veritabanı karşılaştırılarak oluşturulduğu için bu tutarlılık gereklidir.
-
S: DMS'de bir veri değişikliği bileti oluştururken veritabanını bulamıyorum.
C: Veritabanı açılır listesi mevcut tüm veritabanlarını göstermeyebilir. Genellikle yalnızca son kullandığınız veritabanlarını gösterir. Bir veritabanı açılır listede yoksa onu aramanız gerekir. Redis için veritabanı adına göre arama yapın. RDS PostgreSQL veritabanları farklı çalışır: Şema adına göre arama yapmanız gerekir. Örneğin,
publicaramasıpublic:postgresbiçimindeki veritabanlarını döndürür. Ayrıca SQL Console penceresinden bağlantı dizesini kopyalayıp arama için kullanabilirsiniz. -
S: Birden çok veritabanı seçip bir veri değişikliği bileti gönderdiğimde değişiklikler hangi durumlarda tek bir bilette birleştirilir, hangi durumlarda birden çok bilete bölünür?
C: Biletlerin birleştirilmesi veya bölünmesi, seçilen veritabanlarının güvenlik kuralları ve sahipleri tarafından belirlenir:
Veritabanları aynı güvenlik kuralını kullanıyor ve aynı sahibi varsa birden çok görev içeren tek bir bilette birleştirilirler.
Veritabanları farklı güvenlik kuralları kullanıyor veya farklı sahiplere sahipse birden çok alt bilete bölünürler.