Kami menyiapkan mirroring basis data selama akhir pekan, dan lupa mengaktifkan kembali pekerjaan yang mencadangkan log transaksi. Ketika saya datang di pagi ini, log transaksi telah menggelembung ke 58GB, dan mengambil sebagian besar ruang drive.
Saya melakukan backup manual log transaksi ke disk untuk menjalankan database lagi, namun menjalankan DBCC SHRINKFILE tampaknya tidak mengurangi ukuran fisik file log transaksi.
DBCC SHRINKFILE (N'MyDatabaseName_Log', 1000)
Jika saya memeriksa penggunaan log menggunakan
DBCC SQLPERF(LOGSPACE)
Saya dapat melihat bahwa hanya 22% dari log saat ini sedang digunakan
Nama Database Ukuran Log (MB) Ruang Log Digunakan (%) Status MyDatabaseName 55440.87 22.38189 0
Jika saya memeriksa log_reuse_wait_desc
di sys.databses, satu-satunya catatan yang saya lihat adalah DATABASE_MIRRORING
, jadi saya menduga cermin berperan dalam mengapa ukuran fisik file log tidak menyusut?
SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = N'MyDatabaseName';
Saya juga memperhatikan keadaan mirroring basis data utama saya adalah Ditangguhkan, dan mencoba untuk Melanjutkannya segera gagal dengan kesalahan berikut:
Mitra mirroring jarak jauh untuk database 'MyDatabaseName', mengalami kesalahan 5149, status 1, tingkat 25. Mirroring basis data telah ditangguhkan. Mengatasi kesalahan pada server jarak jauh dan melanjutkan mirroring, atau menghapus mirroring dan membangun kembali instance server mirror.
Log kesalahan pada server mirror juga mengandung kesalahan ini, tetapi juga mengandung kesalahan tentang drive file log yang penuh
MODIFY FILE mengalami kesalahan sistem operasi 112 (Tidak ada cukup ruang pada disk.) Ketika mencoba memperluas file fisik.
dan
F: \ Databaselogs \ MyDatabaseName_1.ldf: Kesalahan sistem operasi 112 (Tidak ada cukup ruang pada disk.) Yang ditemui.
Server utama memiliki 60GB pada drive file log (ada database lain yang dihosting di sini), sedangkan server mirroring hanya memiliki 45GB.
Mencadangkan file log membuat database dapat digunakan lagi, namun saya juga ingin mengurangi ukuran file log fisik pada disk, dan membuat mirroring dilanjutkan.
Bagaimana saya bisa mengecilkan ukuran file log transaksi fisik saya tanpa mengorbankan mirroring atau rantai cadangan?
Saya menjalankan SQL Server 2005
Jawaban:
Dari apa yang bisa saya katakan, saya tidak bisa.
Saya percaya banyak file log sedang menunggu untuk dicerminkan ke server mirror, tetapi mirror sedang down dan tidak dapat dilanjutkan karena log transaksi mirroring juga telah berkembang untuk mengambil semua ruang pada disk.
Teori ini selanjutnya didukung oleh fakta setelah saya menghapus mirroring,
DBCC SHRINKFILE
perintah dengan benar menyusut file log fisik, danlog_reuse_wait_desc
kembali untuk menungguLOG_BACKUP
Saya tidak bisa mengecilkan file log di server mirror karena itu bertindak sebagai mirror dan tidak bisa dibuka, jadi saya pikir mirror tidak dapat dipulihkan.
Jadi saya akan menghapus mirror sepenuhnya, dan mengatur semuanya lagi (proses sangat lambat dengan database 300GB). Dan kali ini, saya akan memastikan ukuran log transaksi cukup kecil sebelum memulai mirror, dan bahwa backup log transaksi berjalan setelah mirror kembali dan berjalan.
Saya juga akan menetapkan batas pada seberapa besar log transaksi dapat tumbuh di server produksi, sehingga mirror tidak pernah mencoba menumbuhkan log transaksinya di luar ukuran yang tersedia pada disk.
sumber
Mengalami masalah yang sama hari ini dengan DB kami, yang karena alasan tertentu telah berhenti mencadangkan log transaksi selama 3 bulan terakhir dan log telah menggelembung hingga 200GB semuanya.
Kode kesalahan yang persis sama seperti dalam situasi Anda dan mirroring tidak akan dilanjutkan. Log drive benar-benar penuh di cermin.
Untungnya saya dapat mengosongkan beberapa ruang dengan menghapus beberapa log lama yang tersesat di drive Log. Setelah itu, bisa melanjutkan mirroring.
Kemudian pergi ke cadangan rencana pemeliharaan dan memicu backup database dan transaksi log secara manual. Bahkan setelah pencadangan, file log transaksi masih besar. Jadi saya harus berulang kali memberitahu SQL Studio untuk mengecilkan file log (membebaskan ruang yang tidak digunakan), dan setelah beberapa upaya selama beberapa jam, itu memotongnya ke ukuran yang lebih mudah dikelola.
Semoga ini membantu.
sumber