System Center Configuration Manager Application-Aware Yedekleme Çözümü Olarak Kullanılabilir mi ? Peki Nasıl ?

Merhabalar,

Bu yazımda System Center Configuration Manager’ ın Application-Aware bir yedekleme çözümüne nasıl dönüştüğünü inceliyor olacağız. Microsoft’ un System Center ailesinde bulunan ve Client Management yönetimi için kullandığımız SCCM’ in kullanımına farklı bir bakış açısı katarak bir nebze System Center Data Protection Manager’ ın görevini üstlendire bilme imkanına sahibiz.

Bu ilk bakıldığından nasıl olabilir diye düşündüren bir konu aslında fakat biraz mantık yürütüldüğünde aslında okadarda karmaşık olmadığını fark edebilirsiniz. Bir önceki yazımda hatırlarsanız System Center Configuration Manager ile Katılımsız SQL Server Kurulumu ve Dağıtımı’ nı gerçekleştirmiştik. Bu yazımda da Application-Aware SQL Database yedeklemesini ve restorasyonu’ nu gerçekleştiriyor olacağız. SCDPM’ de Microsoft’ un Application-Aware listesine giren bir çok microsoft platformunu SCCM ile yedekleyebileceğinizi bilmeniz önemlidir.

Gün geçtikçe geliştirilen System Center ürün ailesi olabildiğince IT iş yüklerini azaltmaya ve yönetimini platform yöneticileri için kolaylaştırmak için çalışmalarda bulunuyor. Bunun yanı sıra geliştirilen PowerShell yetenekleride bizlere farklı ürünler ile farklı çözümler üretebilmemizi sağlayabiliyor.

Bazı ürünlerin yetenekleri ilk bakışta biraz küçümsenebiliyor fakat gerçekten sahip olduğunuz tecrübeler ve işinizdeki vizyonunuz ile kendinize ve işletmenize prestij sağlayabilirsiniz. Burada da SCCM ve PowerShell’ in gücünü birleştirmeniz yeterli olacaktır.

Günümüzde kullandığımız neredeyse bütün Microsoft platformları PowerShell %100 olarak powershell komut ve parametreleri ile yönetilebilir ve istenilen bütün aksiyonlar aldırılabilir. İşte bu noktada PowerShell’ i bir Microsoft Application-Aware yedekleme çözümü olarak geliştirerek kullanabilirsiniz.

Bu yazımda kullandığım bütün PowerShell parametrelerini sizler ile paylaşıyor olacağım. Farklı bakış açıları PowerShell içeriklerini özellştirmenize yardımcı olacaktır. Bunun içinde paylaşacağım PowerShell dosyalarını dahada geliştirerek kullanabilirsiniz.

SCCM 1706 sürümü ile Release olan Run a Script özelliği bu ürünün en güçlü noktalarını ortaya çıkartacaktır. Bunun için neler yapmak istediğinizi iyi biliyor ve adım adım uyguluyor olmanız gerekmektedir.

  • Benim burada sizlere aktaracağım işlem bir SQL Instance’ ımda bulunan bir veritabanının yedeğini alarak Transaction Logları truncate olmacaktır.
  • İkincil olarakda Silinmiş veya bozulmuş bir veritabanının SCCM ile bir SQL Instance’ ı üzerine restore edilmesi olacaktır.

Bundan önce paylaştığım makalemde kritik durumlarda en kısa zamanda SQL Server ve Instance’ ını nasıl kurup yapılandırcağımıza değinmiştim. İşte burada da SCCM ile kritik durumlarda yeni kurulmuş olan SQL Sunucular üzerine veritabanlarımızı olabildiğince en kısa sürede nasıl restore edebileceğimizi göreceğiz.

Veritabanı Yedekleme

Burada koruma altına alacağınımız veritabanı veya veritabanlarını Application-Aware olarak yedekleyebilmek için paylaştığım PowerShell script’ ini kullanabilirsiniz. Bunun için SCCM Yönetim Konsolu üzerinde Software Library > Scripts’ e gelerek Create Script diyerek kullanacağımız PowerShell script’ ini manuel veya Import diyerek ekliyoruz. Oluşturduğumuz bu Script’ e bir isim tanımlayarak SCCM üzerine ekliyor oluruz.

database-backup

# Set SQL Server instance name
$sqlName= "TS-SRV2"
 
# Set the databse name which you want to backup
$dbname= "Yedeklenecek Veritabani Adi"
 
# Set the backup file path
$backupPath= "Yedegin Alinacagi Lokasyon\DatabaseAdi.bak"
 
#Load the required assemlies SMO and SmoExtended.
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
 
# Connect SQL Server.
$sqlServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $sqlName
 
#Create SMO Backup object instance with the Microsoft.SqlServer.Management.Smo.Backup
$dbBackup = new-object ("Microsoft.SqlServer.Management.Smo.Backup")
 
$dbBackup.Database = $dbname
 
#Add the backup file to the Devices
$dbBackup.Devices.AddDevice($backupPath, "File")
 
#Set the Action as Database to generate a FULL backup 
$dbBackup.Action="Database"
 
#Call the SqlBackup method to complete backup 
$dbBackup.SqlBackup($sqlServer)
 
Write-Host "...Veritabani Yedeklemesi"$dbname" Veritabani Icin Basarili Olarak Tamamlandi..."

Oluşturmuş olduğumuz bu Script’ lerimizi dağıtabilmek için Approve etmemiz gerekmektedir. Bunun için scriptlerimizin üzerinde sağ click > Approve / Deny diyerek onaylamamız gerekmektedir. Bu kısımda nasıl Approve edileceğini paylaşmış olduğum SCCM ile gelen 1706 Run a Script Özelliği makalesinde bulabilirsiniz.

Sonrasında oluşturulan bu Script’ in Approve denilerek onaylanmasını sağlamanız yeterli olacaktır. Daha sonrasında bunu yedekleme yapacağınız veritabanı sunucunuza deploy edebilirsiniz.

Yazımın başında söylediğim gibi hem yedekleme hemde restore yapacağımızdan dolayı Critical – Database Backup ve Critical – Database Restore olarak iki farklı script’ imizi oluşturarak Approve etmiş durumdayız.

Veritabanı Kurtarma

Veri kurtarma işlemini SCCM ile gerçekleştirmek için kullanacağımız PowerShell parametrelerini aşağıda bulabilirsiniz. Bu script’ ile Backup datalarının bulunduğu lokasyondan belirtmiş olduğumuzu yedeği belirtilen SQL Instance’ ımız üzerine restore edecektir.

veritabani-kurtarma

# Set SQL Server instance name
$sqlName= "Veritabani Sunucusu"
 
# Set new or existing databse name to restote backup
$dbname= "Kurtarilacak Veritabani Adi"
 
# Set the existing backup file path
$backupPath= "Veritabani Yedegi Bulundugu Lokasyon\Backup Adi.bak"
 
#Load the required assemlies SMO and SmoExtended.
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
 
# Connect SQL Server.
$sqlServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $sqlName
 
# Create SMo Restore object instance
$dbRestore = new-object ("Microsoft.SqlServer.Management.Smo.Restore")
 
# Set database and backup file path
$dbRestore.Database = $dbname
$dbRestore.Devices.AddDevice($backupPath, "File")
 
# Set the databse file location
$dbRestoreFile = new-object("Microsoft.SqlServer.Management.Smo.RelocateFile")
$dbRestoreLog = new-object("Microsoft.SqlServer.Management.Smo.RelocateFile")
$dbRestoreFile.LogicalFileName = $dbname
$dbRestoreFile.PhysicalFileName = $sqlServer.Information.MasterDBPath + "\" + $dbRestore.Database + "_Data.mdf"
$dbRestoreLog.LogicalFileName = $dbname + "_Log"
$dbRestoreLog.PhysicalFileName = $sqlServer.Information.MasterDBLogPath + "\" + $dbRestore.Database + "_Log.ldf"
$dbRestore.RelocateFiles.Add($dbRestoreFile)
$dbRestore.RelocateFiles.Add($dbRestoreLog)
 
# Call the SqlRestore mathod to complete restore database 
$dbRestore.SqlRestore($sqlServer)
 
Write-Host "...SQL Veritabani"$dbname" Icin Basarili Olarak Kurtarildi..."

Hazırlamış olduğumuz scriptleri ilgili Device Collection’ ımıza veya Sunucumuza sağ click > Run Script’ diyerek gerçekleştireceğimiz script’ imizi seçerek dağıtabiliriz.

İlk olarak gerçekleştireceğimiz veritabanı yedekleme olacağından dolayı oluşturduğumuz Critical – Database Backup script’ imizi seçerek ilgili SQL Sunucumuza gönderiyoruz.

Veritabanı yedekleme işlemininin başarılı bir şekilde gerçekleştirildiğini görmek için Monitoring > Script Status’ e bakarsanız dağıtdığımız script’ in uygulandığı istemciyi, başarı durumunu vb. Bilgileri görebilirsiniz.

Critical – Database Backup script’ imizin uygulandığı sunucumuz üzerindeki Scripts.log dosyasına bakıldığında script’ imizin başarılı bir şekilde çalıştırıldığını görebiliyoruz.

Veritabanı kurtarma amacıyla oluşturduğumuz script’ imizi ilgili sunucumuza dağıtarak bozulmuş veya silinmiş olan veritabanımızı restore ediyor olacağız.

Script Status’ e baktığımızda veritabanı kurtarma işlemimizin başarılı bir şekilde gerçekleştirildiğini görebiliyoruz.

Veritabanı kurtarma işlemlerimizinde başarılı olarak tamamlandığını teyit etmek için SQL Management Studio arayüzüne baktığımız da ilgili veritabanımızın restore olduğunu görebiliyoruz. Scripts.log dosyasını inelediğimizde de script’ imizin başarılı bir şekilde tamamlandığı görülebilmektedir.

Bu yazımın başında bahsettiğim üzere SCCM ile Application-Aware olarak yedekleme ve restore işlemlerini gerçekleştirebiliyoruz. Bir yedekleme yazılımı olarak piyasaya sürülmeyen SCCM’ i biraz farklı mantıkda kullanarak bir yedekleme ve kurtarma yazılımı olarakda kullanabilirsiniz.

Aklınızda bulunması amacıyla bu scriptleri biraz daha geliştirerek gerçekleştirilen işlemleri otomatize edebilirsiniz.

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Twitter Auto Publish Powered By : XYZScripts.com