Minio 통해 SQLSERVER 2차 백업 구성

in kr •  6 years ago  (edited)

Minio 통해 SQLSERVER 2차 백업 구성

Minio 서버는 2차 백업용 서버 별도로 구축 하셔야 합니다.

아래의 URL 보시면 쉽게 구축 가능합니다.
https://docs.minio.io/docs/minio-quickstart-guide

환경
windows , Powershell , minio ,mc

minio 설치 및 가이드
https://docs.minio.io/docs/minio-quickstart-guide

Minio Client 설치 및 가이드
https://github.com/minio/mc

아래의 2개 파일 생성 후

파워셀에서 호출 하면 됩니다.
호출 예제


Powershell.exe -noprofile -executionpolicy bypass -file "E:\Backup\BackupUpload.ps1" "E:\Backup\BackupUpload.ini"


ini (BackupUpload.ini) 파일 설정을 통해 2차 백업 및 파일 삭제

BackupUpload.ini

 
/*
[File] --백업 파일 선택 및 삭제 (S3,Minio)
S3DelDay -- S3 삭제 주기 (일자만큼 보관)
GetTime   -- 로컬백업  시간 2 현재시간 기준으로 2시간 전 이후 백업 리스트
 
[Backup]  백업 경로
S3buckkeyDir S3,Minio  경로 (2차 백업 보관 경로)
[S3] S3,Minio  경로
*/
 
[File]
S3DelDay=2
GetTime= 2
 
[Backup]
SystemBackupDir= E:\backup\System
DBBackupDir= E:\backup\FULL
TRNBackupDir= E:\Backup\TRN
S3buckkeyDir= minio/dbbackup/maindb
 
[S3]
IP =  10.10.10.100
Port=  9000
Key =    xxxxx
SECRET =  xxxxxxx


백업 스크립트
BackupUpload.ps1


<#
실행
--------------------------------------------------------------------------------------------------------------------------------------------------------
-- Powershell.exe -noprofile -executionpolicy bypass -file  "E:\Backup\BackupUpload.ps1" "E:\Backup\BackupUpload.ini"
--------------------------------------------------------------------------------------------------------------------------------------------------------
$inifile = "E:\Backup\minioBakup.ini"
 
 param (
 [String]$inifile )
#>
$inifile = "E:\Backup\BackupUpload.ini"
 
 
$S3DelDay ="";$GetDay=""
$SystemBackupDir="";$DBBackupDir=";$TRNBackupDir=";$MiniobuckkeyDir=""
$IP ="";$Port="";$Key ="";$SECRET =""
  
   
  
    $ini = @{}
    switch -regex -file $inifile
    {
        "^\[(.+)\]" # Section
        {
            $section = $matches[1]
            $ini[$section] = @{}
            $CommentCount = 0
        }
        "^(;.*)$" # Comment
        {
            $value = $matches[1]
            $CommentCount = $CommentCount + 1
            $name = "Comment" + $CommentCount
            $ini[$section][$name] = $value
        }
        "(.+?)\s*=(.*)" # Key
        {
            $name,$value = $matches[1..2]
            $ini[$section][$name] = $value
        }
    }
  
   
 
 
$S3DelDay=  $($ini["File"]["S3DelDay"]) -replace " ",""
$GetTime   =  $($ini["File"]["GetTime"]) -replace " ",""
   
$SystemBackupDir=  $($ini["Backup"]["SystemBackupDir"]) -replace " ",""
$DBBackupDir=  $($ini["Backup"]["DBBackupDir"]) -replace " ",""
$TRNBackupDir= $($ini["Backup"]["TRNBackupDir"]) -replace " ",""
$S3buckkeyDir=  $($ini["Backup"]["S3buckkeyDir"]) -replace " ",""
  
$IP =   $($ini["S3"]["IP"]) -replace " ",""
$Port=  $($ini["S3"]["Port"]) -replace " ",""
$Key =    $($ini["S3"]["Key"]) -replace " ",""
$SECRET =   $($ini["S3"]["SECRET"]) -replace " ",""
 
$S3DelDay ;$GetTime
$SystemBackupDir;$DBBackupDir;$TRNBackupDir;$MiniobuckkeyDir
   
$IP ;$Port;$Key ;$SECRET
 
$GetDate =  (Get-Date).AddHours(-$GetTime)
 
mc config host add minio  "http://$($IP):$($Port)"  $($Key)  $($SECRET) S3v4 
 
 
 
$Minio =@{}
# System Backup
$Minio= @(get-childitem -path $SystemBackupDir -Recurse | Where-Object { [DateTime]$_.LastWriteTime -ge ($GetDate ) -and (  $_.Name -like "*.bak") } | select-Object -property  fullname ,name )
for ($i=0; $i -le  $Minio.length-1   ; $i++)  {
    # $Minio[$i].fullname
    mc cp  $Minio[$i].fullname  "$($S3buckkeyDir)/SYSTEM/"
}
  
#Full Backup
$Minio= @(get-childitem -path  $DBBackupDir  -Recurse | Where-Object { [DateTime]$_.LastWriteTime -ge ($GetDate ) -and (  $_.Name -like "*.bak") } | select-Object -property  fullname ,name )
for ($i=0 ; $i -le  $Minio.length-1  ; $i++)  {
    $Minio[$i].fullname
    mc cp  $Minio[$i].fullname  "$($S3buckkeyDir)/FULL/"
}
  
#Trn Bakcup
$Minio=@(get-childitem -path $TRNBackupDir -Recurse | Where-Object { [DateTime]$_.LastWriteTime -ge ($GetDate ) -and (  $_.Name -like "*.trn") } | select-Object -property  fullname ,name  )
 for ($i=0 ; $i -le  $Minio.length-1  ; $i++)  {
    mc cp  $Minio[$i].fullname  "$($S3buckkeyDir)/TRN/"
}
 
 
<#
파일명을 삭제 하는 로직 필요할 때 이요
$MinioDel= @{}
$MinioDel =  $(mc ls $MinioPath\SYSTEM).split(' ') | where-object {$_ -like '*2018_03_15*'}
 
 
 for ($i=0; $i -lt  $MinioDel.Length  ; $i++)  {
    "$($MinioPath)/TRN/$($MinioDel[0])"
     
    mc rm "$($MinioPath)/TRN/$($MinioDel[0])"
}
 
#>
 
 mc rm --recursive --force --older-than=$S3DelDay $S3buckkeyDir
 
mc ls $S3buckkeyDir\SYSTEM
mc ls $S3buckkeyDir\FULL
mc ls $S3buckkeyDir\TRN
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @jaerakson! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!