Anadolu Feneri
Cumartesi, Ekim 11, 2025
Sonuç Yok
Tüm Sonucu Görüntüle
  • Anasayfa
  • Yazarlar
    • Anadolu Feneri
    • Abdullah Türkalp Ulucutsoy
    • Araştırmacı ve Yazar Atilla Bayraklı
    • Araştırmacı ve Yazar A. Kaan Köker
    • A. Celal Aşkaroğlu
    • E. Dz. P. Alb. Aziz Doğan
    • Bülent Güven
    • Dr. Cem Erdoğan
    • Prof. Dr. Ebulfez Süleymanlı
    • Sosyolog Gürsel Aktaş
    • Prof. Dr. İlyas Karabıyık
    • Av. Murat Gökdemir
    • Araştırmacı ve Yazar Metehan Uzuner
    • Prof. Dr. Necati Çiftçi
    • Serhat Özeren
    • Araştırmacı ve Yazar Salih Doğan
    • Dr. Süha Tuna
  • Gündem
  • Siyaset ve Dünya
  • Ekonomi ve Hukuk
  • Tarih ve Kültür
  • Edebiyat ve Sanat
  • Teknoloji
  • Sağlık ve Yaşam
  • Kişisel Gelişim
  • İletişim
    • Hakkımızda
    • Gizlilik Politikası
    • Çerez Politikası
    • Kullanım Şartları
  • Anasayfa
  • Yazarlar
    • Anadolu Feneri
    • Abdullah Türkalp Ulucutsoy
    • Araştırmacı ve Yazar Atilla Bayraklı
    • Araştırmacı ve Yazar A. Kaan Köker
    • A. Celal Aşkaroğlu
    • E. Dz. P. Alb. Aziz Doğan
    • Bülent Güven
    • Dr. Cem Erdoğan
    • Prof. Dr. Ebulfez Süleymanlı
    • Sosyolog Gürsel Aktaş
    • Prof. Dr. İlyas Karabıyık
    • Av. Murat Gökdemir
    • Araştırmacı ve Yazar Metehan Uzuner
    • Prof. Dr. Necati Çiftçi
    • Serhat Özeren
    • Araştırmacı ve Yazar Salih Doğan
    • Dr. Süha Tuna
  • Gündem
  • Siyaset ve Dünya
  • Ekonomi ve Hukuk
  • Tarih ve Kültür
  • Edebiyat ve Sanat
  • Teknoloji
  • Sağlık ve Yaşam
  • Kişisel Gelişim
  • İletişim
    • Hakkımızda
    • Gizlilik Politikası
    • Çerez Politikası
    • Kullanım Şartları
Sonuç Yok
Tüm Sonucu Görüntüle
Anadolu Feneri
Sonuç Yok
Tüm Sonucu Görüntüle
Anasayfa Dr. Süha Tuna

AlwaysOn Sunucular Arasında Login ve Jobların Entegre Edilmesi

İle Anadolu Feneri
28/10/2022
İçinde Dr. Süha Tuna, Teknoloji
Okuma zamanı: 5 Dakika Okuma Süresi
0 0
A A
0
AlwaysOn Sunucular Arasında Login ve Jobların Entegre Edilmesi

Yıllardan beri SQL Server’ ın ihtiyaçların hepsini tam olarak karşılayamayan FailOver seçenekleriyle boğuşmuş ve bir türlü aradığı o mükemmel çözümü bulamamış bir DBA olarak nihayet AlwaysOn ile tanıştınız. Bu teknolojide Log Shipping, Replication, Mirroring, SQL Clustering teknolojilerinin tüm eksiklerinin giderildiğini ve müthiş bir ürün olduğunu gördünüz. Hemen bin bir hevesle testlerinizi tamamladınız ve yapınızı AlwaysOn’ a geçirdiniz.

Gerçekten söylendiği gibi gayet başarılı bir şekilde çalışan, raporlama ile ilgili yükünüzü dağıtan hatta Disaster Site ile senkronizasyonunuzu sağlayan bu sistemde sıra Otomatik FailOver seçeneğini enable yapmaya gelmiştir. Fakat bu noktada bir eksiklik ortaya çıktı! Job ve Loginlerin entegre edilmemesinden dolayı FailOver’ ı otomatik olarak yapamayacağınızı keşfettiniz ve bu sorunun önüne geçmek için internette araştırmaya koyuldunuz. Bu konuda yapılmış bir tane araç var manuel olarak belirli zamanlarda aktarım yapıyor fakat sql loginlerin sid bilgilerini taşıyamamaktadır. Pek sonuç alamayacaksınız maalesef. En azından bu işi otomatik yapan bir ürün yok.

Bizler, LC Waikiki DBA ekibi olarak bu noktada her şeyi Microsoft’ tan beklememek lazım diyerek Login ve Jobların otomasyonunu da kendimiz halledelim dedik. Çünkü OLTP sunucumuz üzerinde çok sık değişikliğe uğrayan 2.500 ün üstünde Login ve 260 tan fazla Job bulunuyor. Biz bu yapıyı şuan aktif olarak kullanmaktayız ve bu sorunumuz çözüldü. Bu makalede bu otomasyonun nasıl hazırlanacağını inceleyeceğiz.

Öncelikle AlwaysOn sunucularının dışında bir Otomasyon sunucusuna ihtiyacımız var. Bu sunucu üzerinde ListenerName ve her node için Linked Server oluşturmamız gerekiyor. (Tabi ikinci faz olarak bu yapıyı SSIS e çevirmeyi düşünüyoruz ama hızlıca aksiyon alabilmek için bu şekilde bir yol izledik. ) Otomasyon sunucusunun kullandığı LinkServer userlar’ ı hiç uğraşmadan direk sysadmin yapın J Bu yüzden otomasyon sunucunuz üzerinde başka bir şey bulunmaz ise daha iyi olacaktır.

Tüm süreçlerde Microsoft’ un hazır sp lerinden faydalanacağız. Çünkü Support düşsün istemiyoruz.

Süreci aşağıdaki aşamalara bölebiliriz:

Loginlerin Aktarılması:

  1. Primary Node üzerinde silinmiş olan Loginlerin Secondary Node’ lar üzerinden silinmesi,
  2. Primary Node üzerinde değiştirilmiş ya da yeni eklenmiş Loginlerin Secondary Node lar üzerinde oluşturulması,
  3. Job Kategorilerinin Aktarılması:
  4. Primary Node üzerinde silinmiş olan Job kategorilerinin Secondary Node’ lar üzerinden silinmesi, (Bu işlem Joblar entegre edildikten sonra yapılmalıdır)
  5. Primary Node üzerinde değiştirilmiş ya da yeni eklenmiş job kategorilerinin Secondary Node lar üzerinde oluşturulması, (Bu işlem Joblar entegre edildilmeden önce yapılmalıdır)

Jobların Aktarılması:

  1. Primary Node üzerinde silinmiş olan job Secondary Node’ lar üzerinden silinmesi,
  2. Primary Node üzerinde değiştirilmiş ya da yeni eklenmiş job Secondary Node lar üzerinde oluşturulması,

Tamamlanacak yapı sadece Listener bilgisi alarak tüm işlemleri kendisi yapacak şekilde tasarlanmalıdır. Öncelikle Listener name den Primary sunucu ve Secondary sunucuların Hostname lerini alacak iki adet Sp hazırlıyoruz. Sp hazırladık çünkü bu sorguların dinamik sql olması gerekiyor. Sorgular aşağıdaki gibi olacaktır:

Primary Sunucu İçin:

Select distinct replica_server_name from @Listener.Master.sys.dm_hadr_availability_replica_cluster_states arcs

Join @Listener.Master.sys.dm_hadr_availability_replica_states ars on arcs.replica_id=ars.replica_id where role_desc=’PRIMARY’

Secondary Sunucular İçin:

Select distinct replica_server_name from @Listener.Master.sys.dm_hadr_availability_replica_cluster_states arcs

Join @Listener.Master.sys.dm_hadr_availability_replica_states ars on arcs.replica_id=ars.replica_id where role_desc=’SECONDARY’ and operational_state is NULL

Sonrasında üç adet tabloya ihtiyacımız var:

Bunların ilki başarılı Senkron tarihlerini her sunucu için kaydedecek. Bu tabloda basit bir şekilde objenin ne olduğu, tarih, sunucu adı ve mesaj kolonları bulunması yeterlidir. Burada dikkat edilmesi gereken konu Secondary sunucularda senkron başarılı olduğunda Primary sunucu için de bir kayıt girilmesi gerektiğidir. Aksi halde FailOver yaptığımızda tüm objeleri baştan entegre ederiz.

İkinci tablomuz her Secondary sunucu için oluşturulması gereken Login ve Job scriptlerini barındıracak olan entegrasyon tablosudur. Bu tablo, her Secondary sunucu için değiştirilmiş ya da yeni oluşturulmuş objelerin adını ve create scriptlerini barındıran, her obje için oluşturma işleminin tamamlanıp tamamlanmadığı bilgisini içeren tablo olacaktır.

Üçüncü ve son tablomuz ise hata kontrolü için try catch bloklarımızdan gelen hata mesajlarının yazılacağı tablodur.

Login’ lerin Aktarılması:

Loginlerin entegrasyonu ile aynı yolu izliyoruz. Öncelikle birincil sunucudan silinmiş olan Jobları ikincil sunuculardan temizliyoruz. Ardından birincil sunucuda son entegrasyon tarihinden sonra değişen ve yeni eklenen Jobları her ikincil sunucu için tespit ederek entegrasyon tablomuza yazıyoruz. Burada dikkat edilmesi gereken önemli bir nokta tarih tespiti yaparken karşımıza çıkmaktadır. Çünkü Joblar için modified date tek başına yeterli değildir. Jobların Schedule değişikliklerini buradan yakalayamazsınız. Bunu yakalamak için sysschedules tablosundan da faydalanmanız gereklidir. Bu iki tabloda son entegrasyon tarihinden yeni olan joblarımızı tespit ederek entegrasyon tablomuza yazıyoruz.

Oluşan listede ki Jobların ikincil sunucular üzerinde oluşabilecek şekilde create scriptlerini hazırlayarak entegrasyon tablomuzu güncelliyoruz.

Set @String=’

Insert Into ##SenkronJobList (Name,HedefSunucu)

Select Name, (Select ”’+@SEC+”’) From

(

/*Modify date bilgisi sayesinde yeni eklenen ve değişen jobları yakalıyoruz*/

Select Name from ‘+@PRI+’.Msdb.dbo.sysjobs Where date_modified >

(Select AlwaysOnSync.Fn_GetLastSyncDate (”’+@Obje+”’,”’+@SEC+”’))

and Name <>”syspolicy_purge_history”

and Name not like ”/*Excluded Jobs*/’’

/*Schedule değişikliklerini yakalıyoruz*/

Union

Select j.name from ‘+@PRI+’.Msdb.dbo.sysjobs j

Join ‘+@PRI+’.Msdb.dbo.sysjobschedules jsc on j.job_id=jsc.job_id

Join ‘+@PRI+’.Msdb.dbo.sysschedules sc on jsc.schedule_id=sc.schedule_id

Where sc.date_modified > (Select AlwaysOnSync.Fn_GetLastSyncDate (”’+@Obje+”’,”’+@SEC+”’))

and j.Name <>”syspolicy_purge_history”

and j.Name not like”IndexIslem%”

) Liste’

 

Exec Sp_ExecuteSql  @String

Yukarıda ki gibi bir dynamic Sql script le senkron edilecek Jobları yakalıyoruz.

Bu konunun detayına girecek olursak alt tarafta çalışacak birkaç tane sp ye ihtiyacımız bulunuyor. Bunlar: belirtilen job a ait stepler için create scripti oluşturan, belirtilen job a ait Schedule lar için create scripti oluşturan ve belirtilen job a ait omurga scripti oluşturan prosedürlerdir. Bunları çatıda her job için gerekli sayıda çalıştıracak ayrı bir prosedürün içinde topluyoruz ve bu prosedürü de her job için çalışarak tablomuza create scriptleri basacak şekilde organize ediyoruz. Burada dikkat edilmesi gereken konu ikincil sunucularda job oluştuğunda job id leri değişecek olmasıdır. Dolayısıyla çalışmalarımızda birincil sunucudan job id ile aldığımız verileri ikincil sunuculara iletirken job name ile iletiyor olmamız gerekmektedir. Msdb içinde zaten job,step ve Schedule oluşturmak için hazır prosedürler vardır. Bunları kullanarak dinamik sorgular ile gerekli alanları birincil sunuculardan getirmemiz gerekiyor.

Entegrasyon tablomuzda oluşturulmaya hazır hale gelen joblarımızı öncelikle her ikincil sunucu üzerinden var ise silip ardından Scriptlerimizle tekrardan oluşturuyoruz.

İşlemler başarılı bir şekilde tamamlandığında her sunucumuz için senkron tablomuza tarih ekliyoruz.

Bu makalemizde LC WAIKIKI olarak In-House geliştirdiğimiz AlwaysOn otomasyonunun detaylarını sizlerle paylaştık. Şuanda aktif bir şekilde bu mekanizma çalışmakta ve hayatımızı kolaylaştırmaktadır.

Bu konuda sorun yaşayan arkadaşlara destek olmaktan mutluluk duyarız.

 

PaylaşTweet
Önceki Yazı

Liderlik ve Üzerimizdeki Etkileri Neler?

Sonraki Gönderi

Veri Tabanı Sistemlerinde Felaket ve Felaket Kurtarma Kavramları Hakkında

İlgili Gönderiler

Otomotiv Sektörü ve Çipler

Otomotiv Sektörü ve Çipler

Otomotiv sektörüne bakarsak otomobilin ilk icadından beri temel nokta içten yanmalı motordur. Geçen yıllar içeresinde motor teknolojisi gelişti. Ama temel...

Turizm ve Teknoloji

Turizm ve Teknoloji

Ülkemizin bacasız fabrikaları olan Turizm sektöründe teknolojin daha çok ve verimli kullanılmasıyla daha katma değerli hizmetler ve kusursuz müşteri deneyimleri...

Yeni Bir Eğitim Seviyesi | Medya Okuryazarlığı

Yeni Bir Eğitim Seviyesi | Medya Okuryazarlığı

Medya Okuryazarlığı Genel olarak okuryazar olmak, ‘bir metni okuyabilme ve yazabilme becerisine sahip olmak’ olarak bilinir. Biraz daha geniş anlamıyla...

Sonraki Gönderi
Veri Tabanı Sistemlerinde Felaket ve Felaket Kurtarma Kavramları Hakkında

Veri Tabanı Sistemlerinde Felaket ve Felaket Kurtarma Kavramları Hakkında

Museo Della Tortura

Museo Della Tortura

İnsan Yapımı Sanal Bir Evren “Metaverse”

İnsan Yapımı Sanal Bir Evren “Metaverse”

Bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Sonuç Yok
Tüm Sonucu Görüntüle

Sosyal Medya Hesaplarımız

Popüler Yazılar

  • Bir Bellek Mekan “ACI HİKAYELER MÜZESİ” Ulucanlar Cezaevi

    Bir Bellek Mekan “ACI HİKAYELER MÜZESİ” Ulucanlar Cezaevi

    0 Paylaş
    Paylaş 0 Tweet 0
  • Karadut Şiirinin Öyküsü

    0 Paylaş
    Paylaş 0 Tweet 0
  • Almanya Nereye?

    0 Paylaş
    Paylaş 0 Tweet 0
  • Mustafa Kemal Atatürk 27 Mart 1933

    0 Paylaş
    Paylaş 0 Tweet 0
  • Filistin’de Bir Yahudi Tarım Kolonisi Mikve İsrael (İsrail’in Umudu)

    0 Paylaş
    Paylaş 0 Tweet 0
  • İletişim
  • Hakkımızda
  • Gizlilik Politikası
  • Kullanım Şartları
  • Çerez Politikası
  • Site Haritası
  • RSS

Anadolu Feneri © Telif Hakkı 2022, Tüm Hakları Saklıdır

Tekrar hoşgeldiniz!

Hesaba giriş yap

Unutulan Şifre ?

Parolanızı alın

Şifreyi sıfırlamak için ayrıntıyı girin

Giriş yapmak
Sonuç Yok
Tüm Sonucu Görüntüle
  • Anasayfa
  • Yazarlar
    • Anadolu Feneri
    • Abdullah Türkalp Ulucutsoy
    • Araştırmacı ve Yazar Atilla Bayraklı
    • Bülent Güven
    • A. Celal Aşkaroğlu
    • Araştırmacı ve Yazar A. Kaan Köker
    • Av. Murat Gökdemir
    • Dr. Cem Erdoğan
    • Dr. Süha Tuna
    • Araştırmacı ve Yazar Salih Doğan
    • Serhat Özeren
    • E. Dz. P. Alb. Aziz Doğan
    • Sosyolog Gürsel Aktaş
    • Araştırmacı ve Yazar Metehan Uzuner
    • Prof. Dr. İlyas Karabıyık
    • Prof. Dr. Necati Çiftçi
  • Gündem
  • Siyaset ve Dünya
  • Ekonomi ve Hukuk
  • Tarih ve Kültür
  • Edebiyat ve Sanat
  • Teknoloji
  • Sağlık ve Yaşam
  • Kişisel Gelişim
  • İletişim
    • Hakkımızda
    • Gizlilik Politikası
    • Kullanım Şartları
    • Çerez Politikası

Anadolu Feneri © Telif Hakkı 2022, Tüm Hakları Saklıdır