Database Mirroring & CHECKDB

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

Att man skall köra CHECKDB på sina databaser regelbundet har väl de allra flesta koll på hoppas jag.
Datat man lagrar i databaserna kan vara mer eller mindre värdefullt, i vissa fall kan verksamheten vara direkt beroende av att datat är intakt och även tillgängligt dygnet runt utan avbrott.

För att uppnå en form av redundans kan man använda sig av Database Mirroring. Till skillnad från kluster där databasfilerna befinner sig på ett ställe rent fysiskt så har en Database Mirroring installation en primär databas och en spegel databas som helst befinner sig på en annan server och därmed även en annan disk.

I klusterfallet kan man köra CHECKDB på sin databas och därmed vara säker på att man gjort vad man kan för att upptäcka korruption.

I Database Mirroring fallet blir det lite mer komplicerat eftersom vi ju faktiskt har en sekundär server där databasen speglas. Antag att du regelbundet kört CHECKDB på den primära databasen och i och med det tror att allt är ok och sedan råkar ut för någon form av problem vilket orsakar en failover till spegeln. I det här läget skall man vara medveten om att man använder en databas som man aldrig kontrollerat. I värsta fall är en failover inte ens möjlig och det är väl inte riktigt vad man förväntar sig när man investerat i mer hårdvara, lagt ner tid på att sätta upp Mirroring mm…

Vad kan man då göra för att undvika detta?
Spegeldatabasen är ju i “restoring” läge och är i och med det inte online. Man kan dock skapa en shapshot av databasen och mot den kan man köra CHECKDB. Eftersom vi fortfarande inte kör på den faktiska databasen så kan vi ändå inte vara helt säkra men det är i alla fall bättre än att inte göra några kontroller alls på spegeln.
Ett database snapshot kan man ju även använda till annat än att köra CHECKDB mot, tex rapportering om man vill avlasta den primära databasen.

Enda sättet att vara helt säker är att periodvis växla till spegeldatabasen och där köra CHECKDB.

Tveka inte att kontakta oss om ni är det minsta osäkra på hur man säkrar upp SQL Server databaser på bästa sätt.