MySQL 5.0′dan itibaren GPL sürümünde asenkron replikasyonu desteklemektedir. Senkron replikasyon için MySQL Cluster’ı inceleyip satın alabilirsiniz.
MySQL log-based replication yönetimini kullanır. Yani her transaction kaydı “binary log” olarak adlandırılan loglarda tutulur. Slave, master’a bağlandığında en son kaldığı logdan itibaren verileri günceller. Eğer ilk defa bağlanıyorsa ilk logdan itibaren güncelleme yapar. Slave’in kaçıncı logdan güncelleme yapacağını komut satırından slave’e bildirebilir ya da master’a belirli bir süre öncesindeki logları silmesini emredebiliriz. Eğer slave zaten bağlı ise anında güncelleme yapar. Master’da yapılan tablo yapısı değişiklikleri de replikasyon kapsamında slave’e yansıtılır.
Bu kısımda ayrıntılara fazla değinmeden olmazsa olmaz temel konfigurasyon ayarlarından söz edeceğim. Daha ayrıntılı bilgilere MySQL’in dökümanlarından ulaşılabilir.
Öncelikle her sunucuya(master ve slave) benzersiz (unique) bir id vermemiz gerekiyor.
Master için “binary log”u açmamız ve bir replikasyon kullanıcısı oluşturmamız gerekiyor.
Slave’e master’ı tanıtmamız ve replication’u başlatmadan önce slave ve master verilerini eşitlemeliyiz.
Master için örnek konfigurasyon:
server-id=1
log-bin
binlog-do-db=test #olmazsa hepsinin binlog’unu alır.
Slave için örnek konfigurasyon:
server-id=2
master-host=192.168.1.1
master-user=replication
master-password=1234
replicate-do-db=test #olmazsa hepsini replicate eder.
Master’da replication kullanıcısı oluşturmak ya da varolan kullanıcıya bu özelliği kazandırmak için örnek komut:
GRANT REPLICATION SLAVE ON *.* TO replication@’192.168.1.%’ IDENTIFIED BY ‘1234′;
Sunucuları yeniden başlatattıktan sonra replication başlayacaktır. Ancak replicate edilen veritabanlarının eşitlenmiş yani aynı verilere sahip olması gerekmektedir. Eğer db boş ise sorun olmaz. Ancak hali hazırda kullanılan bir db’i replicate edecekseniz mysqldump ile verileri slave’e manuel olarak kopyalamalısınız. Bu sırada master’daki verilerde bütünlüğün bozulmaması için kesinlikle güncelleme olmamalıdır. Eşitleme işlemini yapmazsanız replikasyonu durduracak hatalarla karşılaşabilir ve veri bütünlüğünün bozulmasına neden olabilirsiniz.
Multi-master replication master’ların aynı zamanda slave olarak konfigure edilmesi şeklinde olabilir. Ancak asenkron bir replikasyon olduğu için önerilmez. Çünkü veri bütünlüğü bozulabilir.
Bu konu ile ilgili söyleyeceklerim şimdilik bu kadar…
Teşekkürler,
www . mysqlsupport . net
Turkce Mysql Destek Sitesi