SQL Server Restore on Docker

By | 6 August 2018

Selamlar,

Bugün hem windows hem de linux sistemlerinde çalışan Docker’a kurulu SQL Serverımıza nasıl restore işlemi yapabileceğimizden bahsediyor olacağız. Örnek veritabanı için Microsoft’un GitHub adresinde paylaştığı simple database’lerden faydalanıyor olacağız. Sample veritabanları için istediğiniz birini “https://github.com/Microsoft/sql-server-samples/releases/” bu adresten indirebilirsiniz.

Windows Sunucusu üzerindeki işlemlerimiz için;

1) Örnek veritabanımızı sunucumuz üzerindeki bir dizine (Örnek : C:\SQLBackup ) download ediyoruz. ( https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2017.bak )

2) Download işlemi tamamlandıktan sonra PowerShell ile containerın durumunu kontrol ediyoruz. Eğer ki çalışmıyor ise start ediyoruz.

Kontrol için “docker ps – a” komutunu kullanıyoruz. Eğer “-a” parametresi bize çalışmayan containerların da listesini verir. Eğer ki çalışmıyor ise “docker start DockerID” komutu ile container’ı çalıştırıyoruz. Bizim örneğimizde WinDockerSQL isimli container aktif.

Resim-1

3) Containerı aktif ettikten sonra container da backup dosyasını taşıyacağımız bir path oluşturmamız gerekiyor. Bunun için öncelikle container üzerinde powershell çalıştırıp folder create ediyor olacağız.

 

docker exec -it WinDockerSQL powershell

 

Powershell ekranı geldikten sonra “Get-Location” ile nerede bulunduğumuzu kontrol edelim.

Resim-2

C dizini içerisinde DockerSQLBACKUP isimli bir klasör oluşturalım.

 

New-Item -ItemType directory -Path C:\DockerSQLBACKUP

 

Klasörü de oluşturduğumuza göre Windows sunucusunda C:\SQLBackup içerisine download ettiğimiz veritabanı yedeğimizi container’daki C:\DockerSQLBACKUP klasörü içerisine kopyalamaya geldi.

 

docker cp C:\SQLBACKUP\AdventureWorks2017.bak WinDockerSQL:/C:/DockerSQLBACKUP

 

Yukarıdaki kod ile localden docker üzerinde belirttiğimiz yola dosyayı kopyalamış oluyoruz.( Bakınız Resim-3)

Resim-3

Veritabanın yedeğimizin taşınma işlemi tamamlandığına göre şimdi “docker inspect” komutunu kullanıp ( daha önceki yazılarımızda mevcut ) sql server’ın ip adresini bulup erişelim.

Resim-4

Daha sonrasında klasik restore database işlemini gerçekleştiriyoruz.

Resim-5

Yukarıda gördüğünzü gibi C dizini içerisinde DockerSQLBACKUP klasörü mevcut ve içerisinde bizim download edip kopyaladığımız AdventureWorks2017 isimli veritabanın yedeği mevcut.

Resim-6

Sonuç olarak Windows Server 2016 işletim sisteminde çalıştırdığımız Docker’da SQL Server 2017 kurulumunu yaptığımız container’a bir veritabanı yedeğini taşımış olduk.

Resim-7

Linux üzerindeki işlemlerimiz için;

Windows tarafında yaptığımız işlem sıralamasını takip ediyor olacağız.

1) Öncelikli olarak veritabanı yedeğimizi linux üzerine indirmemiz gerekiyor. Ama indirme işlemi öncesinde linuxde hangi dizinde olduğumuzu “pwd” ile kontrol edin. Biz örneğimizde “/home/cozenc” dizini içerisindeyiz.

 

wget '<a href="https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2017.bak">https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2017.bak</a>'

 

Resim-8

2) Container içerisinde veritabanı backup dosyasını taşıyacağımız bir klasör oluşturmamız gerekiyor, bu işlem için öncelikli olarak container’e erişmemiz gerekiyor.

 

sudo docker exec -it DockerSQL bash

 

Klasör oluşturmak için ise “mkdir -p /var/opt/mssql/backup

3) Klasör oluşturma işlemide tamamlandığına göre Linux’e download ettiğimiz veritabanı yedeğini container içerisine taşımamız gerekiyor.

 

sudo docker cp /home/cozenc/AdventureWorks2017.bak DockerSQL:/var/opt/mssql/backup

 

4) Veritabanı kopyalamasını da tamamladığımıza göre restore işlemine geçebiliriz, bu işlem klasik restore işlemi gibidir. İster sqlcmd ile linux üzerinden isterseniz SSMS ile remote IP ile erişebilirsiniz. Ben SSMS ( SQL Server Management Studio ) ile RemoteIP aracılığı ile connect olup klasik restore işlemini gerçekleştireceğim.

Resim-9 

Resimde işaretli kısımlar “d32bcf0bcc21” değeri DockerID bilgimiz, bu bilgiye docker ps komutu ile ulaşabilirsiniz, Backup path ve path içerisine attığımız veritabanı yedeğimiz.Restore işlemi tamamlandıktan sonra SSMS ile kontrol ettiğimizde aşağıdaki bilgileri görebiliriz.

Bir yazımızın daha sonuna geldik, farklı bir yazıda görüşmek üzere!

 

Share

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.