Mysql Master-Slave Replication

Mysql Master-Slave Replication,

Replication kelime anlamı olarak Veri Kopyalama anlamına gelir.
Database tarafında ise; bir database’in başka bir sunucu üzerinde
eşleniğinin ‘yani hem yapısal hem de datasal olarak’ tutulmasıdır.
Master database da yapılan herhagi bir değişiklik anında eşlenik
database ‘Slave’ yansır. Replication bir backuplama
yöntemi değildir. Üünkü Master database de yapılan bir delete
işlemi slave database de de yapılacağı iÇin her iki database de de
veri silinmiş olacaktır. Replication nun faydası yüksek erişilebilirlilik
sağlaması(Hight Availability) ve uygulamanın performansında artışa
sebeb olmaktır. Bu performans artışını da uygulama tarafında
insert-update-delete işlemlerini master database’e select işlemlerini de
slave database’e yönlendirilerek yapılabilir. Tabi bu yapıyı Çoğaltma
şansınız var.Master -Slave -Slave — şeklinde Slave sunucu sayısını
arttırabilirsiniz. Burada dikkat etmeniz gereken bir nokta var.
Master ve Slave sunucuların aynı network farmında bulunması gerekmek
tedir. Aksi takdirde perforans ta ciddi azalmalar meydana gelir.

şimdi nasıl Master – Slave Replication yaparız ona bakalım.

Elimizde 192.168.1.21 ve 192.168.1.22 ip li 2 tane mysql serverımız olmuş olsun.
192.168.1.21: Master Db
192.168.1.22:Slave Db
Master sunucu üzerindeki personel databaseini replice edelim.

1.Adım: Master ve Slave Database lerde /etc/mysql/my.cnf conf dosyası
iÇinden : #bind-adres=127.0.0.1
#skip-networking ibarelerinin kaldırılması gerkiyor.Yani başına # işareti koymanız yeterli.

2.Adım: Master sunucuda ki /etc/mysql/my.cnf conf dosyasını aÇıp

[mysqld]
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=personel
server-id=1

yukarıdaki ayarları yazmanız gerekiyor.

3.Adım : Sonra mysql’i restart edin.(/etc/init.d/mysql restart)
Devamında veritabanına root olarak girip ve replication haklarına sahip bir user yaratacağız.

Konsoldan mysql -u root -p yazıp entera basın ve passwordu girin.Böylece mysql’e bağlanmış
olacaksınız. Daha sonra;

GRANT REPLICATION SLAVE ON *.* TO “slave_user”@ “%” IDENTIFIED BY “password”;

“slave_user” yerine vereceğiniz userı ,’password’ yerine de vereceğiniz passwordu yazın ve
enter’a basın. Devamında da;

FLUSH PRIVILEGES;
yazıp Çalıştırmanız yeterlidir.

4.Adım:
Hala Master sunucu da mysql konsolunun aÇık olması gerekmektedir.

SHOW MASTER STATUS;
deyip,

+”““““““+”“““-+”““““““+”““““““““+

| mysql-bin.066 | 1180 | personel | |

+”““““““+”“““+”““““““+”““““““““+

yukarıda ki gibi gelen ekrandaki bilgileri not ediniz. Daha sonra slave konfirigasyonunda
kullanacağız.

5.Adım :
Bu adımda Master sunucudaki verilerin Slave sunucuya taşıma işlemini nasıl yapacağınıza
karar vermeniz gerekmektedir. Ya Master sunucu da dump alarak verileri taşıyacaksınız
ya da ayarlarımızı bitirdikten sonra LOAD DATA FROM MASTER; komutunu kullanarak
verileri taşıyacağız.Mysql de dump alma işlemini
http://www.mysqlsupport.net/mysql-backup.html adresinde nasıl yapılacığını anlatmıştım.
LOAD DATA FROM MASTER; komutunu kullanacak isek bu aşamayı şimdilik geÇiyoruz.
Bir dip not düşmek istiyorum eğer taşıyacağınız datanın boyutu büyük ise
LOAD DATA FROM MASTER; yaptığınız zaman Master db niz işlem bitene kadar
lock olacaktır .

6.Adım: Slave Sunucu ayarlarına başlayabilriz.
Üncelikle Slave sunucu da master sunucudaki personel database’ini oluşturmanız gerekecektir.
Daha sonra eğer dump almış isek onu restore ediyoruz.Eğer dumpımız yok ise
LOAD DATA FROM MASTER; komutunu bu aşamada Çalıştırmıyoruz.
şimdi Slave sunucuya kendisinin Slave olduğunu Masterının ise 192.168.1.21 ip li
makina olduğunu ve personel database’ini araması gerektiğini söylüyoruz.
Bunun iÇin aşağıdaki satırları /etc/mysql/my.cnf conf dosyasının iÇine ekliyoruz.

[mysqld]
server-id=2
master-host=192.168.1.21(Master sunucunun ip si)
master-user=slave_user(Master da, slave sunucunun kullanması iÇin oluşturduğumuz user)
master-password=password(Master da, slave sunucunun kullanması iÇin oluşturduğumuz pass)
master-connect-retry=60
replicate-do-db=personel


7.Adım:
şimdi /etc/init.d/mysql restart komutunu verip mysql’i restart edin.
Sonra konsoldan mysql -u root -p yazarak mysql’e bağlanıp,
LOAD DATA FROM MASTER; komutunu Çalıştırabilirsiniz. Böylece
Master sunucudaki dataları Slave sunucuya taşımız olursunuz.

8.Adım: Slave deki Mysql’e bağlı konumdayken,
SLAVE STOP; işlemini yapın ve
(Master daki SHOW MASTER STATUS; komutu sonuclarına göre doldurulacak)

CHANGE MASTER TO MASTER_HOST=’192.168.1.21â?²,
MASTER_USER=“slave_user”,
MASTER_PASSWORD=“password”,
MASTER_LOG_FILE=“mysql-bin.066â?², MASTER_LOG_POS=1180;

yukarıdaki komut satırlarını Çalıştırın. Burada herhangi bir hata almamanız gerekmektedir.
Eğer hata alırsanız bilgileri doğru girdiğinizde emin olun.Hala hata devam ederse
RESET SLAVE; komutunu Çalıştırıp tekrar tekrar deneyin.
Bu işlemi de problemsiz atlattıkdan sonra ;

START SLAVE;
komutunu Çalıştırın.

Evet 8.Adımla birlikte MASTER-SLAVE Replication işlemini tamamlamış olduk.
şimdi ise testler yapabilirsiniz.

Bir sonraki makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator