MySQL veritabanı yönetiminde master-slave replikasyon kurulumu, özellikle yüksek trafik alan web siteleri ve kritik uygulamalar için vazgeçilmez bir yöntemdir. Bu yapı sayesinde ana veritabanına (master) yazılan tüm veriler, anında bir veya daha fazla yedek veritabanına (slave) kopyalanır. Peki, bu replikasyon nasıl gerçekleştirilir? İşte adım adım anlatım.
Neden Master-Slave Replikasyon?
Master-slave replikasyonun en büyük avantajlarından biri, okuma yükünü slave sunuculara dağıtarak master üzerindeki baskıyı azaltmasıdır. Örneğin, bir e-ticaret sitesinde ürün listeleme gibi okuma işlemleri slave üzerinden yapılırken, sipariş oluşturma gibi yazma işlemleri master'da kalır. Ayrıca, master sunucusu çökerse, slave'i hızlıca master yaparak kesintisiz hizmet sağlayabilirsiniz.
Master Sunucusunu Hazırlama
Öncelikle master sunucuda replikasyon için gerekli ayarları yapalım. MySQL konfigürasyon dosyasını (genelde /etc/mysql/my.cnf veya /etc/my.cnf) açın ve aşağıdaki parametreleri ekleyin:
- server-id: 1 (master için benzersiz bir ID)
- log-bin: /var/log/mysql/mysql-bin.log (binary log dosyasının yolu)
- binlog-do-db: replike edilecek veritabanı adı (isteğe bağlı)
Örnek bir yapılandırma:
[mysqld] server-id = 1 log-bin = /var/log/mysql/mysql-bin.log binlog-do-db = myappArdından MySQL'i yeniden başlatın: sudo systemctl restart mysql
Replikasyon Kullanıcısı Oluşturma
Master sunucuda slave'in bağlanacağı bir kullanıcı oluşturmalısınız. MySQL'e root kullanıcıyla bağlanın ve şu komutları çalıştırın:
CREATE USER 'replica'@'%' IDENTIFIED BY 'güçlü_şifre'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES;Burada '%' tüm IP'lerden bağlantıya izin verir; güvenlik için belirli bir IP adresi kullanmanız önerilir.
Master Durum Bilgilerini Alma
Slave kurulumunda kullanmak üzere master'ın binary log dosya adı ve pozisyonunu alın:
SHOW MASTER STATUS;Çıktıdaki File ve Position değerlerini not edin. Örneğin: File: mysql-bin.000001, Position: 107
Slave Sunucusunu Hazırlama
Şimdi slave sunucuya geçin. Konfigürasyon dosyasına şu satırları ekleyin:
- server-id: 2 (master'dan farklı olmalı)
- relay-log: /var/log/mysql/mysql-relay-bin.log
Örnek:
[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.logMySQL'i yeniden başlatın.
Slave Bağlantısını Ayarlama
Master'dan aldığınız bilgilerle slave'i master'a bağlayın. MySQL'e root olarak bağlanın ve şu komutu çalıştırın:
CHANGE MASTER TO MASTER_HOST='master_ip_adresi', MASTER_USER='replica', MASTER_PASSWORD='güçlü_şifre', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;Ardından slave'i başlatın:
START SLAVE;Replikasyon durumunu kontrol etmek için:
SHOW SLAVE STATUS\G;Çıktıda Slave_IO_Running ve Slave_SQL_Running değerleri Yes olmalıdır. Aksi halde hata mesajını inceleyin.
Karşılaşılabilecek Sorunlar ve Çözümleri
- Firewall engeli: Master sunucunun 3306 portunun slave'den erişime açık olduğundan emin olun.
- server-id çakışması: Tüm sunucularda unique server-id kullanın.
- Binary log pozisyon uyumsuzluğu: Eğer slave zaten eski veri içeriyorsa, master'dan bir dump alıp slave'e yükleyin, ardından doğru pozisyon ile bağlayın.
Önemli: Canlı sistemlerde replikasyon kurarken mutlaka yedek alın ve işlemi düşük trafik saatlerinde yapın.
Sonuç
Master-slave replikasyon, HostingServer.com.tr olarak müşterilerimize önerdiğimiz temel veritabanı yönetimi tekniklerindendir. Bu yapı sayesinde uygulamalarınızın performansını artırabilir, veri kaybı riskini azaltabilirsiniz. Kurulum sonrası düzenli olarak replikasyon durumunu kontrol etmeyi unutmayın. Unutmayın, doğru yapılandırma ve izleme ile MySQL replikasyonu sizi büyük dertlerden kurtarır.