Topik ini menjelaskan cara memperkecil log transaksi dari instans ApsaraDB RDS for SQL Server.
Perhatikan hal-hal berikut:
Sebelum melakukan operasi berisiko tinggi seperti mengubah konfigurasi atau data pada sebuah instans, pastikan untuk memeriksa kemampuan pemulihan bencana dan toleransi kesalahan instans tersebut guna menjamin keamanan data.
Sebelum mengubah konfigurasi atau data pada instans seperti Elastic Compute Service (ECS) atau ApsaraDB RDS, disarankan untuk membuat snapshot atau mengaktifkan cadangan. Sebagai contoh, Anda dapat mengaktifkan cadangan log untuk instans RDS.
Jika Anda telah memberikan izin pada informasi sensitif atau mengirimkannya di Konsol Manajemen Alibaba Cloud, segera ubah informasi sensitif tersebut. Informasi sensitif mencakup nama pengguna dan kata sandi.
Penyimpanan log yang cukup
Jika sisa penyimpanan untuk log mencukupi, Anda dapat menggunakan fitur penciutan log transaksi di Konsol ApsaraDB RDS. Setelah menggunakan fitur ini, sistem secara otomatis melakukan operasi cadangan log dan penciutan log untuk mengelola serta mengoptimalkan ukuran file log transaksi.
Buka halaman Instans. Di bilah navigasi atas, pilih wilayah tempat instans RDS berada. Kemudian, temukan instans RDS dan klik ID instans tersebut.
Di panel navigasi sebelah kiri, klik Backup and Restoration.
Di halaman yang muncul, klik Shrink Transaction Log. Di pesan yang muncul, klik OK.
PentingKetika sistem memperkecil log transaksi, sistem secara otomatis melakukan cadangan log untuk mengarsipkan log transaksi. Dengan cara ini, log lokal lebih mungkin berhasil dihapus.
Disarankan untuk memeriksa status penggunaan ulang log untuk instans RDS Anda sebelum sistem memperkecil log transaksi.
Jika statusnya adalah NOTHING, operasi penciutan log dapat dilakukan. Namun, ukuran log transaksi yang dapat diperkecil bergantung pada ukuran file log virtual (VLF) yang dapat digunakan kembali di bagian akhir log transaksi. Jika status VLF di bagian akhir tidak dapat ditentukan sebagai dapat digunakan kembali karena adanya transaksi aktif, operasi cadangan log lain diperlukan. Sistem akan menunggu hingga transaksi aktif selesai dan memeriksa apakah status penggunaan ulang log berubah menjadi NOTHING.
Jika statusnya adalah LOG_BACKUP, operasi penciutan log mungkin dapat dilakukan tetapi bisa gagal karena adanya transaksi aktif. Dalam kasus ini, sistem mungkin melakukan operasi penciutan log beberapa kali.
Setelah log transaksi diperkecil, Anda dapat pergi ke halaman Monitoring and Alerts dari instans Anda untuk melihat penyimpanan log.

Penyimpanan log tidak mencukupi
Operasi berikut hanya boleh dilakukan dalam keadaan darurat. Disarankan untuk memperluas kapasitas penyimpanan instans RDS Anda sebelum melakukan operasi ini. Untuk informasi lebih lanjut, lihat Ubah spesifikasi instans.
Jika server database memberi tahu "Log transaksi penuh", log transaksi tidak dapat diperkecil di konsol. Dalam kasus ini, Anda harus mengeksekusi pernyataan SQL untuk melakukan operasi penciutan. Penyusutan log transaksi membutuhkan sebagian kapasitas penyimpanan log. Oleh karena itu, Anda hanya dapat memotong rantai log untuk penyusutan ketika log transaksi penuh. Eksekusi pernyataan SQL berikut di server database Anda. Ganti [TestDb] dalam pernyataan dengan nama database Anda.
Jika log transaksi penuh, Anda hanya dapat memotong rantai log untuk penyusutan. Disarankan untuk tidak mengubah model pemulihan database menjadi SIMPLE. Jika Anda mengubah model pemulihan database menjadi SIMPLE, rantai cadangan instans RDS tempat database tersebut milik terputus, dan semua tugas pemulihan yang dieksekusi pada titik waktu ketika rantai cadangan terputus gagal. Jika Anda perlu mengubah mode pemulihan database menjadi SIMPLE dan memotong rantai log database dalam situasi darurat, Anda harus memahami dan bertanggung jawab atas risiko di atas. Setelah Anda mengeksekusi pernyataan di atas, Anda dapat mengabaikan pesan kesalahan yang ditampilkan, dan rantai log database terputus.
Sebagai contoh, Anda mengeksekusi pernyataan berikut untuk mengatur model pemulihan instans yang menjalankan RDS Basic Edition menjadi SIMPLE:
ALTER DATABASE [TestDb] //[TestDb] menentukan nama database.
SET RECOVERY SIMPLESistem gagal mengatur model pemulihan database menjadi SIMPLE dan mengatur ulang model pemulihan ke FULL. Dalam kasus ini, rantai log database terputus. Sistem menampilkan pesan kesalahan berikut:
Msg 50000, Level 16, State 1, Procedure ******, Line 46
Login User [Test11] can't change database [TestDb] recovery model.
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.FAQ
Apa yang harus saya lakukan jika pesan kesalahan berikut dikembalikan ketika saya mengeksekusi ALTER DATABASE [TestDb] SET RECOVERY SIMPLE pernyataan?
Msg 1468, Level 16, State 2, Line 1
Operasi tidak dapat dilakukan pada database "zhttestdb" karena terlibat dalam sesi pemantulan database atau kelompok ketersediaan. Beberapa operasi tidak diizinkan pada database yang berpartisipasi dalam sesi pemantulan database atau dalam kelompok ketersediaan.
Msg 5069, Level 16, State 1, Line 1
Pernyataan ALTER DATABASE gagal.Operasi ALTER tidak diizinkan untuk instans RDS for SQL Server yang menjalankan Edisi Ketersediaan Tinggi karena operasi ALTER pada instans-instans ini melibatkan citra database. Jika Anda ingin mengeksekusi pernyataan dalam bisnis Anda, nonaktifkan citra instans dan atur model pemulihan ke SIMPLE.
Menonaktifkan dan memulihkan citra instans serta mengubah model pemulihan database sangat berisiko tinggi. Berhati-hatilah saat Anda melakukan operasi ini.
-- Nonaktifkan citra.
ALTER DATABASE [Nama Database] SET PARTNER OFF;
GO
-- Atur model pemulihan ke SIMPLE. Rantai log database terputus.
ALTER DATABASE [Nama Database] SET RECOVERY SIMPLE;
-- Citra dipulihkan secara otomatis tanpa konfigurasi manual.Referensi
Perluas kapasitas penyimpanan instans RDS. Untuk informasi lebih lanjut, lihat Ubah spesifikasi instans.
Gunakan pernyataan SQL untuk mengelola database. Untuk informasi lebih lanjut, lihat Buat dan kelola database menggunakan pernyataan SQL.
Lihat penggunaan penyimpanan instans RDS dan atasi masalah terkait. Untuk informasi lebih lanjut, lihat Masalah ruang tidak mencukupi untuk RDS for SQL Server.
Atasi kesalahan yang terjadi ketika kapasitas penyimpanan instans RDS habis. Untuk informasi lebih lanjut, lihat Masalah ruang disk penuh RDS SQL Server.