Bacula för Windows

Inledning

En av de backuptjänster vi erbjuder är Bacula. Den här tjänsten rekommenderar vi främst för fysiska servrar. För våra virtuella plattformar avänder vi Idera och Veeam. För att komma igång med backup av din server behöver du först kontakta oss på mail via support@glesys.se.

Denna guide riktar sig till Windows-användare. Linux-användare hänvisas till Bacula för Linux.

Installation och konfiguration av Bacula

Nedan följer instruktioner på hur du installerar och konfigurerar Bacula för användning tillsammans med vårt system.

Först måste du logga in mot din server som användaren Administrator eller som en användare med rättigheter som motsvarar detta.

  1. Ladda ner och installera den senaste Bacula-versionen här.

  2. Skapa mappen C:\TEMP.

  3. Leta upp och öppna bacula-fd.conf. Filen bör uppträda som Edit Client Configuration i Baculas startmeny-mapp.

  4. Ersätt allt innehåll i bacula-fd.conf med följande.

    Om din server är placerad i Stockholm:

    Director {
      Name = bacula01-fbg-dir
      Password = YourPasswordGoesHere
    }
    
    FileDaemon {
      Name = ds****-fd
      FDport = 9102
      FDAddress = 0.0.0.0
      WorkingDirectory = C:/TEMP
      Pid Directory = C:/TEMP
      Maximum Concurrent Jobs = 20
    }
    
    Director {
      Name = bacula01-fbg-mon
      Password = "4CbWhjnxrVUuRA0ZSljhByGPJtaoyPTVF"
      Monitor = yes
    }
    
    Messages {
      Name = Standard
      director = bacula01-fbg-dir = all, !skipped
    }
    

    Om din server är placerad i Falkenberg:

    Director {
      Name = bacula03-vbdc-dir
      Password = YourPasswordGoesHere
    }
    
    FileDaemon {
      Name = ds****-fd
      FDport = 9102
      FDAddress = 0.0.0.0
      WorkingDirectory = C:/TEMP
      Pid Directory = C:/TEMP
      Maximum Concurrent Jobs = 20
    }
    
    Director {
      Name = bacula03-vbdc-mon
      Password = "-Uqm36DICZsRgHje12wxxo1JwRd75hyzF"
      Monitor = yes
    }
    
    Messages {
      Name = Standard
      director = bacula03-vbdc-dir = all, !skipped
    }
    

    Ändra YourPasswordGoesHere till ett godtyckligt lösenord. Ändra även ds****-fd till ditt servernamn, t.ex. ds1234-fd.

  5. Starta om Bacula-tjänsten.

  6. Lägg till regler i brandväggen för Bacula. Bacula måste kunna kommunicera med inkommande trafik på port 9102 och utgående trafik på port 9103.

Skicka ett meddelande till support@glesys.se som innehåller det nya lösenordet samt en lista på vilka kataloger du vill säkerhetskopiera. Gärna i formatet nedan:

bacula::config { "ServerName":
 client => "ServerName",
 address => 'IpAddress',
 password => 'Password',
 files => ['C:/Backup/', 'F:/Internt/'],
 storage => 20, #utrymme för de filer som ska ha backup x4
 email => 'kund@mail.toppdomän',
 excludes => ['C:/Backup/mapp1', 'F:/Internt/mapp2'], #om man inte ska ta backup på undermappar
 }

Bacula och MSSQL

Backup i Bacula sker på filnivå och läser data från disk. När det gäller MSSQL är det inte alltid säkert att all data har sparats ner på disk och återläsning av SQL-datafiler fungerar inte alltid. Därför rekommenderar vi att du dumpar databasen till .bak-filer med jämna mellanrum.

Här nedan visar vi ett exempel på hur du kan schemalägga en dump av databasen.

Skapa en fil eller använd PowerShell ISE med nedanstående innehåll och spara ner den som backup-script.ps1.

#Backup-MSSQL-Database
#module needed for Powershell to "talk" to SQL
Import-Module “sqlps” -DisableNameChecking

$backupdir = "C:\backup"
$date = get-date -format dd-MM-yyyy

# Create MSSQL-backup folder if not existing
$tmpDir = Test-Path $backupdir\MSSQL\
If ($tmpDir -eq $True) {}
Else {
    New-Item $backupdir\MSSQL\ -type directory -force |Out-Null
}

#Deletes everything in the folder (This is needed before the backup because it will otherwise merge with the files that's already there.)
Get-ChildItem $backupdir\MSSQL\ -Recurse | Remove-Item -Force -Recurse

# Check the name of the instance
$checkinstance = (get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
if ($checkinstance -match "MSSQLSERVER") {
    $instancename = "DEFAULT"
    }
Else {
    $instancename = $checkinstance
}

# Go to the database location
$computername = Get-ChildItem SQLSERVER:\SQL\
$machinename = $computername.MachineName

# Start the backup
# If the script can't find the location of to the database, run PowerShell with "SQLPS" enabled and type "SQLPS". Traverse the SQL directory until you get to the folder Databases.
# Change the Set-Location to match your new location.
$Error.clear()
Set-location SQLSERVER:\sql\$machinename\$instancename\Databases
Write-Host -Foregroundcolor White " -> [INFO] Starting MSSQL backup"
foreach($database in (Get-ChildItem)) {
  $dbName = $database.Name
  Backup-SqlDatabase -Database $dbName -BackupFile $backupdir\MSSQL\$dbName-$date.bak -BackupAction Database }

  if ($Error -ne $null) {
  Write-Host -Foregroundcolor Red " -> [CRITICAL] Could not complete the MSSQL backup"
  Wait-Event -Timeout 5
  Exit
  }
  Else {
    Write-Host -Foregroundcolor Green " -> [OK] MSSQL backup completed successfully"
}

# If you are using the Standard Version of MSSQL server you can add "-Compression on" like so, to compress the backup.
# Backup-SqlDatabase -Database $dbName -BackupFile $backupdir\MSSQL\$dbName-$date.bak -BackupAction Database -Compression on }

Så fungerar skriptet

Notera att detta skript är avsett för MSSQL-installationer där det lokala administratörskontot har åtkomst till databasen.

Det skriptet först gör är att importera MSSQL-modulen till PowerShell (är det inte installerat så kommer skriptet inte fungera).

Sedan så kollar det av ifall C:\backup\MSSQL finns, gör den inte det så kommer den att skapa katalogen.

Nu till det lite mer avancerade. Skriptet försöker lista ut sökvägen till din databas, men det är inte alltid det klarar av det. Det är lite beroende på hur installationen är gjord och vilken version av MSSQL som körs.

Skulle det inte fungera så står det i skriptet hur du manuellt ställer in sökvägen till databasen.

När det är gjort så kommer det leta upp dina databaser och dumpa de till separata .bak-filer.

Detta skript hade kunnat köras med följande instruktion för att spara databasen till fil varje dag klockan 23:00. För att schemalägga dumpningen så öppna kommandotolken och ange följande kommandon:

SchTasks /Create /SC DAILY /TN "Backup" /TR “Powershell.exe C:\Users\Administrator\backup-script.ps1" /ST 23:00

Bacula och MySQL

Backup i Bacula sker på filnivå och läser data från disk. När det gäller MySQL är det inte alltid säkert att all data har sparats ner på disk och återläsning av MySQLdata-filer fungerar inte alltid. Därför rekommenderar vi att du dumpar databasen till .sql-filer med jämna mellanrum.

Här nedan visar vi ett exempel på hur du kan schemalägga en dump av databasen. Skapa en fil med nedanstående innehåll och spara ner den som backup-script.bat:

set MYSQLUSER=<Användarnamn för MySQL>
set MYSQLPASS=<Lösenord för MySQL>
set BATCHFILE=C:\Users\Administrator\dump-database.bat
set DUMPPATH=<Sökväg till backupkatalog> Exempel C:\backup\MySQL

echo @echo off > %BATCHFILE%
echo cd %DUMPPATH% >> %BATCHFILE%
mysql -u%MYSQLUSER% -p%MYSQLPASS% -AN -e"SELECT CONCAT('mysqldump -u%MYSQLUSER% -p%MYSQLPASS% --single-transaction -f ',schema_name,' > ',schema_name,'.sql') FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','performance_schema')" >> %BATCHFILE%
type %BATCHFILE%
C:\Users\Administrator\dump-database.bat

Så fungerar skriptet

Det skriptet gör är att ansluta till MySQL-databasen och letar upp vilka databaser det ska ta backup av. Därefter så skapar ny .bat-fil (dump-database.bat) där varje databas blir ett separat jobb.

Den nya .bat-filen skapas i C:\Users\Administrator\ och körs direkt efter att första .bat-filen är klar.

Exempel på hur dump-database.bat kommer att se ut:

@echo off  
cd C:\backup\MySQL  
mysqldump -uroot -pSuperSecretMySQLPassword --single-transaction -f datbas1 > databas1.sql
mysqldump -uroot -pSuperSecretMySQLPassword --single-transaction -f databas2 > databas2.sql

Detta skript hade kunnat köras med följande instruktion för att spara databasen till fil varje dag klockan 23:00. För att schemalägga dumpningen så öppna kommandotolken och ange följande kommandon:

SchTasks /Create /SC DAILY /TN "Backup" /TR “C:\Users\Administrator\backup-script.bat" /ST 23:00`

Hittar du inte det du söker?

Kontakta oss gärna för mer information. Vi hjälper dig att komma fram till den bästa lösningen för dina behov.

Skicka e-post Ring 0200-23 88 00