Untuk mencegah masalah penguncian tabel saat mengubah skema tabel database, Data Management (DMS) menyediakan fitur perubahan skema tanpa lock. Fitur ini membantu menghindari gangguan operasi bisnis akibat penguncian tabel dan latensi replikasi antara instans primary dan standby selama operasi Data Definition Language (DDL) online native. Topik ini menjelaskan cara melakukan perubahan skema tanpa lock dengan mengirimkan tiket perubahan tanpa lock.
Prasyarat
Jenis database adalah RDS for MySQL, PolarDB for MySQL, MyBase for MySQL, atau sumber MySQL lainnya.
CatatanSumber lain merujuk pada database dari penyedia cloud lain atau database yang dikelola sendiri.
Engine database adalah InnoDB, RocksDB, atau X-Engine.
Binary logging diaktifkan untuk database.
CatatanUntuk PolarDB for MySQL, binary logging dinonaktifkan secara default. Untuk informasi selengkapnya, lihat Aktifkan binary logging.
Format log biner harus ROW. Jika database sebelumnya menggunakan format MIXED, ubah format tersebut menjadi ROW. Setelah itu, restart server database atau hentikan semua koneksi lama sebelum melakukan perubahan skema tanpa lock di DMS.
mode kontrol instans harus Stable Change atau Security Collaboration. Untuk informasi selengkapnya, lihat Lihat mode kontrol.
Perubahan skema tanpa lock telah diaktifkan untuk instans.
Catatan
Anda harus menggunakan akun database yang memiliki izin baca/tulis atau akun database dengan hak istimewa tinggi. Jika akun database saat ini memiliki izin yang tidak mencukupi, lakukan salah satu langkah berikut:
Berikan izin kepada akun database. Untuk informasi selengkapnya, lihat Kelola akun dan izin database.
CatatanBerikan izin ALL PRIVILEGES atau izin baca/tulis berikut kepada akun database:
ALTER, CREATE, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, TRIGGER, UPDATE, REPLICATION CLIENT, dan REPLICATION SLAVE.
Ubah akun database. Untuk informasi selengkapnya, lihat Edit informasi instans.
Pastikan database memiliki ruang disk yang cukup. Tabel temporary dibuat di database target untuk menyalin data. Pastikan ruang disk yang tersedia lebih dari dua kali ukuran tabel target. Ruang disk yang tidak mencukupi dapat menyebabkan instans terkunci. Untuk informasi selengkapnya, lihat Kinerja database.
Tabel target harus memiliki primary key atau unique key. Selama perubahan skema tanpa lock, primary key atau unique key digunakan untuk penyalinan data penuh secara tersegmentasi dan pembaruan inkremental berikutnya.
CatatanJika tabel target hanya memiliki primary key atau hanya unique key, memperbarui kunci tersebut selama perubahan skema akan menyebabkan tugas gagal.
Nama tabel target tidak boleh melebihi 56 karakter.
Fitur perubahan skema tanpa lock di DMS tidak didukung untuk PolarDB-X (termasuk PolarDB-X 1.0 dan PolarDB-X 2.0), RDS for PostgreSQL, atau database non-MySQL lainnya.
Untuk memodifikasi skema tabel, gunakan sintaks ALTER TABLE. Sintaks seperti CREATE INDEX tidak didukung.
Untuk instans PolarDB, waktu lock akhir pada tabel asli mungkin jauh lebih lama daripada timeout lock switch tabel. Hal ini karena transaksi jangka panjang pada node read-only dapat memengaruhi node primary setelah mendapatkan lock, sehingga mencegah penyelesaian DDL pada node primary dan berpotensi menyebabkan penguncian tabel yang berkepanjangan. Anda dapat menghindari hal ini dengan memodifikasi parameter.
Prosedur
Langkah-langkah berikut menggunakan contoh instans dalam mode Security Collaboration.
- Masuk ke Konsol DMS V5.0.
Di bilah navigasi atas, pilih .
CatatanJika Anda menggunakan Konsol DMS dalam mode simple, arahkan pointer ke ikon
di pojok kiri atas konsol dan pilih . Konfigurasikan tiket perubahan tanpa lock. Tabel berikut menjelaskan beberapa parameter tersebut.
Untuk informasi selengkapnya, lihat Prosedur.
Parameter
Deskripsi
Database
Cari dan pilih satu atau beberapa database target.
Izin Saya: Anda hanya dapat mencari dan memilih database yang memiliki izin ubah.
Semua: Anda dapat mencari dan memilih semua database, kecuali yang memiliki kontrol akses metadata yang diaktifkan.
CatatanJika Anda tidak memiliki izin ubah untuk database target, pilih di bilah menu atas. Di halaman Permission Ticket, klik untuk meminta izin yang diperlukan.
Execution Method
Pilih metode eksekusi untuk tiket:
Ticket Submitter Executes Upon Approval
Automatically Execute Upon Approval
Last Approver Executes
CatatanJika Anda adalah administrator DMS, Anda dapat memodifikasi metode eksekusi di halaman Configuration Management pada modul . Untuk informasi selengkapnya, lihat Manajemen konfigurasi.
Affected Rows
Jumlah perkiraan baris data yang terpengaruh oleh pembaruan ini.
Change SQL
Masukkan pernyataan DDL, seperti
ALTER TABLEatauOPTIMIZE.CatatanJika Anda memasukkan pernyataan Data Manipulation Language (DML), Anda sedang melakukan tugas perubahan data tanpa lock. Untuk informasi selengkapnya, lihat Perubahan tanpa lock DML.
Klik Submit Ticket.
Sistem secara otomatis melakukan precheck SQL. Jika precheck gagal, klik Modify SQL untuk memodifikasi pernyataan SQL berdasarkan alasan kegagalan, lalu kirimkan tiket lagi.
Setelah tiket disetujui, buka bagian Execution di halaman detail tiket dan klik Execute Change.
Konfigurasikan parameter eksekusi tugas.
Item Konfigurasi
Deskripsi
Execution Policy
Execute Immediately: Opsi default. Tugas dieksekusi segera setelah Anda mengklik Confirm Execution.
Scheduled Execution: Pilih waktu mulai untuk tugas. Setelah Anda mengklik Confirm Execution, tugas dijalankan pada waktu yang ditentukan.
CatatanWaktu eksekusi aktual tugas terjadwal mungkin memiliki margin kesalahan ±1 menit.
Specify End Time
Tentukan waktu berakhir untuk tugas. Jika tugas belum selesai pada waktu berakhir yang ditentukan, sistem akan menghentikan eksekusi sisa tugas SQL. Hal ini mencegah tugas berjalan selama jam sibuk dan memengaruhi operasi bisnis.
CatatanWaktu berakhir aktual tugas mungkin memiliki margin kesalahan ±1 menit.
Enable Primary/Standby Check
Mengaktifkan pemeriksaan ini memastikan sinkronisasi data real-time antara instans primary dan standby, ketersediaan tinggi, serta pemulihan cepat dari kegagalan.
Grayscale Type
Kebijakan untuk mengeksekusi pernyataan SQL secara batch.
No Grayscale: DMS secara otomatis mengeksekusi semua pernyataan SQL dalam tugas.
Pause After First SQL Statement Succeeds: Setelah pernyataan SQL pertama berhasil dieksekusi, DMS secara otomatis menjeda tugas. Untuk melanjutkan, klik Retry. Sisa pernyataan SQL kemudian dieksekusi sekaligus tanpa jeda tambahan.
Pause After Each SQL Statement Succeeds: Tugas secara otomatis berhenti setelah setiap pernyataan SQL dieksekusi. Anda harus mengklik Retry secara manual untuk mengeksekusi pernyataan SQL berikutnya.
Klik Confirm Execution.
Saat tugas DMS sedang berjalan, Anda dapat menjeda kapan saja. Ketika tugas yang dijeda dijalankan ulang, tugas tersebut dimulai dari awal.
Di bagian Execution, Anda dapat melihat status eksekusi tugas, pengaturan tugas, detail, dan log penjadwalan.
Anda juga dapat melihat progres perubahan tanpa lock di . Untuk informasi selengkapnya, lihat Lihat progres perubahan tanpa lock.
Setelah Anda mengaktifkan perubahan skema tanpa lock untuk suatu instans, metode tanpa lock juga diprioritaskan untuk jenis tiket dan tugas perubahan skema berikut yang Anda jalankan pada instans tersebut: