Data Management (DMS), tabloları kilitlemeden şema değişiklikleri yapmanıza olanak tanır. Bu sayede iş süreçlerinizin tablo kilitleri nedeniyle engellenmesi önlenir ve MySQL'in çevrimiçi DDL özelliğinin birincil-ikincil çoğaltma sırasında neden olduğu gecikme süresi azaltılır.
Dikkat edilmesi gerekenler
Hızlı başlangıç örneğinde, örneğin kontrol modu Güvenlik İş Birliği'dir. Bu özelliği günlük çalışmanızda kullanırken, örneğin Kontrol modları Kararlı Değişiklik veya Güvenlik İş Birliği olabilir.
Simüle edilmiş geliştirme ortamındaki ApsaraDB RDS for MySQL örneği için DMS kilitsiz şema değişikliği ilkesini önceden etkinleştirmeniz gerekir.
Yordam
Bu örnekte, Güvenlik İş Birliği modunda poc_dev veritabanındaki big_table tablosunun long_text_a sütununun veri türü varchar(1024) değerinden text değerine değiştirmek üzere kilitsiz şema değişikliği özelliği kullanılır.
-
Normal bir kullanıcı olarak bilet gönderin.
Normal bir kullanıcı olarak the DMS console V5.0 konsolunda oturum açın.
-
Üst gezinme çubuğunda seçeneklerini belirleyin.
NotDMS konsolunu basit modda kullanıyorsanız, konsolun sol üst köşesindeki
simgesinin üzerine gelin ve All functions > Database Development > Data Change > Lockless Change seçeneklerini belirleyin. -
Aşağıdaki tabloda açıklanan parametreleri ayarlayın ve Submit düğmesini tıklayın.
Parametre
Açıklama
Database (Zorunlu)
Zorunludur. Veri değiştirmek istediğiniz veritabanı. Bu örnekte, Güvenlik İş Birliği modundaki
poc_devveritabanı seçilmiştir.Business Background (Zorunlu)
Zorunludur. Veri değişikliğinin amacı veya hedefi. Bu bilgi, gereksiz iletişimi azaltır.
Affected Rows (Zorunlu)
Zorunludur. Veri silme işleminden etkilenecek tahmini veri satırı sayısı. Gerçek etkilenen satır sayısını elde etmek için SQL deyimlerinde
COUNTişlevini kullanabilir ve SQL deyimlerini SQLConsole sekmesinde çalıştırabilirsiniz.SQL Statements for Change (Zorunlu)
Zorunludur. Veri değiştirmek için çalıştırmak istediğiniz SQL deyimi. Bu örnekte aşağıdaki
ALTERdeyimi çalıştırılır:ALTER TABLE `big_table` MODIFY COLUMN `long_text_a` text NULL AFTER `name`;NotBu deyim,
long_text_asütununun veri türünüvarchar(1024)değerindentextdeğerine değiştirir. -
Ticket Details sayfasında bilet ayrıntılarını doğrulayın.
NotBilet ayrıntılarını Ticket Details sayfasında görüntüleyebilirsiniz. DMS, çalıştırmak istediğiniz SQL deyimini ön denetimden geçirir. Ön denetim öğeleri arasında SQL deyiminin sözdizimi, SQL deyiminin türünün güvenlik kurallarında yapılandırdığınız türle eşleşip eşleşmediği, bileti gönderen kullanıcının izinleri ve taranması tahmini edilen satır sayısı bulunur.
-
Bilet ayrıntıları doğrulandıktan ve ön denetimi tamamlandıktan sonra Submit for Approval düğmesini tıklayın. Görüntülenen mesajda OK düğmesini tıklayın.
ÖnemliBilet ayrıntılarını yalnızca bileti onaya göndermeden önce değiştirebilirsiniz.
-
DMS yöneticisi olarak bileti onaylayın.
DMS yöneticisi olarak DMS console V5.0 konsolunda oturum açın.
DMS konsolunun Ana sayfasında, My Tickets bölümündeki Pending Tickets bağlantısını tıklayın.
My Tickets sayfasında işlemek istediğiniz bileti bulun ve Ticket Number sütunundaki bilet numarasını tıklayın.
Ticket Details panelinde biletteki veri değişikliği bilgilerini doğrulayın ve Approve düğmesini tıklayın.
Görüntülenen iletişim kutusunda yorumları girin ve Submit düğmesini tıklayın.
-
Bileti normal bir kullanıcı olarak çalıştırın.
Normal bir kullanıcı olarak DMS console V5.0 konsolunda oturum açın.
-
Bilet Ayrıntıları panelindeki Execute bölümünde Execute Change düğmesini tıklayın. Görüntülenen iletişim kutusunda aşağıdaki tabloda açıklanan parametreleri ayarlayın ve Confirm Execution düğmesini tıklayın.
Parametre
Açıklama
Execute strategy
Görevin hemen mi yoksa planlanan bir zamanda mı çalıştırılacağını belirtir. Geçerli değerler:
Running immediately: DMS, görevi gönderdikten sonra hemen çalıştırır.
Schedule: DMS, belirttiğiniz planlanan zamanda görevi çalıştırır.
Varsayılan değer: Running immediately.
Transaction Control
İşlem kontrolünün etkinleştirilip etkinleştirilmeyeceğini belirtir. Geçerli değerler:
on: Bir SQL deyimi çalıştırılamazsa aynı işlemdeki yürütülen tüm DML deyimleri geri alınır. DDL deyimleri geri alınamaz.
off: Her seferinde bir SQL deyimi çalıştırılır. Bir SQL deyimi çalıştırılamazsa işlem durdurulur. Aynı işlemdeki diğer yürütülen SQL deyimleri geri alınmaz.
Varsayılan değer: off.
Data Backup
Verilerin yedeklenip yedeklenmeyeceğini belirtir. Geçerli değerler:
on: DMS,
UPDATEveyaDELETEdeyimleri çalıştırıldığında etkilenecek verileri yedeklemek içinINSERTbetikleri oluşturur.off: Önceki veriler için yedekleme betiği oluşturulmaz.
Varsayılan değer: on.
NotConfirm Execution düğmesini tıkladıktan sonra DMS görevi çalıştırmaya başlar.
Görev ilerlemesini görüntüleme ve şemayı doğrulama
-
DMS yöneticisi olarak Basic Information bölümünde değiştirilecek veritabanının adının üzerine gelin. Görüntülenen menüde Query bağlantısını tıklayın.
Otomatik olarak SQL Console sayfasına yönlendirilirsiniz.
-
SQL Console sekmesinde SQL düzenleyiciye bir SQL sorgu deyimi girin. Ardından SQL düzenleyicinin üst kısmındaki Execute düğmesini tıklayın.
Örneğin, geçerli veritabanındaki tabloları sorgulamak için aşağıdaki SQL deyimini girebilirsiniz.
SHOW TABLES;NotDMS, bir tablonun şemasını tabloyu kilitlemeden değiştirdiğinde iki geçici tablo oluşturulur.
-
Üst gezinme çubuğunda seçeneklerini belirleyin.
NotDMS konsolunu basit modda kullanıyorsanız, DMS konsolunun sol üst köşesindeki
simgesinin üzerine gelin ve seçeneklerini belirleyin. Yönetmek istediğiniz görevin görev numarasını tıklayın. Execution details iletişim kutusu görüntülenir.
Operation sütunundaki Progress bağlantısını tıklayın.
Kilitsiz yapı değişikliği mesajında görevin ilerleme bilgilerini görüntüleyin.
-
Görev tamamlandıktan sonra şemayı doğrulayın.
big_tabletablosunun şeması değiştirilir ve geçici tablolar silinir.