Database Grup yang Tersedia macet dalam mode Not Synchronizing / Recovery Pending

12

Sementara memutakhirkan penyimpanan dalam contoh SQL Server 2014 SP1 (12.0.4422.0) kami mengalami masalah di mana dua database tidak akan mulai pada sekunder setelah memulai ulang SQL Server. Server telah offline selama beberapa jam sementara kami memasang SSD baru (lebih besar) dan menyalin file data ke volume baru. Ketika kami me-restart SQL Server semua kecuali dua dari database mulai menyinkronkan lagi. Dua lainnya ditampilkan dalam SSMS sebagai Not Synchronizing / Recovery Pending .

SSMS Tidak Sinkronisasi / Pemulihan Tertunda

Setelah memiliki masalah Tidak Sinkronisasi / Dalam Pemulihan yang sama sebelumnya, saya memeriksa status di bagian Grup Ketersediaan -> Ketersediaan Database tetapi mereka menampilkan X merah:

Grup Ketersediaan, Ketersediaan Database

dan bahkan mencoba Menangguhkan Gerakan Data menghasilkan pesan kesalahan:

Gagal menangguhkan pergerakan data dalam database 'StackExchange.Bycycles.Meta', yang terdapat pada replika ketersediaan 'ny-sql03' di grup ketersediaan 'SENetwork_AG'. (Microsoft.SqlServer.Smo)

Informasi Tambahan: Pengecualian terjadi saat menjalankan pernyataan atau kumpulan transaksi-SQL. (Microsoft.SqlServer.ConnectionInfo)

Database 'StackExchange.Bycycles.Meta' tidak dapat dibuka karena file yang tidak dapat diakses atau memori atau ruang disk tidak mencukupi. Lihat log galat SQL Server untuk detailnya. (Microsoft Sql Server, Kesalahan: 945)

Saya memeriksa dan file-file itu ada dan tidak memiliki masalah izin. Saya juga memeriksa log SQL Server di SSMS di bawah Manajemen, tetapi tidak melihat apa-apa tentang pemulihan yang tertunda atau masalah dengan dua database.

Mencari bantuan, saya menemukan dua artikel berbeda yang mengatakan bahwa database perlu dipulihkan.

Apakah ada cara untuk melanjutkan replikasi data pada data sekunder saat database macet di Recovery Pending?

Greg Bray
sumber

Jawaban:

16

Karena server telah offline untuk sementara waktu, kami pikir mungkin sudah keluar dari jendela pemulihan primer. Kami memutuskan untuk mencoba menerapkan log transaksi terbaru pada database untuk melihat apakah itu akan memulai proses pemulihan:

-- Remove database from Availability Group:    
Alter Database [StackExchange.Bicycles.Meta] SET HADR OFF;

-- Apply t-logs to catch up. This can be done manually in SSMS or via:
RESTORE LOG [StackExchange.Bicycles.Meta] FROM DISK = '\\ny-back01\backups\SQL\_Trans\SENetwork_AG\StackExchange.Bicycles.Meta\StackExchange.Bicycles.Meta_LOG_20160217_033201.trn' WITH NORECOVERY;

-- Re-join database to availability group
ALTER DATABASE [StackExchange.Bicycles.Meta] SET HADR AVAILABILITY GROUP = [SENetwork_AG];
ALTER DATABASE [StackExchange.Bicycles.Meta] SET HADR RESUME;

Afer menjalankan di atas pada server sekunder untuk kedua database mereka dapat mulai menyinkronkan lagi.

UPDATE: Kami memiliki masalah serupa di mana setelah Manual AG Failover salah satu database pada replika primer baru terjebak dalam mode Tidak Sinkronisasi (beralih ke Tidak Sinkronisasi / Pemulihan Tertunda setelah memulai kembali SQL Server), dan langkah-langkah di atas berfungsi untuk menyelesaikannya masalah juga.

Greg Bray
sumber
1

Anda dapat menghapus DB dari AAG, pada simpul primer buat cadangan penuh dan cadangan transaksi, kembalikan kedua cadangan ini pada DB dari simpul sekunder, lalu tambahkan lagi DB ke AAG. Pada saat ini mungkin mengindikasikan DB node sekunder tidak menyinkronkan, tetapi hanya melakukan apa yang disarankan dalam jawaban kedua (Beli cara itu dihukum -2), maksud saya memindahkan node Sekunder ke primer, itu akan memperbaikinya.

Raul Echevarria
sumber
-2

Lain kali, coba gagal atas primer ke sekunder 'tidak disinkronkan' dan kembali lagi. Sekunder sekarang harus disinkronkan.

pengguna189125
sumber
3
Ini saran yang mengerikan .
arcain
saran ini dapat menyebabkan kehilangan data
Aleksey Vitsko