1.为什么需要异地备份?
【关键词】灾备、业务连续性、数据安全
在企业信息化建设中,数据库作为最重要的应用系统组成部分之一,数据的安全及业务连续性显得格外重要。在某些不可抗拒的自然灾害或人为灾害发生后,数据的灾备已成为企业数据安全与业务连续性保障的重中之重。通常采用异地数据备份与灾备方案,避免整个数据中心出现问题。
2.MSSQL实现异地备份的流程
2.1 SQL Server备份指南
【关键词】备份、恢复、SQL Server
SQL Server 提供了多种类型的备份和还原来确保保护您的数据,如完全备份、差异备份、增量备份、交易日志备份等等。具体的备份方式可能因版本而异,但基本操作是相似的。我们需要设置备份的路径,以便于后面的操作。
-- 设置备份路径
BACKUP DATABASE BusinessData
TO DISK = 'D:\Backup\BusinessData.bak'
WITH NOFORMAT, NOINIT, NAME = 'BusinessData-Full Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
2.2 备份脚本实现
【关键词】备份脚本、PowerShell、压缩
在这里我们将演示使用 PowerShell 设计的备份脚本。
步骤一:首先需要配置备份参数。这里我们设置为7天一个备份文件,每个备份文件最大为1GB,备份使用的压缩类型是Gzip。开启“-Debug”模式方便调参。
Param (
[string]$backupPath = "c:\backups\",
[string]$instanceName = ".",
[string]$databaseName = "BusinessData",
[int32]$compressType = 2, # 0=NoCompression, 1=QuickCompression, 2=GZipCompression
[int32]$backuptype = 1, # 0=Full, 1=Differential, 2=TransactionLog
[int32]$maximumFileSizeKB = 1048576, # 1GB in KB
[int32]$trailingslot = 7, # Retain
[switch]$debug = $false
)
Set-StrictMode -Version Latest # Hard error check for variables
步骤二:接着我们检查备份文件夹是否存在,如果不存在则创建备份文件夹。
If(-not(Test-Path -Path $backupPath)){
Write-Host "Creating $backupPath..." -ForegroundColor Cyan
MD $backupPath -Force | Out-Null
}Else{
Write-Host "Folder $backupPath already present." -ForegroundColor Cyan
}
步骤三:检查自动清理备份,如果开启则会删除超出保存天数的备份文件。
# Automatic clean up outdated backup files
if($trailingslot -ge 0){
Write-Host "Checking for outdated files..." -ForegroundColor Cyan
$deleted = Find-outdatedfiles –folder $backupPath –keep $trailingslot –debug:$debug
}
步骤四:进行备份操作,备份完成后保存到备份文件夹,并且压缩上传备份文件。
# Backup database
$backupfile = Backup-database –instanceName $instanceName –databaseName $databaseName –backupType $backuptype –maximumFileSizeKB $maximumFileSizeKB –debug:$debug
# Move backup file to folder
$datetime = get-date -Format yyyyMMdd-HHmmss
$renderedpath = Join-Path -Path $backupPath -ChildPath "$databaseName-$($backupfile.descriptor)-$datetime.bak"
if(Test-Path -Path $backupfile.fullPath){
Move-item $backupfile.fullPath $renderedpath -force;
Write-Host "New backup $renderedpath has been saved." -ForegroundColor Green
$zippedPath = Compress-ToZipFile –inputFile $renderedpath –CompressType $compressType;
Write-Host "Backup file $zippedPath has been compressed and saved." -ForegroundColor Green
}Else{
Write-Host "Error: $backupfile.fullPath was failed." -ForegroundColor Red
throw $_
}
3. 总结
【关键词】灾备方案、MSSQL、异地备份
异地备份是建立灾备方案时的重要组成部分,在业务数据中心的灾备方案制定过程中亦是极为重要的一项工作。本文提供了使用 PowerShell 设计的备份脚本进行异地备份的一个示例,实现了对MSSQL数据库的异地灾备措施。在异地备份的过程中,为数据安全和业务连续性提供了保障。