All Products
Search
Document Center

Data Management:Perubahan skema tanpa lock

Last Updated:Mar 29, 2026

Pernyataan ALTER TABLE langsung mengunci tabel selama proses perubahan, sehingga memblokir operasi baca dan tulis. Meskipun DDL online MySQL mengurangi dampak ini pada primary, perintah tersebut tetap dieksekusi secara berurutan pada replica, yang dapat menyebabkan keterlambatan replikasi dan memengaruhi beban kerja produksi.

Data Management Service (DMS) mengatasi masalah ini melalui fitur perubahan skema tanpa lock. DMS membuat tabel temporary dengan skema baru, mereplikasi data penuh serta data log biner inkremental ke dalamnya, lalu mengganti tabel asli dengan tabel temporary tersebut—sehingga tabel Anda tetap tersedia sepanjang proses.

Prasyarat

Sebelum memulai, pastikan bahwa:

Contoh berikut menggunakan instans ApsaraDB RDS for MySQL dalam lingkungan pengembangan simulasi.

Cara kerja

Perubahan skema tanpa lock berjalan dalam tiga tahap:

  1. Pembuatan tabel temporary — DMS membuat satu atau beberapa tabel temporary yang menggunakan skema baru.

  2. Sinkronisasi data — DMS menyalin semua baris yang ada (data penuh) dan terus menerapkan perubahan masuk (data log biner inkremental) ke tabel temporary hingga sinkron dengan tabel sumber.

  3. Pertukaran tabel — DMS mengganti tabel asli dengan tabel temporary yang telah disinkronkan, lalu menghapus tabel temporary tersebut.

Saat perubahan skema tanpa lock sedang berjalan, dua tabel temporary terlihat di database. Setelah pertukaran selesai, kedua tabel temporary tersebut dihapus.

Ajukan dan eksekusi perubahan skema tanpa lock

Contoh berikut mengubah tipe data kolom long_text_a pada tabel big_table dari varchar(1024) menjadi text.

Langkah 1: Ajukan tiket (pengguna biasa)

  1. Masuk ke DMS console V5.0DMS console V5.0DMS console V5.0 sebagai pengguna biasa.

  2. Pada bilah navigasi atas, pilih Database Development > Data Change > Lockless Change.

    Dalam mode simple, arahkan kursor ke ikon icon di pojok kiri atas dan pilih All functions > Database Development > Data Change > Lockless Change.
  3. Konfigurasikan parameter berikut dan klik Submit. Untuk bidang SQL statements for change, masukkan:

    ParameterDeskripsi
    DatabaseWajib diisi. Database yang akan diubah. Pada contoh ini, dipilih database poc_dev dalam mode Secure Collaboration.
    Reason CategoryWajib diisi. Alasan perubahan, digunakan untuk mencari tiket nanti.
    Business backgroundWajib diisi. Tujuan perubahan, untuk mengurangi komunikasi yang tidak perlu.
    Execution methodWajib diisi. Cara mengeksekusi tiket setelah disetujui. Pilih Last Auditor Execute.
    Affected rowsWajib diisi. Perkiraan jumlah baris yang terpengaruh. Untuk mendapatkan jumlah pasti, jalankan kueri COUNT di SQL Console sebelum mengajukan.
    SQL statements for changeWajib diisi. Pernyataan DDL yang akan dieksekusi. Pada contoh ini, pernyataan tersebut mengubah tipe data long_text_a dari varchar(1024) menjadi text.
    SQL Statements for RollbackOpsional. SQL untuk membatalkan perubahan jika diperlukan.
    Change stakeholderOpsional. Pengguna lain yang dapat melihat detail tiket dan membantu proses persetujuan. Pengguna yang tidak tercantum tidak dapat melihat tiket, kecuali administrator DMS dan DBA.
    ALTER TABLE `big_table`
      MODIFY COLUMN `long_text_a` text NULL AFTER `name`;
  4. Pada halaman Ticket Details, tinjau tiket tersebut.

    DMS menjalankan Pemeriksaan Awal pada pernyataan SQL secara otomatis. Pemeriksaan Awal mencakup sintaksis SQL, kesesuaian jenis pernyataan dengan aturan keamanan Anda, izin pengirim, serta perkiraan jumlah baris yang akan dipindai. Anda hanya dapat mengubah detail tiket sebelum mengajukan untuk persetujuan.
  5. Setelah Pemeriksaan Awal berhasil, klik Submit for Approval, lalu klik OK pada dialog konfirmasi.

    Penting

    Setelah Anda mengajukan tiket untuk persetujuan, detail tiket tidak dapat diubah lagi.

Langkah 2: Setujui tiket (administrator DMS)

  1. Masuk ke DMS console V5.0DMS console V5.0DMS console V5.0 sebagai administrator DMS.

  2. Pada halaman utama, klik Pending Tickets di bagian My Tickets.

  3. Pada halaman My Tickets, temukan tiket tersebut dan klik nomornya di kolom Ticket Number.

  4. Pada panel Ticket Details, tinjau informasi perubahan dan klik Approve.

  5. Masukkan komentar dan klik Submit.

Langkah 3: Eksekusi tiket (pengguna biasa)

  1. Masuk ke DMS console V5.0DMS console V5.0DMS console V5.0 sebagai pengguna biasa.

  2. Pada bagian Execute di panel Ticket Details, klik Execute Change.

  3. Konfigurasikan parameter eksekusi dan klik Confirm Execution.

    DMS segera memulai tugas setelah Anda mengklik Confirm Execution.
    ParameterDeskripsiBawaan
    Execute strategyWaktu menjalankan tugas. Opsi Running immediately akan segera memulai tugas setelah Anda mengonfirmasi, sedangkan opsi Schedule menjalankan tugas pada waktu yang Anda tentukan.Running immediately
    Transaction controlApakah akan rollback saat gagal. on: jika suatu pernyataan gagal, semua pernyataan DML dalam transaksi yang sama akan di-rollback (pernyataan DDL tidak dapat di-rollback). off: pernyataan dijalankan satu per satu; jika salah satu gagal, transaksi berhenti, tetapi pernyataan yang sudah dieksekusi tidak di-rollback.off
    Data backupApakah akan menghasilkan skrip backup. on: DMS menghasilkan skrip INSERT untuk mencadangkan baris yang terpengaruh oleh pernyataan UPDATE atau DELETE. off: tidak ada skrip backup yang dihasilkan.on

Memantau progres dan memverifikasi skema

  1. Sebagai administrator DMS, arahkan kursor ke nama database di bagian Basic Information dan klik Query untuk membuka SQL Console.

  2. Di SQL Console, jalankan pernyataan berikut untuk menampilkan semua tabel di database:

    Saat perubahan skema tanpa lock sedang berjalan, dua tabel temporary muncul dalam hasil.
    SHOW TABLES;
  3. Pada bilah navigasi atas, pilih O&M > Task.

    Dalam mode simple, arahkan kursor ke ikon 2023-01-28_15-57-17.png di pojok kiri atas dan pilih All functions > O&M > Task.
  4. Klik nomor tugas untuk membuka dialog Execution details.

  5. Klik Progress di kolom Operation untuk melihat pesan Lock-Free structure change dan memantau progres real-time perubahan skema tanpa lock.

  6. Setelah tugas selesai, verifikasi skema. Tabel big_table kini menggunakan skema baru, dan tabel temporary telah dihapus.