Penggunaan penyimpanan pada instans RDS for MySQL merupakan metrik kunci yang perlu dipantau. Ruang penyimpanan yang tidak mencukupi dapat menyebabkan masalah serius, seperti database menjadi read-only, cadangan gagal, atau tugas skala keluar penyimpanan memakan waktu terlalu lama. Topik ini menjelaskan cara melihat penggunaan penyimpanan dan memberikan solusi untuk masalah penyimpanan umum.
Lihat penggunaan penyimpanan
Ruang penyimpanan instans RDS for MySQL mencakup data pengguna, data sistem, berbagai log, dan file sementara. Anda dapat memantau penggunaan penyimpanan menggunakan fitur pemantauan standar.
Masuk ke Konsol RDS. Klik ID instans untuk membuka halaman produk.
Di panel navigasi sebelah kiri, pilih Monitoring and Alerts > Standard Monitoring. Penggunaan penyimpanan instans dapat dilihat di tampilan MySQL Storage Usage.
Klik ikon
di sebelah judul tampilan untuk melihat deskripsi setiap parameter. Untuk informasi lebih lanjut, lihat Lihat Informasi Pemantauan.

File sistem database dan file log menggunakan ruang penyimpanan. Jumlah ruang yang mereka gunakan bergantung pada faktor-faktor seperti muatan database dan kebijakan retensi data.
Ikhtisar solusi
Penyimpanan yang tidak mencukupi disebabkan oleh akumulasi berbagai file di dalam instans. Saat memeriksa penyimpanan instans, fokus pada penggunaan ruang oleh file-file berikut dan pilih solusi sesuai dengan jenis file.
Nama file | Parameter dalam Pemantauan Standar | Parameter dalam Analisis Ruang | Solusi |
File sementara |
|
| |
File binlog |
|
| Penyimpanan tidak mencukupi karena akumulasi file binary logging (log lokal) |
File undo log |
|
| |
File general log |
|
| Penyimpanan tidak mencukupi karena akumulasi file general log |
File data pengguna |
|
| Penyimpanan tidak mencukupi karena akumulasi file data pengguna |
Selain file yang tercantum di atas, Anda juga perlu memeriksa fragmentasi instans dan indeks database:
Akumulasi fragmentasi dapat menyebabkan ruang penyimpanan yang tersedia menjadi tidak mencukupi. Untuk informasi lebih lanjut, lihat Penyimpanan tidak mencukupi karena fragmentasi.
Jika database menggunakan kebijakan pengindeksan yang tidak efisien, file indeks dapat menumpuk dan menyebabkan instans kehabisan ruang. Untuk informasi lebih lanjut, lihat Penyimpanan tidak mencukupi karena akumulasi file indeks.
Dalam keadaan darurat, kami sarankan Anda pertama-tama secara manual ubah ukuran disk untuk membuka kunci instans sesegera mungkin. Setelah layanan dipulihkan, Anda dapat membersihkan ruang penyimpanan berdasarkan akumulasi file. Dalam kebanyakan kasus, instans dibuka kuncinya sekitar 5 menit setelah disk diubah ukurannya. Waktu yang diperlukan untuk mengubah ukuran bergantung pada kelas penyimpanan dan jumlah data. Anda dapat melihat kemajuan pengubahan ukuran disk di Pusat Tugas.
Penyimpanan tidak mencukupi karena akumulasi file sementara
Sejumlah besar file sementara ditulis ke instans RDS Anda, atau sejumlah besar file log binari untuk transaksi besar disimpan di instans RDS Anda sebelum transaksi tersebut dikomit. Akibatnya, kapasitas penyimpanan instans RDS Anda habis. File sementara dihasilkan saat pernyataan SQL yang memerlukan pengurutan data, pengelompokan data, dan penggabungan tabel dieksekusi. Dalam situasi ini, sistem secara otomatis mengunci instans RDS Anda untuk mencegah kehilangan data, sehingga Anda tidak dapat menulis data ke instans RDS.
Solusi: Untuk informasi lebih lanjut, lihat Solusi untuk akumulasi file sementara di RDS for MySQL.
MySQL 5.7 atau lebih awal: Mulai ulang instans. Sistem secara otomatis akan menghapus file sementara.
MySQL 8.0: Saat instans terkunci, semua sesi pengguna dihentikan dan rollback otomatis dimulai. Sistem secara otomatis melepaskan file sementara setelah rollback selesai.
Jika instans tidak dibuka kunci secara otomatis untuk waktu yang lama, jalankan perintah
show processlistuntuk melihat status semua sesi. Temukan sesi dengan status sepertiCopy to tmp tableatauSending data, dan hentikan secara manual menggunakan perintahkill.
Penyimpanan tidak mencukupi karena akumulasi file binary logging (log lokal)
Sejumlah besar file log binari dihasilkan dalam waktu singkat setelah Anda mengeksekusi transaksi besar, sehingga kapasitas penyimpanan instans RDS Anda dapat habis. Instans RDS Anda kemudian secara otomatis terkunci untuk mencegah kehilangan data. Dalam situasi ini, Anda tidak dapat menulis data ke instans RDS Anda.
Solusi: Untuk informasi lebih lanjut, lihat Solusi untuk akumulasi file Binlog MySQL.
Unggah log binari satu klik: Anda dapat menggunakan fitur Unggah log binari satu klik RDS untuk mengunggah file log binari dari instans RDS ke OSS. Setelah unggahan selesai, RDS secara otomatis menghapus file log binari yang telah diunggah.
Ubah kebijakan retensi log lokal: Di Konsol RDS, buka halaman Backup and Recovery. Klik tab Backup Policy. Di sebelah Local Log Retention Policy, klik Edit. Anda dapat mengubah parameter seperti periode retensi, penggunaan penyimpanan maksimum, dan ruang penyimpanan yang tersedia. Saat jumlah log lokal yang disimpan di instans mencapai ambang batas tertentu, sistem akan menghapus log lokal tertua hingga penggunaan penyimpanan turun di bawah ambang batas.
Ruang tidak mencukupi karena akumulasi fragmentasi
InnoDB mengelola ruang tabel berdasarkan halaman. Saat menggunakan pernyataan delete atau update untuk menghapus atau memperbarui data, pernyataan tersebut hanya menandai lokasi rekaman atau halaman data sebagai "dapat digunakan kembali". Ukuran file disk tetap tidak berubah, sehingga ruang di ruang tabel tidak segera direklamasi. Jika ruang asli tidak dapat digunakan kembali, fragmentasi terjadi dan mengonsumsi ruang penyimpanan.
Solusi: Untuk informasi lebih lanjut, lihat Solusi untuk Fragmentasi Ruang MySQL.
Defragmentasi menggunakan baris perintah: Gunakan perintah
optimize tableuntuk mendefragmentasi ruang tabel.Optimalkan tabel data menggunakan DMS: Masuk ke instans RDS for MySQL. Di konsol DMS, klik kanan nama tabel apa pun dan pilih Batch Operations. Pilih tabel yang memerlukan defragmentasi, lalu pilih .
Aktifkan pemulihan fragmen otomatis: Di Konsol RDS, buka . Klik Autonomy Feature Switch. Setelah mengaktifkan fitur otonom, buka tab Optimization and Throttling dan aktifkan Automatic Fragment Reclamation. Untuk informasi lebih lanjut, lihat Pemulihan fragmen otomatis.
Penyimpanan tidak mencukupi karena akumulasi file sistem
Dalam banyak kasus, ukuran file sistem yang besar disebabkan oleh file undo yang besar. Jika kueri pada tabel InnoDB berjalan dalam waktu lama dan sejumlah besar data diperbarui di tabel selama kueri, sejumlah besar data undo akan dihasilkan, mengisi ruang penyimpanan dan menyebabkan kapasitas penyimpanan habis. Untuk mencegah kehilangan data, sistem secara otomatis mengunci instans RDS. Instans RDS memasuki status Locking.
Solusi: Untuk informasi lebih lanjut, lihat Solusi untuk akumulasi file sistem MySQL.
MySQL 8.0: Sistem secara otomatis membersihkan file undo.
MySQL 5.7:
Jika parameter
innodb_undo_tablespacesinstans diatur ke2, instans menggunakan ruang tabel undo terpisah untuk menyimpan data undo, dan data ini dapat dibersihkan. Saat ukuran file undo melebihi nilai parameterinnodb_max_undo_log_sizedan log tidak lagi diperlukan oleh transaksi aktif apa pun, sistem melakukan operasitruncatepada file undo untuk membersihkan file yang terlalu besar dan melepaskan ruang.Jika parameter
innodb_undo_tablespacesinstans diatur ke0, instans tidak menggunakan ruang tabel undo terpisah. File undo disimpan di ruang tabel sistem ibdata1 dan tidak dapat dibersihkan. Anda dapat menangani ini dengan salah satu dari dua cara:Metode 1: Buat instans baru dan gunakan DTS untuk memigrasi data. Untuk informasi lebih lanjut, lihat Operasi konsol RDS for MySQL (migrasi data).
Metode 2: Tingkatkan versi database ke MySQL 8.0. Untuk informasi lebih lanjut, lihat Tingkatkan versi database.
MySQL 5.5 dan MySQL 5.6: Pembersihan file undo tidak didukung. Anda harus meningkatkan versi utama ke instans Edisi Ketersediaan Tinggi MySQL 5.7 atau instans MySQL 8.0. Setelah peningkatan, MySQL 5.7 dapat membersihkan file undo dengan mengaktifkan ruang tabel undo terpisah. MySQL 8.0 mendukung pembersihan otomatis file undo.
Untuk instans MySQL 5.7 atau lebih awal di mana ruang tabel undo terpisah tidak diaktifkan (di mana innodb_undo_tablespaces = 0), data undo yang ditulis ke ibdata1 tidak dapat dilepaskan bahkan setelah peningkatan versi utama. Setelah peningkatan, hanya log undo baru yang ditulis ke ruang tabel terpisah dan mendukung pembersihan otomatis. Ruang yang ditempati oleh file ibdata1 asli tidak dapat direklamasi.
Penyimpanan tidak mencukupi karena akumulasi file general log
Saat log query umum diaktifkan untuk instans ApsaraDB RDS for MySQL, file log mencatat semua operasi pengguna, termasuk detail setiap pernyataan SQL seperti kueri, insert, update, dan delete. Jika instans menangani lalu lintas tinggi atau file log query umum tidak dibersihkan dalam waktu lama, ukuran file terus bertambah. Jika tidak segera ditangani, file tersebut pada akhirnya akan menghabiskan ruang penyimpanan instans.
Solusi: Untuk informasi lebih lanjut, lihat Solusi untuk Akumulasi File General Log MySQL.
Nonaktifkan Pengumpulan Log Umum: Nonaktifkan log umum (atur parameter runtime ke OFF) untuk mencegah pembuatan log baru. Untuk informasi lebih lanjut, lihat Atur Parameter Instans.
Hapus File Log Umum: Masuk ke instans RDS dan jalankan perintah
TRUNCATE TABLE mysql.general_log;untuk menghapus log umum.Biarkan log umum dinonaktifkan selama penggunaan rutin database. Aktifkan hanya sementara untuk debugging atau pemecahan masalah. Setelah selesai, segera bersihkan log dan nonaktifkan fitur tersebut.
Penyimpanan tidak mencukupi karena akumulasi file data pengguna
File data pengguna dapat menyebabkan penyimpanan penuh jika tidak dibersihkan secara berkala. Penggunaan tipe data seperti blob, text, dan panjang varchar dalam skema tabel juga memakan ruang penyimpanan yang signifikan. Untuk mencegah kehilangan data, RDS for MySQL secara otomatis mengunci instans. Setelah instans terkunci, operasi penulisan tidak dapat dilakukan.
Solusi: Untuk informasi lebih lanjut, lihat Solusi untuk Akumulasi File Data RDS for MySQL.
Hapus Data yang Tidak Digunakan: Gunakan perintah
dropatautruncateuntuk membersihkan data yang tidak diperlukan.Kompres Data: Untuk objek besar, kompres data sebelum menyimpannya di database guna mengurangi penggunaan ruang penyimpanan.
Penyimpanan tidak mencukupi karena akumulasi file indeks
Indeks database disimpan sebagai file di disk. Penggunaan kebijakan pengindeksan yang tidak efisien atau pembuatan banyak indeks sekunder dapat menyebabkan penumpukan file indeks yang terlalu besar, sehingga mengakibatkan ruang penyimpanan instans menjadi tidak mencukupi.
Solusi:
Buat indeks pada bidang yang sesuai: Selain indeks kunci primer, buat indeks pada bidang yang sering dikueri, memerlukan pengurutan, atau digunakan untuk penggabungan tabel. Pertimbangkan juga untuk menggunakan indeks komposit alih-alih indeks kolom tunggal guna menghemat ruang disk.
Hapus indeks yang tidak digunakan: Hapus indeks yang tidak lagi digunakan atau berlebihan untuk menghemat ruang disk. Optimalkan struktur data untuk mengurangi jumlah indeks sekunder.
CatatanMenghapus indeks dapat menyebabkan pemblokiran. Lakukan operasi ini selama jam-jam sepi. Anda juga dapat memanfaatkan fitur evolusi skema tanpa kunci dari DMS untuk meminimalkan dampak perubahan.