Mysql Master – Slave Replication Yapımı

Mysql Master – Slave Replication Yapımı

Bu Dökümanda kullanılacak sunucu ip adresleri:

Ana (Master) Database : 12.34.56.789
İkinci (Slave) Database : 12.23.34.456

Kurulum:
Bu işlem eğer mysql server ve client bulunmuyorsa işlem yapmanız gerekmektedir.

sudo apt-get install mysql-server mysql-client

Adım 1: Ana Databasenini yapılandırma

Ana sunucuda mysql yapılandırma dosyasını açın.

sudo nano /etc/mysql/my.cnf

İp adresi değişimi yapmamaız gerekiyor.

bulun:

bind-address            = 127.0.0.1

Değiştirin:

bind-address            = 12.34.56.789 

(Sunucu ip adresinizi yazacaksınız)

Sonrasında sunucu numaralarınızı yazmanız gereklidir. 1. master olana 1 verelim.

server-id               = 1

başında açıklama satırını olup olmadıgına dikkat ediniz.

Aşagıdaki kodu aktifleştirin. Başındaki yorum satırını kaldırınız. Slave database baglantı loglarını tutacak.

log_bin                 = /var/log/mysql/mysql-bin.log

Bundan sonraki aşamaada hangi veritabanını replica yapacagınızı belirtiyoruz.

binlog_do_db            = yeniveritabani

Sonrasında mysql resetleyin.

sudo service mysql restart

Mysql e root yetkisi ile erişim yapın.

mysql -u root -p

Slave makine için bilgilerini yazmanız gerekmektedir. Kendinize göre bilgileri doldurun.

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

sonrasında

FLUSH PRIVILEGES;

kodunu yazınız.

Sonrasında yeni bir ssh penceresi acıp veritabanına baglanın ve aşagıdaki kod ile o veritabanını kullanmaya başlayın.

USE newdatabase;

Sonrasında okumayı engellemek için kilitleyin.

FLUSH TABLES WITH READ LOCK;

hemen sonrasında

SHOW MASTER STATUS;

Aşagıdakine benzer bir kod alacaksınız.

mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 107 | newdatabase | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

Yukarıdaki bilgileri kayıt edin. İlerleyen süreçte gerekecek.

Eğer bu pencerede işlem yaparseniz okuma kilidini kaldıracaktır. Bu yüzden yeni bir pencerede ssh baglanın.

Eğer kilid kapalı ise aşagıdaki kod ile mysql yedeginizi alın.

mysqldump -u root -p --opt newdatabase > newdatabase.sql

Şimdi bir önceki ssh pencerenizi acın ve veritabanının okuma iznini acın.

UNLOCK TABLES;
EXIT;

diyerek çıkın.

Slave serverinize gecin ve veri tabanınızı yükleyin.

mysql -u root -p newdatabase < /path/to/newdatabase.sql

Sonrasında my.cnf den 2. database sunucusu oldugunu belirtelim.

sudo nano /etc/mysql/my.cnf

bir öncekinde server-id degerini 1 yapmıştık bunu 2 yapalım. Lütfen sıra numaralarını dikkatli yapın.

server-id               = 2

Aşagıdaki kodları bulup düzenleyin.

relay-log               = /var/log/mysql/mysql-relay-bin.log
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = newdatabase

kayıt ettikten sonra mysql serverinizi resetleyin

sudo service mysql restart

Mysqle giriş yapıp aşagıdaki kodları yazın. Unutmadan ip adreslerini kendinize göre düzenleyin.

CHANGE MASTER TO MASTER_HOST='12.34.56.789',MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  107;

Üstteki kod ile bu sunucun master sunucunun slave sunucusu oldugunu belirtmiş oluruz. Sonrasında slave server başlatmamız gerekiyor.

START SLAVE;

Durum Kontrol için:

SHOW SLAVE STATUS\G

Eğer sıkıntılı bir durum olursa.

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; SLAVE START; 

kodunu çalıştırabilirsiniz.

Yazar: admin