1 Ekim 2010 Cuma

Adım adım MySQL Replication

Başlangıç olarak master ve slave tarafında MySQL server in kurulu olduğunu,
her iki server için gerekli network ayarlarının yapıldığını varsayıyorum.

Öncelik replikasyon için gerekli olan bazı MySQL server konfigurasyon
ayarlarının her iki taraf için de kontrol edilmesi gerekiyor.
Bu ayarlar işletim sisteminize bağlı olarak my.cnf veya my.ini
dosyası içerisinde bulunabilir. Ben burada işletim sisteminin
linux olduğunu varsayarak devam edeceğim.

1-Master veritabanında slave için user oluşturulması

Master da çalıştırılacak;


mysql> GRANT REPLICATION SLAVE ON *.* TO `slaveuser`@`slave_ip` IDENTIFIED BY '1234';



2-MySQL parametrelerinin ayarlanması

Master için;


[mysqld]
server_id=10
log_bin = mysql-bin




Slave için;


[mysqld]
server_id=20
log_bin = mysql-bin
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1



Burada "server_id" , her database server e farklı atamanız gereken bir tamsayıdır.
Ben bu server_id nin IP adresi ile ilişkilendirerek kullanıyorum.
Mesela, server IP adresi 192.168.2.10 için kullanacağımız server_id de 10 olacak.

3-Master ve slave veritabanlarının kapatılması

Yukarıdaki değişiklikleri yaptıktan sonra server larımızın kapatılıp açılması gerekiyor. Böylece değişikliklerimiz aktif olacak. Şimdi her iki
veritabanını da kapatıyoruz.

Master ve slave de çalıştırılacak;


-bash-3.2$ /etc/init.d/mysql stop



Bu aşamada MySQL server larımızın konfigurasyon dosyaları replikasyona hazır durumda.

4-Master veritabanının slave e kopyalanması

Önce slave veritabanınızın data klasörünü tamamen silin.
Burada my.cnf veya my.ini konfigurasyon dosyası data klasöründeyse bu dosyayı değiştirmemeye/silmemeye dikkat etmeniz yeterli.
Master veritabanına ait data klasörünü slave veritabanımızın data klasörüne kopyalayın. Böylece her iki veri tabanımız eşitlenmiş olacak. (Kopyalama sırasında master hemde slave veritabanları
kapalı olmalı.)

Böylece slave veritabanımızın, master ile aynı olmasını sağlamış olduk.

5-Master ve slave veri tabanlarının açılması

Master ve slave de çalıştırılır;



-bash-3.2$ /etc/init.d/mysql start



6-Slave veritabanının master a bağlanması için gerekli parametrelerin set edilmesi

Aşağıdaki komutu çalıştırarak slave veritabanının master veritabanına
replikasyon için bağlantı parametreleri set edilir.


mysql> CHANGE MASTER TO
MASTER_HOST='ServerIP/FQDN',
MASTER_USER='ReplClient',
MASTER_PASSWORD='ClientPassword';



7-Replikasyonun başlatılması ve kontrol edilmesi

Slave tarafında start slave komutu çalıştırılarak replikasyon başlatılır.


mysql> START SLAVE;



Slave tarafında SHOW SLAVE STATUS komutu ile replikasyon durumu görüntülenir.
Gelen ekranda herhangibir error olmamalıdır.


mysql> SHOW SLAVE STATUS\G



NOTLAR
***************************************

Replikasyonu başlatabilmek için, slave veritabanına , master daki hangi
noktadan değişiklikleri uygulamaya başlayacağını bildirmek gerekiyor.
Bu nedenle master veritabanını kapatmadan slave veritabanı konfigure etmek
ek adımlar ile mümkün. Biz burada master varitabanını kapatıp kopyalarak
her iki veri tabanını eşitleme adımını başarmış olduk.

Eğer başarı ile replikasyonu tamamlayabildiysek,
bundan sonra master a uygulanan ve veritabanında değişiklik yaratan
her query, slave e uygulandığından, slave deki verimiz master dakine
maximum eşitlikte olacaktır. Burada maximum eşitlikte diyorum çünkü
örneğin insert deyimi içinde now() fonksiyonu kullanırsanız
slave tarafındaki veri, master tarafından farklı olabilecektir.
(Statement Based Replication)

Daha fazla bilgi için aşağıdaki linki inceleyebilirsiniz.

http://dev.mysql.com/doc/refman/5.1/en/replication-sbr-rbr.html

Daha fazla bilgi için;

http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html

Hiç yorum yok:

Yorum Gönder