Saat instans ApsaraDB RDS memasuki status Locking, pernyataan INSERT dan UPDATE gagal. Halaman ini menjelaskan penyebab penguncian, cara mengatasinya, serta langkah pencegahan agar tidak terjadi kembali.
Gejala
Pada halaman Basic Information instans Anda, Status menampilkan Locking. Pernyataan INSERT dan UPDATE mengembalikan error.
Untuk instans MySQL 5.6, 5.7, atau 8.0 yang menjalankan versi mesin minor 20190815 atau lebih baru, jenis kunci menentukan operasi mana yang diblokir:
| Jenis kunci | Kondisi pemicu | Operasi yang diblokir |
|---|---|---|
LOCK_WRITE_GROWTH | Penyimpanan instans primer penuh | Operasi yang meningkatkan penggunaan disk. Untuk menghapus data di bawah kunci ini, gunakan DROP atau TRUNCATE — DELETE menghasilkan file log biner, yang meningkatkan penggunaan disk dan membuat kunci tetap aktif. |
LOCK_READ | Penyimpanan instans read-only penuh | Semua operasi baca dan tulis |
LOCK_WRITE | Kedaluwarsa instans, kedaluwarsa host ApsaraDB MyBase, atau migrasi instans | Semua operasi tulis, termasuk DROP dan TRUNCATE |
Ketika LOCK_WRITE_GROWTH aktif dan Anda menjalankan pernyataan yang diblokir, error yang muncul adalah:
ERROR 1290 (HY000): The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execute this statementUntuk instans MySQL 5.1 dan 5.5 (versi mesin minor apa pun), serta untuk instans MySQL 5.6, 5.7, atau 8.0 yang menjalankan versi mesin minor sebelum 20190815, tidak ada operasi yang diizinkan saat instans dikunci, terlepas dari penyebab penguncian tersebut.
Diagnosis penyebab
Periksa kondisi berikut sebelum mengambil tindakan:
| Penyebab | Cara memeriksa |
|---|---|
| Penyimpanan penuh | Buka halaman Basic Information. Di bagian Usage Statistics, periksa bilah penggunaan penyimpanan. Jika menunjukkan 100% atau hampir penuh, maka kehabisan penyimpanan adalah penyebabnya. |
| Pembayaran tertunda atau kedaluwarsa | Periksa saldo Akun Alibaba Cloud Anda untuk pembayaran tertunda. Untuk instansi langganan, verifikasi tanggal kedaluwarsa pada halaman Basic Information. |

Atasi kunci akibat penyimpanan penuh
Terdapat dua opsi: bebaskan ruang penyimpanan dengan menghapus data, atau perluas kapasitas penyimpanan.
Buat backup data Anda sebelum menghapusnya untuk mencegah kehilangan data.
Bebaskan ruang penyimpanan
Buka halaman Instances. Pilih Wilayah tempat instans Anda berada, lalu klik ID instans.
Di panel navigasi kiri, klik Monitoring and Alerts untuk melihat distribusi penyimpanan berdasarkan tipe data.

Hapus data berdasarkan komponen yang mengonsumsi ruang penyimpanan:
File temporary (metrik
temp_file_size)MySQL menghasilkan tabel temporary untuk operasi sorting, grouping, dan join, serta file cache log biner untuk transaksi besar. Untuk detailnya, lihat Apa yang harus saya lakukan jika instans ApsaraDB RDS untuk MySQL berada dalam status Locked karena kapasitas penyimpanannya habis oleh file temporary?
File log (metrik
binlog_sizedangeneral_log_size)Mesin database Cara membebaskan ruang log MySQL Di halaman Monitoring and Alerts, periksa penggunaan penyimpanan, lalu hapus file log. Lihat Apa yang harus saya lakukan jika kapasitas penyimpanan instans ApsaraDB RDS untuk MySQL habis oleh file log biner? dan FAQ tentang fitur General Query Log ApsaraDB RDS untuk MySQL PostgreSQL File log tidak dapat dihapus secara manual. Hapus slot replikasi yang tidak aktif agar AliPG secara otomatis menghapus log WAL. Lihat Gunakan fitur manajemen log WAL untuk instans ApsaraDB RDS untuk PostgreSQL. SQL Server File log tidak dapat dihapus secara manual. Shrink transaction logs di Konsol ApsaraDB RDS sebagai gantinya. File data (metrik
user_data_size)Untuk MySQL:
Hubungkan ke instans Anda menggunakan Data Management (DMS).
Jalankan kueri berikut untuk mengidentifikasi tabel besar:
SELECT TABLE_NAME, concat(round((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,2),'MB') AS DATA FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<Database name>' ORDER BY DATA + 0 DESC;Hapus tabel yang berisi data historis atau tidak diperlukan:
DROP TABLE <Table name>;Tunggu sekitar 5 menit. Sistem akan secara otomatis membuka kunci instans.
Untuk PostgreSQL:
CatatanJika Anda tidak dapat menghubungkan ke instans karena dikunci, perluas kapasitas penyimpanan terlebih dahulu, bersihkan ruang disk, lalu kurangi kapasitas penyimpanan sesuai kebutuhan. Lihat Ubah spesifikasi instans.
Jalankan kueri berikut untuk mengidentifikasi tabel besar:
SELECT table_schema || '.' || table_name AS table_full_name, pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') AS size FROM information_schema.tables ORDER BY pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;Hapus tabel yang berisi data historis atau tidak diperlukan:
DROP TABLE <Table name>;Tunggu sekitar 5 menit. Sistem akan secara otomatis membuka kunci instans.
Untuk SQL Server, lihat Pemecahan masalah penyimpanan tidak mencukupi pada instans ApsaraDB RDS untuk SQL Server.
File sistem (metrik
undolog_size)Kueri berdurasi panjang pada tabel InnoDB yang dikombinasikan dengan modifikasi data konkuren dalam jumlah besar menyebabkan akumulasi undo log berlebihan. Lihat Pemecahan masalah penyimpanan tidak mencukupi akibat akumulasi file sistem.
Perluas kapasitas penyimpanan
Buka halaman Instances. Pilih Wilayah tempat instans Anda berada, lalu klik ID instans.
Di bagian Configuration Information pada halaman Basic Information, klik Change Specifications untuk memperluas kapasitas penyimpanan.
Setelah pembayaran selesai, klik ikon
di pojok kanan atas halaman Basic Information untuk memantau kemajuan pada halaman Tasks. Anda juga dapat masuk ke Konsol ApsaraDB RDS, lalu klik Task Center di panel navigasi kiri untuk melihat kemajuan ekspansi.
Waktu ekspansi bervariasi tergantung jenis penyimpanan:
| Jenis penyimpanan | Durasi | Catatan |
|---|---|---|
| SSD lokal Premium | Bervariasi | Jika penyimpanan lokal instans tidak mencukupi, migrasi data lintas instans mungkin terjadi. Terjadi gangguan koneksi sementara sekitar 30 detik selama perubahan. Lakukan perubahan selama jam sepi dan konfigurasikan aplikasi Anda agar terhubung ulang secara otomatis. |
| Cloud disk | Sekitar 5 menit | Instans MySQL dan PostgreSQL: tidak ada gangguan koneksi. Instans SQL Server: gangguan koneksi sementara sekitar 30 detik mungkin terjadi. Instans tertentu mendukung ekspansi penyimpanan tanpa kehilangan data atau gangguan workload. |
Atasi kunci akibat pembayaran tertunda atau kedaluwarsa
Instansi langganan: Perpanjang instans, lalu tunggu sekitar 5 menit. Periksa apakah status instans kembali menjadi Running.
Instansi pay-as-you-go: Isi ulang Akun Alibaba Cloud Anda, lalu tunggu sekitar 5 menit. Periksa apakah status instans kembali menjadi Running.
Cegah kunci di masa depan
Konfigurasikan hal berikut untuk menghindari status Locking:
Atur notifikasi pembayaran dan kedaluwarsa:
Login ke Konsol ApsaraDB RDS.
Klik ikon
di pojok kanan atas untuk membuka halaman Message Center.Di panel navigasi kiri, klik Common Settings.
Di kolom Notification Type, pilih Product Overdue Payment, Suspension, and Imminent Release Notifications dan klik Modify.
Di kotak dialog Modify Contact, pilih kontak peringatan dan klik Save.
Konfigurasikan aturan peringatan penggunaan penyimpanan: Atur aturan peringatan yang dipicu ketika penggunaan penyimpanan melebihi 90%.
Aktifkan SQL Explorer dan Audit: Jika penggunaan penyimpanan melonjak, gunakan halaman Monitoring and Alerts untuk mengidentifikasi pernyataan SQL yang dijalankan selama lonjakan tersebut, lalu aktifkan SQL Explorer dan Audit untuk mengoptimalkan pernyataan tersebut.
Aktifkan ekspansi penyimpanan otomatis: Saat penyimpanan hampir habis, sistem akan secara otomatis memperluas kapasitas. Lihat panduan konfigurasi untuk MySQL, PostgreSQL, dan SQL Server.
Optimalkan pernyataan SQL: Hindari operasi ORDER BY dan GROUP BY yang sering dilakukan pada dataset besar, karena menghasilkan file temporary besar yang mengonsumsi penyimpanan.
FAQ
Mengapa LOCK_WRITE_GROWTH masih aktif setelah saya menghapus banyak data?
DELETE hanya menandai record dan halaman data sebagai dapat digunakan kembali, tetapi tidak memperkecil file disk dasar atau mereklaim ruang tabel. Jalankan pernyataan OPTIMIZE TABLE untuk melepaskan ruang tabel. Lihat Bagaimana cara menggunakan pernyataan OPTIMIZE TABLE untuk melepaskan ruang tabel instans ApsaraDB RDS untuk MySQL?
Mengapa instans saya masih terkunci meskipun penyimpanan sudah mencukupi atau saya telah memperpanjang?
Masih ada tugas yang sedang berjalan, seperti perubahan konfigurasi. Instans akan secara otomatis membuka kunci setelah tugas selesai. Klik ikon
di pojok kanan atas halaman Basic Information untuk memeriksa progres tugas di halaman Tasks.
Dapatkah saya mengubah spesifikasi instans saat instans dikunci?
Dikunci karena kehabisan penyimpanan: ya, Anda dapat melakukan upgrade atau downgrade.
Dikunci karena alasan lain seperti pembayaran tertunda: lunasi terlebih dahulu pembayaran tertunda, lalu ubah spesifikasi.
Instans saya yang terkunci menggunakan tipe instans yang sudah tidak tersedia. Bagaimana cara memperluas penyimpanan untuk membuka kuncinya?
Ubah terlebih dahulu tipe instans ke tipe yang saat ini tersedia, lalu perluas penyimpanan. Untuk daftar tipe instans yang tersedia, lihat Tipe instans utama ApsaraDB RDS.
Mengapa penggunaan penyimpanan terus meningkat meskipun instans dikunci?
INSERT dan UPDATE diblokir, tetapi operasi baca masih dapat menghasilkan file log dan data temporary. Hal ini terus mengonsumsi penyimpanan meskipun instans berada dalam status Locking.