Docker üzerinde SQL Server Kurulumu, Yedek Alma, Yükleme Operasyonları

Merhabalar bu makalemizde Docker üzerinde SQL Server servisini nasıl kullanabileceğimiz hakkında konuşacağız.

Konteynırlar(Docker imagelar) günümüzde servislerin sorunsuzca verilebilmesi için birçok platform üzerinde çalışabilen minik sanal makinelerdir. Nasıl fiziksel makinelerden sanal makinelere dönüp firmware, Driver vb sorunlardan kurtulabildiysek konteynırlar ile de uygulama/servislerimizi sanallaştırdık. Docker imajlarının ne olduğu nasıl bize avantaj sağladıklarını bu yazıda anlatmayacağım. Zaten sektör olarak docker,k8n,micro Services, swarm kavramlarından kafamızı kaldıramıyoruz. Eğer konuya uzak arkadaşlarımız varsa Docker hakkında bir sonraki paragrafı okuması konunun genelini özetler.

Docker nedir ne işimizi çözer?

Uzun yıllardır bilgisayarların, işletim sistemleri farklarının, dev ortamlarıyla prod ortamalarının farklı olması ya da en basit manada sadece çevresel ortam değişkenlerinin farklılık göstermesinden dolayı teknik uzmanlar olarak çok zaman kaybettik.

Çok klişe olacak ama vallahi benim bilgisayarımda çalışıyordu diyaloğunun kulağınızda yankılandığını hissedebiliyorum.

Docker ile hiç ilgilenmemiş ya da ilk defa burada duyan dostlar için makinanızın işletim sisteminin hiçbir önemi yok. En azından şimdilik böyle olduğunu düşünelim. Güray Yıldırım’ın Konteynerler ve Docker kitabını hem türkçe kaynak olması hem de anlaşılır dilinden dolayı şiddetle tavsiye ederim. Bu kadar docker bilgisi yeter ? Bundan sonrası sizde.

Ortamlar arasındaki çevresel farkları yok etmek ve sahip olduğumuz donanım gücünü kısıtlanmadan daha verimli bir şekilde kullanmak amacıyla docker imajları kullanıyoruz. Linuxta çalışan bir uygulamayı daha önce windows makinamız üzerine kuramıyorduk. Hala kuramıyoruz 🙂 Gerçi windows10 ile işler biraz değişti ama biz konumuzdan savrulmayalım. (Storedan bir ubunu imaj çekip üzerinde çalıştırmak gibi)

Konteynırlar ile konu özelinde bildiğimiz bir çözüm/yaklaşım varsa ve bu çözümün docker imajını bulup hemen provizyonlayıp işimize odaklanabiliyoruz. Mesela yük dengeleyiciye mi ihtiyaç var HAProxy imajını bulup ayağa kaldırıyoruz konuyu kapatıyoruz. Yok bağımlılıklarını indireyim çevresel değişkenleri ayarlayayım bla bla bla bir sürü mevzu.

Bu makalede size sevdiklerinizle daha fazla zaman geçirebilmeyi vaat ediyorum. Oyunuzu Çözümpark Muhtar Adayı Can’a verin. 🙂

Konteynırları günün sonunda bir enstrüman/araç olarak kullanabildiğimizde kıymetli zamanımız bize kalabiliyor. Malum devir proaktif çözümler üretmeye bizi şart koşuyor. Bu sayede gol yiyebileceğimiz riskleri minimize edip çıktıdaki kaliteyi maksimize etmeliyiz. Bu sayede departman olarak çevikleşip test etmek istediğimiz ya da aklımıza takılan her senaryoyu hızlıca test edip daha kaliteli çıktılara ulaşabilelim.

Aksi takdirde uygulamayı indir kur konfigüre et. Servis haline getir reboot edince çalışır halde olsun, javası güncel mi, .net 3.5 yüklü mü yüklü değilse neredeydi bizim windows iso dosyamız ? .net 3.5 kurmam lazım gibi konular yüzünden terzi-sökük ikileminden ileriye gidemiyoruz.

Bir nevi denizi geçip derede boğulmamak için süper bir yaklaşım.

Peki docker ile SQL Server da ne yapabilirim. Size ne lazım ? 🙂 Saniyeler içerisinde bir instance ayağa kaldırıp testlerinizi yapabilirsiniz. Test etmek istediğiniz uygulama için veri tabanı provizyonlayabilir sadece o uygulamaya verebilirsiniz. Elinizdeki ortamları kirletmek zorunda değilsiniz. docker imajlar arasında AlwaysON replikasyon bile kurabilirsiniz

Docker imajı ile konteynır olarak bir sql server instance provizyonlamak saniyelerinizi alır. Sysadmin yetkisinde hiç çekinmeden ortamda at koştururlarabilirsiniz. Hem de kaç tane instance istiyorsanız.

Yazının şimdiye kadarki olan kısmınca hep sistemcilerin sıkıntılarından bahsettik. Ancak sadece sistemcileri değil yazılımcılarında hayatını kurtarıyor. Bu makale özelinde bir şekilde veritabanına ihtiyaç duyuyorsanız kimseden size bir ortam yaratmasını istemeden tüm işlerinizi bir makina provizyonlayarak kolaylıkla yapabilirsiniz. Biraz sonra nasıl backup restore yapabileceğimizi ekran görüntüleri ile göreceğiz. Var olan ortamınızı simule etmemeniz hiçbir neden yok.

Docker i indirmek için (Windows kullanıcıları için) https://docs.docker.com/docker-for-windows/install/ bu adresten indirebilirsiniz. İndirmeden önce üye olmanızı ister. Üye olun lütfen imajları çekebilmemiz için bizden credential isteyecek.

İmajları çekebilmemiz için login olmamız lazım. Kullanıcı adı ve şifrenizi isteyecek.

docker login

Başarılı bir şekilde girip yaptıktan sonra aşağıdaki kod bloğu ile 2017 ve 2019 SQL Server konteynerlerini bilgisayarınıza indiriyorsunuz. Aşağıdaki listede Ubuntu üzerinde çalıştığı yazıyor konteynerlerimizin.

docker pull mcr.microsoft.com/mssql/server:2019-latest

docker pull mcr.microsoft.com/mssql/server:2017-latest

Bu linkten https://hub.docker.com/_/microsoft-mssql-server detaylara erişebilirsiniz. Yukardaki imaj indirme komutu linkten dolayı ilerde kırılabilir. Eğer böyle bir şey olmuşsa bu linkten güncel linkleri bulup imajları indirebilirsiniz.

İndirme işlemi bitti. İki adet imaj şu an makinamızda kullanılmaya hazır.

docker images ls

Makinamızdaki konteynırların listesine bakalım.

docker ps --all

Docker volumelerimizi listeyelelim. Bu gerekli bir adım değildir. Terchinize bağlıdır. Böyle bir alan yaratmak zorunda değilsiniz.

docker volume ls

docker volume create sql1volume

Şimdi ilk SQL Server konteynırımızı ayağa kaldıralım.

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Passw0rd' -e 'MSSQL_PID=Developer' -p 1433:1433 -h sql2k17 -d mcr.microsoft.com/mssql/server:2017-latest

docker ps

konteynırımız ile ilgili bilgi alalım bakalım ip adresi ne.

docker inspect sql2k17

Bu makale için emektar Thinkpad X1 carbon laptopımı kullandım. 4 cpu 8 gb ram. Üzerinde windows var. 172 li bloga ulaşmam için route yazdım hızlıca. 🙂

route /P add 172.0.0.0 MASK 255.0.0.0 10.0.75.2

Makinamız kullanıma hazır. Bilgiler aşağıda.

SQL Server yedek dosyamızı konteynır içerisine nasıl kopyalayıp restore edebileceğimize bakalım.

docker cp C:\Users\canka\Downloads\AdventureWorks2017.bak sql2k17:/var/opt/mssql/data

Yedeği başarılı bir şekilde restore ettik. Şimdi de bir veri tabanı yaratıp onun yedeğini alıp konteynır dışına hostumuza alalım.

CREATE DATABASE ARYASOFT

BACKUP DATABASE ARYASOFT TO DISK=N'/var/opt/mssql/data/COZUMPARKOnDocker.bak'

Marketing isimlere dikkatinizi çekerim ? Makalemizde reklam amaçlı ürün yerleştirme bulunmaktadır 😛

docker cp sql2k17:/var/opt/mssql/data/COZUMPARKOnDocker.bak C:\Users\canka\Downloads\

Gördüğünüz gibi yedek alma işlemini başarılı bir şekilde gerçekleştirmiş bulunmaktayız. Host makinanızda Azure data studio ya da SQL Server Management studio gibi programlar kurulu değilse hatta sqlcmd aracı da yoksa konteynır üzerinden T-SQL komutlarını kullanarak istediğiniz işlemleri kolaylıkla yapabilirsiniz.

docker exec -it sql2k17 "bash"

cd /opt/mssql-tools/bin

./sqlcmd -S localhost -U sa -P Passw0rd

Select @@version;

GO

exit

Makalenin başında sizinle paylaştığım senaryodaki iş gücü farkı hakkında ne düşünüyorsunuz, kazandığınız o zaman ile neler yapılır değil mi?

Umarım sizin için faydalı bir makale olmuştur. Yorum yapıp paylaşmanızı rica eder, kolaylıklar dilerim.

Exit mobile version