Mysql Master-Slave Replication,
Replication kelime anlamı olarak Veri Kopyalama anlamına gelir.Database tarafında ise; bir database’in başka bir sunucu üzerindeeş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şlenikdatabase ‘Slave’ yansır. Replication bir backuplamayöntemi değildir. Çünkü Master database de yapılan bir deleteişlemi slave database de de yapılacağı için her iki database de deveri silinmiş olacaktır. Replication nun faydası yüksek erişilebilirliliksağlaması(Hight Availability)ve uygulamanın performansında artışa
sebeb olmaktır. Bu performans artışını da uygulama tarafındainsert-update-delete işlemlerini master database’e select işlemlerini deslave 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ı gerekmektedir. 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 Db192.168.1.22:Slave DbMaster 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.logbinlog-do-db=personelserver-id=1yukarı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 veenter’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 konfirigasyonundakullanacağı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ızya da ayarlarımızı bitirdikten sonra LOAD DATA FROM MASTER; komutunu kullanarakverileri taşıyacağız.Mysql de dump alma işleminihttp://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 iseLOAD DATA FROM MASTER; yaptığınız zaman Master db niz işlem bitene kadarlock 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 iseLOAD 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 limakina 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=2master-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=60replicate-do-db=personel7.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öyleceMaster 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 ederseRESET 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.Tayfur BÖLERDatabase Administratorwww.mysqlsupport.net