全部产品
Search
文档中心

ApsaraDB RDS:Apa yang harus saya lakukan jika instance ApsaraDB RDS for MySQL terkunci karena kapasitas penyimpanannya habis oleh file sementara?

更新时间:Jun 25, 2025

Deskripsi masalah

Kapasitas penyimpanan instance ApsaraDB RDS for MySQL Anda telah habis karena file sementara, sehingga menyebabkan instance RDS masuk ke status Terkunci.

Penyebab

Sejumlah besar file sementara ditulis ke instance RDS Anda, atau sejumlah besar file log biner untuk transaksi besar di-cache dalam instance RDS Anda sebelum transaksi tersebut dikomit. Akibatnya, kapasitas penyimpanan instance RDS Anda habis. File sementara dibuat saat pernyataan SQL yang memerlukan pengurutan data, pengelompokan data, atau penggabungan tabel dieksekusi. Dalam situasi ini, ApsaraDB RDS for MySQL secara otomatis mengunci instance RDS Anda untuk mencegah kehilangan data, dan Anda tidak dapat menulis data ke instance RDS Anda.

Solusi

Dalam situasi darurat, kami sarankan Anda memperluas kapasitas penyimpanan instance RDS Anda. Setelah memperluas kapasitas penyimpanan, tunggu sekitar 5 menit agar sistem membuka kunci instance tersebut. Untuk informasi lebih lanjut tentang cara meningkatkan konfigurasi instance RDS, lihat Ubah spesifikasi instance ApsaraDB RDS for MySQL.

Jika Anda tidak dapat memperluas kapasitas penyimpanan instance RDS Anda, atasi masalah berdasarkan versi mesin utama instance RDS Anda:

  • Jika instance RDS Anda menjalankan MySQL 5.7 atau lebih lama, mulai ulang instance RDS. Untuk informasi lebih lanjut, lihat FAQ.
  • Jika instance RDS Anda menjalankan MySQL 8.0 dan terkunci, semua sesi dihentikan, dan transaksi dari sesi tersebut secara otomatis dibatalkan. Durasi yang diperlukan untuk membatalkan transaksi bervariasi berdasarkan query yang dijalankan oleh sesi dalam transaksi tersebut. Setelah semua transaksi dibatalkan, penyimpanan instance RDS dilepaskan.
    Jika instance RDS Anda masih terkunci, lakukan langkah-langkah berikut:
    1. Gunakan Data Management (DMS) untuk terhubung ke instance RDS Anda.
    2. Eksekusi pernyataan berikut untuk melihat sesi instance RDS Anda:
      show processlist
    3. Dalam output, urutkan sesi berdasarkan State dan periksa apakah sejumlah besar pesan seperti "Copy to tmp table" dan "Sending data" ditampilkan di kolom State. Jika sejumlah besar pesan tersebut ditampilkan, catat ID sesi untuk mana pesan tersebut dikembalikan. state
    4. Eksekusi pernyataan SQL berikut untuk menghentikan sesi:
      kill [$ID];
      Catatan [$ID] menunjukkan ID yang diperoleh pada langkah sebelumnya. Sebelum Anda menghentikan sesi, pastikan layanan Anda tidak terpengaruh.

Apa yang harus dilakukan selanjutnya

Jika instance RDS sudah dibuka kuncinya, lakukan langkah-langkah berikut untuk mencegah instance RDS terkunci lagi:

  • Konfigurasikan ekspansi penyimpanan otomatis untuk instance RDS. Jika penggunaan penyimpanan instance RDS mencapai ambang batas, sistem secara otomatis memperluas kapasitas penyimpanan instance RDS. Untuk informasi lebih lanjut, lihat Konfigurasikan ekspansi penyimpanan otomatis untuk instance ApsaraDB RDS for MySQL.
  • Untuk mencegah file sementara menempati penyimpanan berlebihan, Anda dapat mengoptimalkan pernyataan SQL untuk menghindari penggunaan sering klausa ORDER BY dan GROUP BY. Anda juga dapat meningkatkan nilai tmp_table_size dan max_heap_table_size berdasarkan kebutuhan bisnis Anda, tetapi hal ini tidak disarankan. Penyimpanan memori lebih penting daripada penyimpanan disk. Anda dapat menggunakan EXPLAIN bersama dengan pernyataan SQL untuk memeriksa apakah tabel sementara internal digunakan. Misalnya, Anda dapat memeriksa apakah pesan Using temporary ada di bidang Extra. Jika ya, tabel sementara internal digunakan.
    explain select * from alarm group by created_on order by default;
    Berikut adalah contoh output sistem. Sample system output
  • Untuk mencegah file log biner yang di-cache menempati penyimpanan berlebihan, Anda dapat mengurangi jumlah transaksi besar, terutama yang dijalankan secara paralel melalui beberapa koneksi. Jika Anda ingin menjalankan sejumlah besar transaksi besar, Anda dapat meningkatkan nilai binlog_cache_size berdasarkan kebutuhan bisnis Anda. Namun, kami sarankan Anda tidak meningkatkan nilai binlog_cache_size untuk menghemat penyimpanan disk. Anda dapat menggunakan koneksi singkat untuk menjalankan transaksi besar guna mengurangi penyimpanan yang ditempati oleh file sementara.
  • Kami sarankan Anda memantau penggunaan disk, menghapus data yang tidak perlu sesegera mungkin, atau melakukan pemisahan data. Ini membantu memastikan bahwa penggunaan disk tidak melebihi 80%.

Referensi

Jika instance RDS Anda masih dalam status Terkunci setelah Anda menghapus file sementara, Anda dapat menghapus jenis file lain untuk mengurangi penggunaan disk. Untuk informasi lebih lanjut, lihat topik berikut:

FAQ

Apa yang harus saya lakukan jika tombol Restart Instance redup di halaman Basic Information instance RDS saya?

Anda dapat melakukan langkah-langkah berikut untuk memulai ulang instance RDS Anda:
  1. Masuk ke konsol ApsaraDB RDS dan buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instance RDS berada. Kemudian, temukan instance RDS dan klik ID instance.

  2. Di panel navigasi sisi kiri, klik Parameters.
  3. Di tab Editable Parameters, temukan parameter untuk mana Yes ditampilkan di kolom Force Restart dan ubah nilai parameter tersebut.