Mysql Master-Master Replication

Mysql Master-Master Replication

Master-Slave Replication da hertürlü veri girişleri, updateler, deleteler,
yeni tablo oluşturma işlemleri vs Master database de yapılırdı. Slave
database sadece read only şeklinde kullanılır ve sadece select işlemleri
bu database”e yönlendirildi. Master-Maser replication da ise her iki master database
de de insert/update/delete vs işlemleri yapılır ve neredeyse her iki database
kendini anlık olarak eşler. Hem Master-Master hem de Master – Slave
Replication Asenkron replicationdur. Data eşleşmesini binary logları
kullanarak yapar.Yani Log-Based bir yapıya sahiptir. Senkron Replication
yani Cluster”ı ise bir sonraki makalemde detaylı olarak anlatacağım.

şimdi Master-Master replication”u nasıl yaparıza bakmaya başlayalım.

Ve adım adım işlemleri yapalım:

Elimizde 192.168.1.21 ve 192.168.1.22 ip li 2 tane mysql server kurulu
makinamız olmuş olsun. deneme isimli database”i replice edelim.

1. Adım: Her iki makinada da,

#bind-address = 127.0.0.1
#skip-networking ifadelerini /etc/mysql/my.cnf conf dosyasından kaldırıyoruz.
Yani başına # işareti koymamız yeterli.

2. Adım:

Server1:

GRANT REPLICATION SLAVE ON *.* TO “slaveUser2â?²@”%” IDENTIFIED BY “password”;
FLUSH PRIVILEGES;

Server1 de yukarıdaki replication userını tanımlıyoruz.Ve
/etc/init.d/mysql restart komutunu verek Server1â?²i restart ediyoruz.

Server2:

GRANT REPLICATION SLAVE ON *.* TO “slaveUser1â?²@”%” IDENTIFIED BY “password”;
FLUSH PRIVILEGES;

Server2 de yukarıdaki replication userını tanımlıyoruz.Ve
/etc/init.d/mysql restart komutunu verek Server2â?²i restart ediyoruz.

3. Adım:

Server1:
/etc/mysql/my.cnf de

[mysqld]
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1

master-host = 192.168.1.22 (Master 2 serverın ip sini yazıyoruz)
master-user = slaveUser1 (Master 2 de oluşturduğumuz replicasyon userının adını yazıyoruz)
master-password = password (Master 2 de oluşturduğumuz replicasyon userının passwordunu yazıyoruz)
master-connect-retry = 60
replicate-do-db = deneme

log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = deneme

relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index

expire_logs_days = 10
max_binlog_size = 500M

/etc/init.d/mysql restart komutunu verek Server1â?²i restart ediyoruz.

4. Adım:

Server2:

[mysqld]
server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2

master-host = 192.168.1.21 (Master 1 “in ipsini yazıyoruz.)
master-user = slaveUser2 (Master 1 de oluşturduğumuz replicasyon userının adını yazıyoruz)
master-password = password (Master 1 de oluşturduğumuz replicasyon userının passwordunu yazıyoruz)
master-connect-retry = 60
replicate-do-db = deneme

log-bin= /var/log/mysql/mysql-bin.log
binlog-do-db = deneme

relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index

expire_logs_days = 10
max_binlog_size = 500M

/etc/init.d/mysql restart komutunu verek Server2â?²i restart ediyoruz.

5. Adım:

Server 2:

stop slave; (problem Çıkarsa reset slave yapın).
(server2 de change master bilgilerini doldururken server1 de SHOW MASTER STATUS; komutu verip bilgileri buraya yazın.)

CHANGE MASTER TO MASTER_HOST=“192.168.1.21â?²,
MASTER_USER=“slaveUser2â?²,
MASTER_PASSWORD=“password”,
MASTER_LOG_FILE=“mysql-bin.000049â?², (Server1 de SHOW MASTER STATUS; komutunun sonucuna göre doldur )
MASTER_LOG_POS=98; (Server1 deSHOW MASTER STATUS; komutunun sonucuna göre doldur )
start slave;

sonra;

LOAD DATA FROM MASTER;

yapın yetki hatası alırsanız
grant ALL on *.* to slaveUser1 komutunu veriniz.

6.Adım:

Server1:

stop salve; yapın.

(Server1 de change master bilgilerini doldururken server2 de SHOW MASTER STATUS; komutu verip bilgileri buraya yazın.)

CHANGE MASTER TO MASTER_HOST=“192.168.1.22â?²,
MASTER_USER=“slaveUser1â?²,
MASTER_PASSWORD=“password”,
MASTER_LOG_FILE=“mysql-bin.000048â?², (Server2 de SHOW MASTER STATUS; komutunun sonucuna göre doldurun. )
MASTER_LOG_POS=98; (Server2 de SHOW MASTER STATUS; komutunun sonucuna göre doldurun. )

start slave yapın.

İşte sonunda Master – Master replication Çalışmaya başlayacaktır.
Her iki servera da /etc/init.d/mysql restart komutunu verirseniz Replicationunuzu kullanmaya
başlayabileceksiniz.

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

Tayfur BÖLER
Database Administrator