Slave makine, Master'a erişilememesi halinde işi üzerine alacak ve master gibi hizmet vermeye devam edecek.

Örnekteki koda baktığımızda:
Varsayalım ki, user1, db1'a bağlanamayınca db2'ya bağlanıp kayıt girdi.
user2 db1'e bağlanmayı denediğinde ise az önceki sorun ortadan kalkmıştı ve user2 db1'e bağlanıp kayıt yaptı.

Göreceğiniz gibi sistem çöktü :(




29.01.2010 16:30, Atıf CEYLAN yazmış:
merhaba,
aslında ilk mailimde bu sorunuza cevap vermiştim.
web uygulamanızda bağlantı alanınıza küçük bir kontrol eklemeniz yeterli olacaktırdiye düşünüyorum.
baglan db1
if (db1 baglı değilse)
baglan db2
if (db2 baglı değilse)
echo yapaca bisey yok.
slave makine üzerinde sadece select querylerinizin çalışacağını düşünerek yazdım. On 1/29/10, *Nuri Akman* <[email protected] <mailto:[email protected]>> wrote:

    Merhaba Atıf Bey,

    Benim, sadece Slave'deki MySQL'i güncel tutma ihtiyacım var.
    Çünkü, Web Server'da yer alan dosyalarımda güncelleme ihtiyacım
    neredeyse hiç olmuyor.

    *Ve, cevabını hala bulamadığım soru ise şu:*
    Master'a herhangi bir şekilde kısa veya uzun süre ulaşılamaması
    söz konusu olursa, Slave devreye girsin  istiyorum. Bu sırada,
    Master kendine gelse bile Slave çalışmaya devam etsin. Sonrasında
    benim kontrolümde tekrar Master'a döneyim.

    Bu konuya aslında sizin de belirttiğiniz gibi Felaket Kurtarma
    Merkezi olarak da bakabiliriz. İstiyorum ki, kullanıcılar
    sunucudaki felaket durumunu hiç hissetmesinler; veya minimum
    duraksama ile hissetsinler. Ayrıca Master'dan Slave'e geçiş
    tamamen otomatik olsun, bana ihtiyaç duymasın.

    Bunu nasıl yapabileceğim konusunu araştırıyorum.

    Selamlar,
    Nuri Akman


    29.01.2010 11:18, Atıf CEYLAN yazmış:
    merhaba,
    sadece veritabanı değil tüm sistemin yedeğini rsync ile alabilirsiniz.

    benzer bir durumu biz yaşıyoruz. yurt dışındaki sunucuların
    yedeklemelerini hem aynı lokasyonda hemde türkiyedeki sunucularda
    tutuyoruz. türkiye için süreç 1 saatlik rsync yedeklemesi şeklinde. bu
    FKM (felaket kurtarma merkezi) için iyi bir yöntem. gönül isterki güzel
    ülkemin hat maliyetleri düşse de artık bizlerde yurt sermayesine katkıda
    bulunsak :)

    kolay gelsin

    Nuri Akman wrote:
    Merhaba,

    Master'da herhangi bir sorun oluşup master KISA veya UZUN süreli
    SUSARSA, ben devreye girene kadar Slave çalışsın istiyorum. Ben
    devreye girmeden Master kendine gelse bile Slave çalışmaya devam etmeli.

    Benim devreye girmemden amacım, Slave'deki güncel verilerin Master'ı
    kontrolüm dahilince güncellemesini sağlamak.

    Bu işi nasıl sağlayabilirim acaba?

    Ayrıca, düşündüğüm sistem web server'ın komple bir yedeğinin farklı
    bir fiziksel lokasyonda (Örnek: master Ankara, slave ABD'de) her an
    devreye girebilecek şekilde hazır bulunması.

    Selamlar,
    Nuri Akman



    29.01.2010 10:41, serkan yazmış:
    İlk dediğiniz şekilde. Ancak 5 dakika değil 1 saniyede bir,
    ayarlanabiliyor ama oldukça kısa bir zaman.

    serkan


    2010/1/29 Nuri Akman<[email protected]  
<mailto:[email protected]>
    <mailto:[email protected]>>

         Merhaba Atıf Bey,

         Master-slave replikasyonu şu şekilde mi çalışıyor?:
         Örneğin 5 dakikada bir, o ana kadar master'da gerçekleştirilen
         update ve
         insert komutları slave'e gönderiliyor ve bu komutlar slave üzerinde
         çalıştırılıyor.

         Yoksa; Master'daki her bir update/delete anlık olarak mı
         güncelleniyor?

         Selamlar,
         Nuri Akman


         29.01.2010 00:32, Atıf CEYLAN yazmış:
         >  Merhaba,
         >  konunun tamamını takip edemedim malesef, buradaki yazdıklarınıza
         >  istinaden nacizane tavsiyem, master-slave replication olacak.
         yanlış
         >  hatırlamıyorsam mysql ndb vardı bir zamanlar. zahmetsiz bu işi
         >  hallediyor diye biliyorum.
         >  yazdığınızdan anladığım kadarı ile değişen veriniz hayli az. bu
         nedenle
         >  master-slave replication işinizi fazlası ile görecektir. temel
         mantığı;
         >  slave olan db belirlediğiniz sürelerde kendini, master db'den
         günceller
         >  (örn. her dakikada). aynı uygulamanızın iki kopyası var sanırım,
         >  uygulamanızda insert, uğdate, delete işlemlerini master db'den
         select
         >  işlemlerini oransal olarak her  ikisinden yaparsınız. böylece hem
         >  poolingde yapmış olursunuz. uygulama içinde bağlantı noktasında if
         >  (!$db1) baglan(db2) benzeri bir kontrolle kullanıcılarınızın
         aksaklıktan
         >  haberdar olmadan işlerine devam etmelerinide sağlamış olursunuz.
         >
         >  kolay gelsin.
         >
         >  Nuri Akman wrote:
         >
         >>  Merhaba,
         >>
         >>  Sanırım sizinkine benzer bir durum da benim başımda. Bende durum
         >>  şöyle: İnternette aktif olarak çalışan PHP+MySQL uygulamam
         var. Ancak,
         >>  "sunucum herhangi bir zamanda devre dışı kalırsa ne olacak?"
         korkum
         >>  var. Veritabanımda on binlerce satır veri olmasına rağmen bunların
         >>  sadece en son 500 - 700  tanesi GÜN İÇİNDE ekleniyor veya
         >>  değiştiriliyor. Eski kayıtlar olduğu gibi kalıyor ve hiç bir
         şekilde
         >>  delete/update yapılmıyor.
         >>
         >>  Aktif sunucu üzerindeki PHP dosyalarımı fiziksel olarak uzakta
         bulunan
         >>  başka bir sunucuya da yükledim. Aynı sunucuda PHP+MySQL çalışıyor.
         >>  Veritabanını da olduğu gibi kopyaladım ve sistem, bu sunucu
         üzerinden
         >>  de hizmet veriyor.
         >>
         >>  *Sorun da burada başlıyor: *
         >>  Her yeni işlemle birlikte ikinci sunucudaki veritabanım
         güncelliğini
         >>  yitiriyor. İşte tam bu noktada replikasyon ihtiyacım var diyorum.
         >>
         >>  *Senaryoyu işleme koyalım: *
         >>  Sunucu 1 devre dışı kalmış. Kullanıcılar, bunu görüp Sunucu 2'den
         >>  devam ediyorlar.
         >>
         >>  Herhangi bir metodla Sunucu 2'ye aktardığım veriler ne kadar
         güncelse
         >>  kullanıcılarım da o kadar güncel bir sistemde çalışıyorlar. Bu
         metod
         >>  manuel bir şey de olsa, replikasyon da olsa amacımıza ulaştık
         demektir.
         >>
         >>  *Peki sonrasında ne olacak?*
         >>  Sunucu 2 bir süre hizmet verdi ve üzerine yeni veriler eklendi /
         >>  güncellendi, ancak Sunucu 1 bundan habersiz.
         >>
         >>  Acaba ihtiyaçlarımız benzeşiyor mu?
         >>
         >>  Selamlar,
         >>  Nuri Akman
         >>
         >>
         >>  28.01.2010 15:24, Ali Rıza Keleş yazmış:
         >>
         >>>  On Thu, 2010-01-28 at 14:49 +0200, Nuri Akman wrote:
         >>>
         >>>
         >>>>  Merhaba,
         >>>>
         >>>>  Mesajınıza baktığımda, amacınızın replikasyon olduğunu
         belirtiyorsunuz,
         >>>>  ancak buna neden ihtiyaç duyduğunuzun yanıtını göremiyorum.
         Bu konuda
         >>>>  bilgi verebilir misiniz? Veritabanınızı replike edince ne
         olmasını
         >>>>  umuyorsunuz?
         >>>>
         >>>>
         >>>  Daha detaylı anlatayım...
         >>>
         >>>  Intranet çalışan bir uygulamam var. Uygulama Vertabanı ile
         birlikte
         >>>  yerel bir sunucuda. Sistem Debain Lenny. Buna srv1 diyelim
         üzerindeki
         >>>  uygulamaya app1, vertabanına ise vt1.
         >>>
         >>>  Aynı uygulamanın daha sınırlı bir kopyası Internet üzerinde
         başka bir
         >>>  sunucuda.. Bunlara da sunucu srv2, uygulama app2,
         veritabanına ise vt2
         >>>  diyelim. Bu da aynı biçimde Debian Lenny.
         >>>
         >>>
         >>>  Esas datalar srv1 üzerinde app1 ile vt1 e işleniyor. İlk
         istediğim bu
         >>>  işlemlerin kopyaları aynen srv2 üzerindeki vt2 ye birebir
         kopyalanması
         >>>  ve app2 nin kullanımına hazır hale gelmesi.
         >>>
         >>>  Yereldeki kadar olmasa da srv2 deki app2 bir miktar datayı
         bağımsız
         >>>  biçimde üretip vt2 ye kaydedecek. Bu vt2 ye kaydedilen
         datalarında aynen
         >>>  yereldeki vt1 'e kaydedilmesini istiyorum.
         >>>
         >>>  Bunun yanında, ilerisi için soruyorum bunu, başka bir
         lokasyonda 3. bir
         >>>  sunucu eklediğimde, srv3, app3 ve vt3 diyelim, 3 sunucuyu da
         yukarıdaki
         >>>  ikisi gibi nasıl çalıştırabilirim.
         >>>
         >>>  vt1-vt2 replikasyonu
         >>>  vt2-vt3 replikasyonu
         >>>
         >>>  işimi görür mü?
         >>>
         >>>  Eğer replikasyondan haberdar olmasaydım, şöyle çözecektim:
         >>>
         >>>  1- srv1 üzerindeki dataları bir biçimde ve sürekli şekilde web
         >>>  üzerindeki sunucuya da kaydedecek,
         >>>
         >>>  2- srv2 de üretilen datayı geçici tablolara kaydedip, app1 in
         isteği
         >>>  üzerine, kullanıcının tetiklemesi ya da otomatik, hem srv1 e
         hem de srv2
         >>>  ye kaydedecektim.
         >>>
         >>>
         >>>  Son olarak bütün bu işlemleri ssl ile yapmak istediğimi
         söyledim. Ben
         >>>  soruma yanıtımı genel olarak aldım ama güzel bir konu, daha çok
         >>>  paylaşabiliriz.
         >>>
         >>>  İlginiz için teşekkür ederim.
         >>>
         >>>  --
         >>>  Ali Rıza Keleş,
         >>>
         >>>
         >>>
         >>>
         >>>
         >>>
         >>>>  Selamlar,
         >>>>  Nuri Akman
         >>>>
         >>>>
         >>>>  27.01.2010 18:11, Ali Rıza Keleş yazmış:
         >>>>
         >>>>
         >>>>>  Merhaba,
         >>>>>
         >>>>>  Veritabanı replication(yanıtınızda uygun gördüğünüz Türkçe
         karşılığını
         >>>>>  yazarsanız, bundan sonra onu kullanırım.) konusunda
         önerinizi almak
         >>>>>  istiyorum. Biraz okudum, eğer çözüm bu ise derinleşeceğim.
         >>>>>
         >>>>>  Durum şöyle:
         >>>>>
         >>>>>  Vt1: insert/update/delete işlemleri yoğun olacak,
         >>>>>
         >>>>>  Vt2: Select işlemleri çok yoğun olacak ama bu işlemlerin
         kayıt altına
         >>>>>  alınması için gerekli olan bazı insert işlemleri de
         yapılacak. Vt1 in
         >>>>>  işleyeceği temel tablolarda çok nadiren insert işlemleri
         yapılacak.
         >>>>>
         >>>>>  Vt1 deki ve Vt2 deki her türlü değişikliğin aynı anda
         karşılıklı
         >>>>>  işlenmesini istiyorum. Bunu master-master replication ile
         yapabilir
         >>>>>  miyim?
         >>>>>
         >>>>>  Aklıma takılan bazı problemler:
         >>>>>
         >>>>>  1- Bu iş için en uygun çözüm replication(master-master) mı?
         >>>>>
         >>>>>  2- İşlem çakışmaları yaşıyabilir miyim? AutoIncrement
         alanlar nasıl
         >>>>>  olur? Yani aynı anda vt1.tablo1 ve vt2.tablo1 e data
         girildiğinde ve
         >>>>>  aynı AI değeri aldıklarında veri kaybı, replikasyonun
         çökmesi gibi
         >>>>>  sorunlar yaşar mıyım?
         >>>>>
         >>>>>  3- Sunucular aynı lokasyonda değiller. Birisi internet
         üzerinde,
         >>>>>  diğer(ler)i yerel ağ(lar)da. Genelde aynı ağda olması
         yönünde tavsiyeler
         >>>>>  gördüm? Böyle olması çok zorluk çıkarır mı?
         >>>>>
         >>>>>  4- Vt1 özelliklerinde bir vertabanı daha (Vt3) bu kompozisyona
         >>>>>  eklenebilir mi? Yani Vt1-Vt2 ve Vt2-Vt3 şekline Vt2 aynı
         anda hem Vt1 ve
         >>>>>  Vt2 ile replikasyon yapılabilir mi?
         >>>>>
         >>>>>  5- Bu işlem sırasında SSL kullanabileceğimi de okudum. Aynı
         lokasyonda
         >>>>>  olmadıkları için sizce performansı nasıl etkiler?
         >>>>>
         >>>>>  Teşekkür ederim.
         >>>>>
         >>>>>  --
         >>>>>  Ali Rıza Keleş,
         >>>>>
         >>>>>
         >>>>>  _______________________________________________
         >>>>>  Linux-sunucu E-Posta Listesi
         >>>>>  [email protected]  
<mailto:[email protected]>
         <mailto:[email protected]>
         >>>>>
         >>>>>  Liste kurallarınıhttp://liste.linux.org.tr/kurallar.php
          bağlantısından okuyabilirsiniz;
         >>>>>
         >>>>>  Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu
         listeden gelen e-postaları almak istemiyorsanız aşağıdaki
         bağlantı adresini kullanarak 1 dakika içinde üyeliğinizi
         sonlandırabilirsiniz.
         >>>>>  http://liste.linux.org.tr/mailman/listinfo/linux-sunucu
         >>>>>
         >>>>>
         >>>>>
         >>>>  _______________________________________________
         >>>>  Linux-sunucu E-Posta Listesi
         >>>>  [email protected]  
<mailto:[email protected]>
         <mailto:[email protected]>
         >>>>
         >>>>  Liste kurallarınıhttp://liste.linux.org.tr/kurallar.php
          bağlantısından okuyabilirsiniz;
         >>>>
         >>>>  Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu
         listeden gelen e-postaları almak istemiyorsanız aşağıdaki
         bağlantı adresini kullanarak 1 dakika içinde üyeliğinizi
         sonlandırabilirsiniz.
         >>>>  http://liste.linux.org.tr/mailman/listinfo/linux-sunucu
         >>>>
         >>>>
         >>>  _______________________________________________
         >>>  Linux-sunucu E-Posta Listesi
         >>>  [email protected]  
<mailto:[email protected]>
         <mailto:[email protected]>
         >>>
         >>>  Liste kurallarınıhttp://liste.linux.org.tr/kurallar.php
          bağlantısından okuyabilirsiniz;
         >>>
         >>>  Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu
         listeden gelen e-postaları almak istemiyorsanız aşağıdaki
         bağlantı adresini kullanarak 1 dakika içinde üyeliğinizi
         sonlandırabilirsiniz.
         >>>  http://liste.linux.org.tr/mailman/listinfo/linux-sunucu
         >>>
         >>>
         >>
         
------------------------------------------------------------------------
         >>
         >>  _______________________________________________
         >>  Linux-sunucu E-Posta Listesi
         >>  [email protected]  
<mailto:[email protected]>
         <mailto:[email protected]>
         >>
         >>  Liste kurallarınıhttp://liste.linux.org.tr/kurallar.php
          bağlantısından okuyabilirsiniz;
         >>
         >>  Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu
         listeden gelen e-postaları almak istemiyorsanız aşağıdaki
         bağlantı adresini kullanarak 1 dakika içinde üyeliğinizi
         sonlandırabilirsiniz.
         >>  http://liste.linux.org.tr/mailman/listinfo/linux-sunucu
         >>
         >>
         >
         >
         _______________________________________________
         Linux-sunucu E-Posta Listesi
         [email protected]  
<mailto:[email protected]>
         <mailto:[email protected]>

         Liste kurallarınıhttp://liste.linux.org.tr/kurallar.php
          bağlantısından okuyabilirsiniz;

         Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu
         listeden gelen e-postaları almak istemiyorsanız aşağıdaki
         bağlantı adresini kullanarak 1 dakika içinde üyeliğinizi
         sonlandırabilirsiniz.
         http://liste.linux.org.tr/mailman/listinfo/linux-sunucu



    _______________________________________________
    Linux-sunucu E-Posta Listesi
    [email protected]  <mailto:[email protected]>

    Liste kurallarınıhttp://liste.linux.org.tr/kurallar.php   bağlantısından 
okuyabilirsiniz;

    Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
    http://liste.linux.org.tr/mailman/listinfo/linux-sunucu

    ------------------------------------------------------------------------

    _______________________________________________
    Linux-sunucu E-Posta Listesi
    [email protected]  <mailto:[email protected]>

    Liste kurallarınıhttp://liste.linux.org.tr/kurallar.php   bağlantısından 
okuyabilirsiniz;

    Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
    http://liste.linux.org.tr/mailman/listinfo/linux-sunucu


    _______________________________________________
    Linux-sunucu E-Posta Listesi
    [email protected]
    <mailto:[email protected]>

    Liste kurallarını http://liste.linux.org.tr/kurallar.php
     bağlantısından okuyabilirsiniz;

    Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu
    listeden gelen e-postaları almak istemiyorsanız aşağıdaki bağlantı
    adresini kullanarak 1 dakika içinde üyeliğinizi sonlandırabilirsiniz.
    http://liste.linux.org.tr/mailman/listinfo/linux-sunucu




--
/**
* @author Atıf CEYLAN
* Software Developer
* http://www.atifceylan.com
*/


_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
http://liste.linux.org.tr/mailman/listinfo/linux-sunucu
_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
http://liste.linux.org.tr/mailman/listinfo/linux-sunucu

Cevap