Spring til indholdet

Bedste praksis for SharePoint-backup

Backup af en SharePoint-farm på 100 til 500 GB uden enterprise-budget. Image-backup af serverne, konfiguration og Service Applications med PowerShell og indholdsdatabaserne med en Maintenance Plan i SQL.

SharePoint 6 min. læsning

Når det gælder SharePoint-backup, bør man tage en pause fra arbejdet og tænke seriøst over det. Det er virkelig ikke så nemt, som Microsoft får det til at se ud. Regn ikke med, at den indbyggede backup redder skindet. Der findes ingen bedste praksis for backup af en SharePoint-farm. Men jeg har et par gode råd at give.

Før jeg gør det, så lad mig lige sætte scenen. Jeg laver backup for virksomheder, der har mellem 100 GB og 500 GB SharePoint-lager. Jeg er sikker på, at virksomheder med mere end 2 TB SharePoint-lager gør det helt anderledes. De bruger højst sandsynligt DPM eller en enterprise-backupløsning. Denne guide er til dem, der ikke har den slags budget. Arbejder man i en af de virksomheder, vil jeg virkelig gerne høre, hvordan man laver backup der.

Tillid er en lunefuld ven#

Jeg stoler aldrig på noget digitalt, som jeg kun har én kopi af. Jeg har samme tilgang til mine backups. Så jeg har 2 tilgange til backup.

  1. Fuld image-backup af serverne (Det er meget enkelt. Brug bare Veam til at tage en natlig image-backup af alle servere)
  2. Backup af indhold og konfigurationer

Backup af indhold, konfiguration og Service Applications#

Jeg laver backup af konfigurationer og Service Applications med PowerShell og backup af indhold med SQL’s indbyggede backup. Jeg har læst et sted, at PowerShell ikke understøtter backup af databaser over 200 GB, men jeg kan ikke finde bekræftelse på det, så hvis nogen ved bedre, så sig endelig til i kommentarerne.

Mine kunder vil gerne beholde deres backups i en måned. Det betyder, at jeg beholder 2 måneders backup.

Man kan vædde sin bil på, at de en dag kommer og spørger efter det indhold, der er 31 dage gammelt

Ud over denne backup kunne man lave en separat backup af hver SiteCollection. Det gør jeg ikke … endnu. En anden ting: Lyt ikke til de bloggere derude, der siger, at man skal bruge cmdlet’en Backup-SPConfigurationDatabase. Den cmdlet er kun beregnet til inaktive farme. Brug altid cmdlet’en Backup-SPFarm.

SharePoint-backup – sådan gør man#

  1. Lav et PowerShell-script, der tager backup af alle konfigurationer og SA i en mappestruktur måned for måned
  2. Lav en planlagt opgave, der kører PowerShell-scriptet
  3. Lav en Maintenance Plan på SQL Serveren, der:
    1. Kontrollerer integriteten af alle SharePoint-indholdsdatabaser
    2. Tager backup af dem til en mappestruktur med én mappe pr. database
    3. Sletter backuphistorik, der er ældre end 9 uger
    4. Sletter alle filer, der er ældre end 8 uger

1. PowerShell-script#

Jeg fandt dette PowerShell-script til backup af alle konfigurationer og Service Applications hos My SharePoint Adventure. Man bør kigge på originalen og se, om den passer bedre til ens krav. Jeg har ændret det, så det passer til nogle af mine krav, og ændret brugen af Backup-SPConfigurationDatabase til Backup-SPFarm.

 1# ==========================================================================
 2# NAME: Backup-Config-SA.ps1
 3# COMMENT: Script to take backup of Config and Service Applications
 4# Date: June 16. 2013
 5# Author: Ulrich Gerting Bojko, http://getinthesky.com
 6# ==========================================================================
 7
 8Add-PsSnapin Microsoft.SharePoint.Powershell –ErrorAction SilentlyContinue
 9
10#Variables
11$ThisMonth = Get-Date -Format yyyy-MM
12$CleanupMonth =  (Get-Date).AddMonths(-2).ToString('yyyy-MM')
13$logfile = "\backup\Backup\SharePoint\Log\SPFarm-Backup-" + $(Get-Date -Format dd-MM-yyyy) + ".log"
14$BackupConfigFolder = "\backup\Backup\SharePoint\Config\" + $ThisMonth
15$BackupSAFolder = "\backup\Backup\SharePoint\ServiceApp\" + $ThisMonth
16$BackupConfigFolderClean = "\backup\Backup\SharePoint\Config\" + $CleanupMonth
17$BackupSAFolderClean = "\backup\Backup\SharePoint\ServiceApp\" + $CleanupMonth
18$AdminEmail = "user@domain.com"
19$MailServer = "SMTPServer"
20$FromAddress = "user@domain.com"
21 
22Write-Host "Backup Script is starting.... Please standby!"
23 
24
25# Backup Farm Configuration
26
27try
28{
29    ac $logfile "$(Get-Date)`t Clearing old configuration backups.."
30    Remove-Item -Recurse -Force $BackupConfigFolderClean
31    ac $logfile "$(Get-Date)`t Done."
32    ac $logfile "$(Get-Date)`t Backing up SharePoint Farm Configuration.. "
33    [IO.Directory]::CreateDirectory("$BackupConfigFolder")
34    Backup-SPFarm -ConfigurationOnly -Directory $BackupConfigFolder -BackupMethod Full -Verbose -Percentage 15
35    ac $logfile "$(Get-Date)`t Done."
36}
37catch [system.exception]
38{
39        ac $logfile "$(Get-Date)`t An error occured while backing up the farm configuration database: $_."
40    $messageParameters = @{
41    Subject = "Backup Failed: Farm Configuration Database"
42    Body = "ERROR $_."
43    From = $FromAddress
44    To = $AdminEmail
45    SmtpServer = $MailServer
46}
47    Send-MailMessage @messageParameters
48}
49 
50
51# Backup Service Applications
52
53try
54{
55    ac $logfile "$(Get-Date)`t Clearing old service application backups.."
56    Remove-Item -Recurse -Force $BackupSAFolderClean
57    ac $logfile "$(Get-Date)`t Done."
58    ac $logfile "$(Get-Date)`t Backing up SharePoint Farm Service Applications.. "
59    [IO.Directory]::CreateDirectory("$BackupSAFolder")
60    Backup-SPFarm -Directory $BackupSAFolder -BackupMethod Full -Item "Farm\Shared Services" -Verbose -Percentage 15
61    ac $logfile "$(Get-Date)`t Done."
62}
63catch [system.exception]
64{
65    ac $logfile "$(Get-Date)`t An error occured while backing up the service application database: $_."
66    $messageParameters = @{
67    Subject = "Backup Failed: Service Application Database"
68    Body = "ERROR $_."
69    From = $FromAddress
70    To = $AdminEmail
71    SmtpServer = $MailServer
72}
73    Send-MailMessage @messageParameters
74}
75 
76Write-Host "Back is done. Come back soon!"

Databasebackup#

Nu hvor konfigurationer og Service Applications er taget backup af på en ordentlig måde, så lad os se på, hvordan man tager backup af selve SharePoint-indholdet. Der er flere måder at tage backup af data på. Man kunne scripte en PowerShell-backup af sine SiteCollections én for én. Det anbefaler jeg også. I dette tilfælde vælger jeg databasebackup med SQL’s indbyggede backup. Backup af en SiteCollection er bare Backup-SPSite. Så udfylder man resten.

Opret en Maintenance Plan med 3 subplans.

1. Fuld backup (én gang om måneden)#

  1. Schedule: Tidsplanen for SPBackup.Full Backup: den 1. i hver måned kl. 01:00.
  2. Check Database Integrity: Vælg indholdsdatabaserne. Check Database Integrity Task med Specific databases og Include indexes.
  3. Back Up Database: Backup type: Full. Vælg de samme indholdsdatabaser som i trin et. Back Up Database Task med Backup type Full, én backupfil pr. database på backupsharet og Verify backup integrity.
  4. Maintenance Cleanup: Vælg backupdestinationen, og slet alle “bak”, der er ældre end 8 uger. Maintenance Cleanup Task, der sletter bak-filer ældre end 8 uger.
  5. History Cleanup: History Cleanup Task, der fjerner historik ældre end 9 uger.

2. Differentiel backup (én gang om dagen)#

  1. Schedule: Tidsplanen for SPBackup.Diff Backup: hver dag kl. 22:00.
  2. Check Database Integrity (samme indstillinger som ved fuld backup)
  3. Back Up Database: Backup type: Differential. Vælg de samme indholdsdatabaser som i trin et.
  4. Maintenance Cleanup: Vælg backupdestinationen, og slet alle “trn”, der er ældre end 3 dage. Maintenance Cleanup Task, der sletter trn-filer ældre end 3 dage.

3. Backup af transaktionslog (hver time i arbejdstiden)#

  1. Schedule: Tidsplanen for SPBackup.Transaction log Backup: hver time mellem 07:00 og 18:00.
  2. Back Up Database: Backup type: Transaction log. Vælg de samme indholdsdatabaser som før. Back Up Database Task med Backup type Transaction Log og filtypen trn.

Så er det det. Man er færdig. Her er nogle sidste gode råd, som jeg har samlet op undervejs:

  • Husk at lave en fuld gendannelsesøvelse en gang imellem for at tjekke, at backuppen faktisk virker, som man forventer.
  • Husk at tjekke, at backupbrugeren har fulde rettigheder til backupmappen. Hvis ikke, giver PowerShell-backupperne ingen fejl. De fejler bare ved gendannelse. Det lærte jeg på den hårde måde.
  • Behold altid backup længere, end kunden forventer. Det kan redde dagen.
  • Brug netværksdrev, der er “tilknyttet domænet”. Brug ikke en NAS, hvor man ikke kan logge på med sin AD-servicekonto. Det får PowerShell-gendannelserne til at fejle.
  • HP Micro server er et godt valg

Jeg håber, man har haft glæde af dette indlæg om SharePoint-backup. Kan man lide det, så overvej at dele det med sit sociale netværk.

Sidst opdateret

Del

Relaterede

Tags