Jika sebuah instance ApsaraDB RDS for MySQL secara otomatis terkunci ketika kapasitas penyimpanannya habis karena file sistem, terutama file undo, Anda dapat mengikuti petunjuk dalam topik ini untuk membuka kunci instance RDS dan membersihkan file sistem.
Deskripsi masalah
Kapasitas penyimpanan dari sebuah instance ApsaraDB RDS for MySQL telah habis. Nilai Instance Status untuk instance RDS adalah Locking. Pada halaman Pemantauan dan Peringatan, detail penggunaan penyimpanan menunjukkan bahwa penyimpanan diisi oleh file undo yang besar.
Penyebab
Dalam banyak kasus, file sistem yang besar disebabkan oleh file undo yang besar. Jika query pada tabel InnoDB berjalan dalam waktu lama dan sejumlah besar data diperbarui dalam tabel selama query tersebut, sejumlah besar data undo dihasilkan, yang mengisi penyimpanan dan menyebabkan kapasitas penyimpanan habis. Untuk mencegah kehilangan data, sistem secara otomatis mengunci instance RDS. Instance RDS memasuki status Locking.
Masalah ini tidak terjadi pada instance RDS yang menjalankan MySQL 8.0 karena sistem secara otomatis menghapus file undo.
Solusi
Langkah 1: Buka kunci instance RDS
Anda dapat membuka kunci instance RDS setelah memperluas kapasitas penyimpanannya. Untuk informasi lebih lanjut, lihat Ubah Spesifikasi Instance.
Langkah 2: Hapus file undo
Instance RDS yang menjalankan MySQL 5.7:
Hubungkan ke instance RDS dan jalankan pernyataan berikut untuk menanyakan nilai parameter
innodb_undo_tablespaces. Untuk informasi lebih lanjut, lihat Hubungkan ke Instance ApsaraDB RDS for MySQL.SHOW VARIABLES LIKE 'innodb_undo_tablespaces';Jika nilai parameter
innodb_undo_tablespacesadalah 2, data undo dari instance RDS disimpan di ruang tabel undo independen dan dapat dihapus.Ketika ukuran file undo melebihi nilai parameter
innodb_max_undo_log_sizedan log dalam file undo tidak lagi diperlukan oleh transaksi aktif, sistemmemotongfile undo untuk membebaskan penyimpanan. Untuk informasi lebih lanjut tentang cara memodifikasi parameter instance RDS, lihat Modifikasi Parameter Instance.CatatanParameter
innodb_undo_tablespaceshanya dapat ditentukan saat Anda membuat instance RDS dan tidak dapat dimodifikasi setelah pembuatan. Jika nilai parameterinnodb_undo_tablespacestidak ditentukan saat Anda membuat instance RDS yang menjalankan MySQL 5.7, parameter tersebut diatur ke 0 secara default. Dalam hal ini, Anda tidak dapat memperbarui versi mesin minor dari instance RDS untuk menggunakan ruang tabel undo independen.Jika nilai parameter
innodb_undo_tablespacesadalah 0, ruang tabel undo independen tidak digunakan. File undo disimpan di ruang tabel sistem ibdata1 dan tidak dapat dihapus.Jika Anda ingin membersihkan data undo di ruang tabel sistem ibdata1, Anda dapat membuat instance RDS baru dan memigrasikan data dari instance RDS asli ke instance RDS baru. Atau, Anda dapat meningkatkan versi mesin utama dari instance RDS ke MySQL 8.0. Untuk informasi lebih lanjut, lihat Tingkatkan Versi Mesin Utama.
PentingJika Anda meningkatkan versi mesin utama dari instance RDS, masalah kompatibilitas mungkin terjadi. Untuk informasi lebih lanjut, lihat batasan dan perbedaan antara versi mesin utama di Tingkatkan Versi Mesin Utama.
Selama migrasi atau peningkatan instance RDS, pergantian instance terjadi. Kami merekomendasikan agar Anda melakukan migrasi atau peningkatan selama jam-jam sepi dan pastikan aplikasi Anda dikonfigurasi untuk secara otomatis tersambung kembali ke instance RDS. Untuk informasi tentang dampak pergantian instance, lihat Dampak Pergantian Instance.
Instance RDS yang menjalankan MySQL 5.5 atau MySQL 5.6: File undo dari instance RDS tidak dapat dihapus. Kami merekomendasikan agar Anda meningkatkan versi mesin utama dari instance RDS ke MySQL 5.7 atau MySQL 8.0. Untuk informasi lebih lanjut, lihat Tingkatkan Versi Mesin Utama.
Jika Anda ingin meningkatkan versi mesin utama dari instance RDS ke MySQL 5.7, atur parameter Edition ke High-availability Edition. Nilai parameter
innodb_undo_tablespacesdi RDS High-availability Edition adalah 2. Anda dapat menyimpan dan menghapus data undo di ruang tabel undo independen.PentingJika Anda meningkatkan versi mesin utama dari instance RDS, masalah kompatibilitas mungkin terjadi. Untuk informasi lebih lanjut, lihat batasan dan perbedaan antara versi mesin utama di Tingkatkan Versi Mesin Utama.
Selama peningkatan, pergantian instance terjadi. Kami merekomendasikan agar Anda melakukan peningkatan selama jam-jam sepi dan pastikan aplikasi Anda dikonfigurasi untuk secara otomatis tersambung kembali ke instance RDS. Untuk informasi tentang dampak pergantian instance, lihat Dampak Pergantian Instance.
Apa yang harus dilakukan selanjutnya
Optimalkan pernyataan SQL untuk mencegah query SQL lambat.
Lakukan operasi seperti pembuatan dan penghapusan indeks, modifikasi skema tabel, pemeliharaan tabel, dan penghapusan tabel selama jam-jam sepi.
Pantau dan bersihkan sesi atau transaksi yang berjalan dalam waktu lama. Untuk informasi lebih lanjut, lihat Lihat Informasi Pemantauan.
Referensi
Anda juga dapat memeriksa dan menghapus file data, file sementara, dan file log biner untuk membebaskan penyimpanan instance RDS Anda.
Anda dapat mengaktifkan fitur terkait layanan otonomi untuk mencegah instance RDS terkunci karena pertumbuhan file undo yang berlebihan.