全部产品
Search
文档中心

ApsaraDB RDS:Masalah Penyimpanan ApsaraDB RDS for MySQL

更新时间:Nov 10, 2025

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.

  1. Masuk ke Konsol RDS. Klik ID instans untuk membuka halaman produk.

  2. Di panel navigasi sebelah kiri, pilih Monitoring and Alerts > Standard Monitoring. Penggunaan penyimpanan instans dapat dilihat di tampilan MySQL Storage Usage.

  3. Klik ikon image di sebelah judul tampilan untuk melihat deskripsi setiap parameter. Untuk informasi lebih lanjut, lihat Lihat Informasi Pemantauan.

image

Catatan

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

temp_file_size

Ukuran data file sementara

Penyimpanan tidak mencukupi karena akumulasi file sementara

File binlog

binlog_size

Penggunaan Binlog

Penyimpanan tidak mencukupi karena akumulasi file binary logging (log lokal)

File undo log

undolog_size

Penggunaan undo log

Penyimpanan tidak mencukupi karena akumulasi file sistem

File general log

general_log_size

Penggunaan General log

Penyimpanan tidak mencukupi karena akumulasi file general log

File data pengguna

user_data_size

Penggunaan database pengguna

Penyimpanan tidak mencukupi karena akumulasi file data pengguna

Selain file yang tercantum di atas, Anda juga perlu memeriksa fragmentasi instans dan indeks database:

Penting

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 processlist untuk melihat status semua sesi. Temukan sesi dengan status seperti Copy to tmp table atau Sending data, dan hentikan secara manual menggunakan perintah kill.

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 table untuk 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 Table Maintenance > Optimize Table.

  • Aktifkan pemulihan fragmen otomatis: Di Konsol RDS, buka Autonomy Service > Quick Diagnostics > Autonomy Center. 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_tablespaces instans diatur ke 2, instans menggunakan ruang tabel undo terpisah untuk menyimpan data undo, dan data ini dapat dibersihkan. Saat ukuran file undo melebihi nilai parameter innodb_max_undo_log_size dan log tidak lagi diperlukan oleh transaksi aktif apa pun, sistem melakukan operasi truncate pada file undo untuk membersihkan file yang terlalu besar dan melepaskan ruang.

    • Jika parameter innodb_undo_tablespaces instans diatur ke 0, 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:

  • 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.

Penting

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 drop atau truncate untuk 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.

    Catatan

    Menghapus 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.