Veritabanı Replikasyonu ve Yüksek Erişilebilirlik (HA) Rehberi
Veritabanı Replikasyonu ve Yüksek Erişilebilirlik (HA) Rehberi
Son Güncelleme: Nisan 2026
Veritabanı replikasyonu (çoğaltma) ve yüksek erişilebilirlik (HA), modern web uygulamalarının kesintisiz çalışması için kritik öneme sahiptir. Bu rehberde MySQL/MariaDB temelli replikasyon yaklaşımları, Galera gibi multi-master çözümler, failover (otomatik devreye alma) ve izleme stratejileriyle pratik uygulama senaryoları ele alınacaktır.
İçindekiler
- Veritabanı Replikasyonu ve HA Nedir?
- Replikasyon Tipleri
- Kuruluma Başlarken: Ön Koşullar
- MySQL Master-Slave (Asenkron) Örneği
- Galera (Senkron/Multi-Master) Örneği
- Failover ve İzleme (Monitoring)
- Yedekleme ve Veri Tutarlılığı
- Performans ve Optimizasyon İpuçları
- Sıkça Sorulan Sorular
- Sonuç
Veritabanı Replikasyonu ve HA Nedir?
Veritabanı replikasyonu (çoğaltma), bir veritabanındaki verilerin bir veya daha fazla kopyaya düzenli olarak aktarılması işlemidir. Amaçlar arasında yük dağıtımı (load balancing), okuma ölçeklendirmesi (read scaling), yedeklilik (redundancy) ve felaket kurtarma (disaster recovery) yer alır. Yüksek erişilebilirlik (HA) ise bir sistemin arıza durumlarında hizmet vermeyi sürdürme yeteneğidir; bu genellikle replikasyon, izleme ve otomatik failover mekanizmaları ile sağlanır.
Replikasyon Tipleri
Genel olarak üç ana replikasyon yaklaşımı bulunur:
- Asenkron (Master-Slave): Yazma işlemleri bir ana (master) node'da gerçekleşir, çoğaltma gecikmeli olabilir.
- Senkron / Kısmi Senkron (Galera, Group Replication): Yazma işlemleri birden fazla node'a aynı anda uygulanır; veri tutarlılığı yüksektir fakat gecikme (latency) artabilir.
- Multi-Master: Birden çok node hem okuma hem yazma yapabilir; çakışma çözümü (conflict resolution) ve uygulama tasarımı gerektirir.
| Özellik | Asenkron (Master-Slave) | Senkron / Galera | Multi-Master |
|---|---|---|---|
| Veri Tutarlılığı | Düşük-Orta (lag olabilir) | Yüksek | Orta (çakışma yönetimi gerekir) |
| Okuma Ölçeklendirme | İyi | İyi | Çok iyi |
| Yazma Ölçeklendirme | Sınırlı | Sınırlı | İyi |
| Kurulum Karmaşıklığı | Kolay-Orta | Orta-Zor | Zor |
| Önerilen Kullanım | Okuma ağırlıklı uygulamalar | Finansal işlemler, tutarlılık kritik | Çok yazmalı dağıtık uygulamalar |
Kuruluma Başlarken: Ön Koşullar
Başarılı bir replikasyon altyapısı için dikkat edilmesi gereken ana noktalar:
- Ağ Latency (Gecikme): Düşük gecikme tercih edilir; veri merkezleri arası bağlantı optimizasyonu önemlidir.
- Saat Senkronizasyonu (NTP): Tüm sunucularda
ntpdveyachronyile zaman senkronizasyonu sağlanmalıdır. - Donanım Kaynakları: Disk I/O, RAM ve CPU yeterliliği kontrol edilmelidir.
- Güvenlik (Şifreleme): Replikasyon trafiği için TLS/SSL kullanımı önerilir.
- Yedekleme: Replikasyon, yedeklemenin yerine geçmez; düzenli yedek alınmalıdır.
MySQL Master-Slave (Asenkron) Örneği
Bu bölümde temel bir Master-Slave kurulumu örneği adım adım gösterilecektir. Aşağıdaki örnek MySQL/MariaDB için geçerlidir.
1) Master Sunucu Konfigürasyonu
Master üzerinde my.cnf dosyasına temel replikasyon ayarları eklenir:
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
Değişiklik sonrası MySQL yeniden başlatılır ve replikasyon için bir kullanıcı oluşturulur:
CREATE USER 'repl'@'%' IDENTIFIED BY 'GüçlüParola123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
SHOW MASTER STATUS çıktısındaki File ve Position değerleri not edilir.
2) Slave Sunucu Konfigürasyonu
Slave üzerinde my.cnf içinde benzersiz bir server-id ayarlanır (ör. 2). Ardından replikasyon başlatılır:
CHANGE MASTER TO
MASTER_HOST='master.example.com',
MASTER_USER='repl',
MASTER_PASSWORD='GüçlüParola123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=12345;
START SLAVE;
SHOW SLAVE STATUS\G
İzleme: SHOW SLAVE STATUS\G komutunda Slave_IO_Running ve Slave_SQL_Running değerlerinin Yes olması gerekir.
3) Gecikme (Lag) Yönetimi
- Periyodik Kontrol:
SHOW SLAVE STATUSile gecikme kontrolü yapılmalı. - Okuma Yönlendirme: Uygulamanızda okuma isteklerini slave sunuculara yönlendirerek ana (master) üzerindeki yük azaltılabilir.
Galera Cluster (Senkron / Multi-Master) Örneği
Galera (örn. Percona XtraDB Cluster, MariaDB Galera) node'lar arasında senkron replikasyon sağlar. Temel avantajları: otomatik node ekleme, senkron commit ve multi-master yazım desteğidir.
1) Temel Yapı
- Gerekli Paketler: Galera uyumlu MariaDB/Percona paketleri kurulur.
- wsrep_cluster_address: Tüm cluster node adresleri burada tanımlanır.
2) Örnek Konfigürasyon (my.cnf içinde)
[mysqld]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://node1,node2,node3"
wsrep_cluster_name="my_galera_cluster"
wsrep_node_address="node1"
wsrep_node_name="node1"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
Cluster ilk node ile başlatılır, diğerleri ona katılır. Galera senkron çalıştığında veri tutarlılığı yüksektir fakat yazma gecikmesi artırabilir.
Failover ve İzleme (Monitoring)
Otomatik failover için yaygın yaklaşımlar:
- Keepalived + Virtual IP (VIP): Master node arızalandığında VIP diğer node'a taşınır.
- Proxy Katmanı (HAProxy, ProxySQL): Okuma/yazma ayrımı ve yönlendirme için kullanılır.
- Orkestrasyon Araçları: Pacemaker, Corosync gibi araçlarla daha gelişmiş cluster yönetimi sağlanır.
İzleme için önerilen metrikler ve araçlar:
- Metrikler: Replikasyon gecikmesi, bağlantı sayısı, disk I/O, sorgu gecikmeleri.
- Araçlar: Prometheus + Grafana, Percona Monitoring and Management (PMM).
Yedekleme ve Veri Tutarlılığı
Replikasyon veri kopyası sağlar ama tek başına yeterli bir yedekleme stratejisi değildir. Aşağıdaki yaklaşımlar önerilir:
- Anlık Görüntüler (Snapshots): Disk seviyesinde hızlı backup sağlar; tutarlılık için veritabanı öncesi flush/lock gerekebilir.
- Logical Dump:
mysqldumpile periyodik full dump alınabilir. - Point-in-Time Recovery (PITR): Binary log'lar ile belirli bir zamana geri dönme imkanı.
Örnek mysqldump komutu:
mysqldump --single-transaction --routines --triggers --events -u root -p mydatabase > backup.sql
Performans ve Optimizasyon İpuçları
Replikasyon altyapınızı verimli ve dayanıklı kılmak için pratik öneriler:
- Binlog Format:
ROWformatı veri tutarlılığı açısından genellikle tercih edilir. - İndeksleme: Okuma sorgularında indeksleri gözden geçirin.
- İzleme ve Alarm: Replica lag için eşik değerler belirleyin ve alarm kurun.
- Okuma/Yazma Ayrımı: Uygulama katmanında read replica kullanımı ile ölçeklendirme sağlayın.
- Bağlantı Havuzu (Connection Pooling): Uygulama tarafında
PgBouncerveyaProxySQLgibi çözümler kullanın.
Pratik Kullanım Senaryoları ve Örnekler
Gerçek dünya örnekleri ile hangi yöntemin ne zaman tercih edileceğine dair rehber:
- Okuma Ağırlıklı Web Uygulaması: Bir master + 2 veya 3 read-replica (slave) ile okuma yükü dağıtılır.
- Finansal İşlem Sistemi: Galera veya Group Replication ile yüksek tutarlılık sağlanır; latency optimizasyonu yapılır.
- Coğrafi Dağıtık Uygulama: Veri merkezleri arası asenkron replikasyon ile yerel okuma hızı artırılır; conflict yönetimi gerekir.
Corelux Hizmetleri ile Uygulama
Replikasyon ve HA altyapınızı kurarken Corelux'un sunduğu altyapı ve hizmetlerden faydalanabilirsiniz:
- Sunucu Seçimi: Yüksek IOPS ve düşük latency ihtiyacı için Kiralık Sunucu veya Türkiye VPS Sunucu seçenekleri değerlendirin.
- Bulut ve Ölçeklenebilirlik: Hızlı ölçek için Bulut Sunucu çözümlerini inceleyin.
- SSL ve Güvenlik: Replikasyon trafiğini şifrelemek için SSL Sertifikası hizmetimiz mevcuttur.
- Yedekleme Hizmetleri: Otomatik yedekleme ihtiyaçları için Yedekleme Hizmeti sayfamıza göz atın.
Sıkça Sorulan Sorular
Replikasyon yedekleme yerine geçer mi?
Hayır. Replikasyon verinin çoğaltılmasını sağlar fakat insan hatası veya uygulama hatası ile veriler tüm replikalara hızlıca yayılabilir. Bu nedenle düzenli yedekleme (snapshot veya logical dump) gereklidir.
Master arızalandığında veri kaybı yaşanır mı?
Asenkron replikasyonda son yazma işlemleri replikalara ulaşmamış olabilir; bu nedenle binary log ve PITR stratejileriyle veri kaybı minimize edilebilir. Senkron çözümler (Galera) bu riski azaltır.
Read replica'ları nasıl yönlendiririm?
Uygulama katmanında bağlantı havuzu veya ProxySQL, HAProxy gibi bir proxy ile okuma/yazma ayrımı yapabilirsiniz. ORM (Object-Relational Mapping) seviyesinde de read-write ayrımı uygulanabilir.
Galera kullanırken hangi sınırlamalara dikkat etmeliyim?
Galera senkron replikasyon kullandığı için gecikme ve yazma gecikmesi artabilir; ayrıca non-transactional engine (ör. MyISAM) kullanımı önerilmez. Uygulama tasarımında retry ve timeout stratejileri gereklidir.
Replikasyon trafiğini nasıl güvenli hale getiririm?
Replikasyon için TLS/SSL kullanın, özel (private) ağlar tercih edin ve replikasyon kullanıcılarına sadece gerekli izinleri verin (örn. REPLICATION SLAVE ile sınırlandırma).
Replica lag (gecikme) nasıl ölçülür ve alarm kurulur?
SHOW SLAVE STATUS ve monitoring araçları (Prometheus + exporter) ile Seconds_Behind_Master metriği izlenir. Eşik (threshold) aşıldığında otomatik uyarı (alert) tetiklenmelidir.
Sonuç
Doğru replikasyon stratejisi, uygulamanızın gereksinimlerine bağlıdır. Okuma ağırlıklı sistemlerde asenkron master-slave; tutarlılığın kritik olduğu sistemlerde Galera veya group replication tercih edilebilir. Her durumda izleme, otomatik failover ve düzenli yedekleme stratejileri bir arada planlanmalıdır. Corelux altyapı ve yönetilen hizmetleri ile replikasyon, HA ve yedekleme ihtiyaçlarınızı karşılayabilir; teklif almak veya detaylı mimari danışmanlık için Corelux hizmetlerini inceleyin:
- Kiralık Sunucu: https://www.corelux.com.tr/kiralik-sunucu
- Türkiye VPS: https://www.corelux.com.tr/sanal-sunucu/turkiye-vps
- SSL Sertifikası: https://www.corelux.com.tr/hizmetler/ssl-sertifikasi
- Yedekleme Hizmeti: https://www.corelux.com.tr/hizmetler/yedekleme
Eğer isterseniz, sunucu mimarinize göre örnek bir replikasyon topolojisi tasarlayıp adım adım kurulum dokümanı hazırlayabilirim.
Yazar
Boran BAR