CentOS'da (diğer Linux dağıtımlarında da çalışır) MySQL replication için bir Master ve bir Slave MySQL'i kurulması gerekir. 192.168.10.1 IP'sine Master için MySQL 5.5 , 192.168.10.2 IP'sine ise Slave için MySQL 5.5 kurulabilir. Kurulum işlemleri yapıldıktıktan sonra aşağıdaki işlemler yapılmalıdır
Master'da Slave MySQL'den replication yapılabilmesi için gerekli yetkilere sahip bir kullanıcı yaratılmalıdır :
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'sifrem';
FLUSH PRIVILEGES;
Yukarıdakini çalıştırarak hem replication için gerekli yetkiler veriyoruz hem de kullanıcıyı yaratıyoruz. 'slave_user'@'%' şeklinde tanımlanmasından dolayı slave_user herhangi bir IP'den istekte bulunabilir. Flush ile başlayan satır yetkilerin yenilenmesi için. Daha sonra restart işlemi zaten yapılacağında gerek olmayabilir.
Master MySQL'de my.cnf dosyasına (path'i /etc/my.cnf şeklinde) aşağıdakiler eklenmelidir :
log-bin = mysql-bin
server-id = 1
Bu değişikliklerden sonra master MySQL'i restart edebilirsiniz
Slave MySQL'de my.cnf dosyasına (path'i /etc/my.cnf şeklinde) aşağıdakiler eklenmelidir :
log-bin = mysql-bin
server-id = 2
relay-log = mysql-relay-bin
log-slave-updates = 1
read-only = 1
Slave MySQL'i restart edebilirsiniz
Bu işlemlerden sonra Slave MySQL'i master'daki durumdan başlatmak gerekiyor. Bunun için Master backup alınıp , Slave restore edilmesi gerekir. Aşağıdaki gibi bu işlem yapılabilir :
mysqldump -u root -p --all-databases --master-data=2 > dbdump.db
dbdump.db dosyası slave MySQL'inin server'ına kopyalanıp , aşağıdaki ile restore işlemi yapılır :
mysql -u root -p < dbdump.db
dbdump.db içeriğine bakarsanız aşağıdaki gibi bir satır görmeniz gerekmektedir :
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=906;
Burada master'ın konum bilgisi bulunmaktadır. Slave MySQL'de replication'un hangi konumdan başlayacağını belirtmek için aşağıdaki komut çalıştırılması gerekmektedir :
change master to master_host='192.168.10.1 ', master_user='slave_user', master_password='sifrem', master_log_file='mysql-in.000006', master_log_pos=906;
Bu işlemden sonra replication aşağıdaki komut ile başlatılır :
start slave;
Replication ile ilgili bilgiyi show slave status komutunu çalıştırarak öğrenebilirsiniz
Test etmek için master MySQL'de bir veritabanı ve tablo yaratıp , içerik ekleyebilirsiniz. Eğer replication başarılı kuruldu ise yaptığınız işlemlerin aynen slave MySQL'de de olması gerekir
Bu çalışmada http://www.ovaistariq.net/565/setting-up-master-slave-replication-with-mysql/ makelesinden yararlanılmıştır. Master-Slave ortamı bu makale yardımıyla kurulmuş ve başarılı bir şekilde test edilmiştir.