Buyukweb
Veritabanı Replikasyonu: MySQL Master-Slave Kurulumu

Veritabanı Replikasyonu: MySQL Master-Slave Kurulumu

MySQL/MariaDB master-slave replikasyon kurulumu. Binary log yapılandırması, slave ayarları, replikasyon izleme ve yaygın sorunların çözümü.

Büyükweb Teknik Ekibi22 Ekim 20257 dakika okuma

Veritabanı Replikasyonu: MySQL Master-Slave Kurulumu

MySQL replikasyonu, verinin otomatik olarak bir sunucudan (master) diğerlerine (slave) kopyalanmasını sağlar. Yüksek erişilebilirlik, yedekleme ve okuma yükü dağıtımı için kullanılır.

Replikasyonun Faydaları

  • Okuma ölçekleme: SELECT sorguları slave'lere dağıtılır
  • Yüksek erişilebilirlik: Master çökerse slave devreye girer
  • Canlı yedekleme: Slave'den yedek almak master'ı etkilemez
  • Coğrafi dağıtım: Farklı lokasyonlarda veri kopyası

Master Sunucu Yapılandırması

# /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
server-id = 1                # Benzersiz sunucu ID
log_bin = /var/log/mysql/mysql-bin.log
binlog_expire_logs_seconds = 604800  # 7 gün
max_binlog_size = 100M
binlog_do_db = sitem_db      # Sadece bu DB'yi replicate et
# binlog_ignore_db = test   # Bu DB'yi yok say
systemctl restart mysql

Replikasyon Kullanıcısı Oluştur:

-- Master'da
CREATE USER 'replicator'@'SLAVE_IP' IDENTIFIED BY 'replikasyon_sifresi';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'SLAVE_IP';
FLUSH PRIVILEGES;

-- Master durumunu not al
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
-- Not edin: File ve Position değerlerini!
-- Örnek: mysql-bin.000003, 154

-- Master'da dump al
mysqldump -u root -p --all-databases --master-data > master_dump.sql

-- Kilidi kaldır
UNLOCK TABLES;

Slave Sunucu Yapılandırması

# /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
server-id = 2               # Master'dan farklı benzersiz ID
relay-log = /var/log/mysql/relay-bin
read_only = 1               # Slave'e yazma izni verme
log_slave_updates = 1       # Cascade replikasyon için
systemctl restart mysql

# Master dump'ını yükle
mysql -u root -p < master_dump.sql

Slave'i Master'a Bağla:

-- Slave'de
CHANGE MASTER TO
    MASTER_HOST = 'MASTER_IP',
    MASTER_USER = 'replicator',
    MASTER_PASSWORD = 'replikasyon_sifresi',
    MASTER_LOG_FILE = 'mysql-bin.000003',
    MASTER_LOG_POS = 154;

-- Replikasyonu başlat
START SLAVE;

-- Durumu kontrol et
SHOW SLAVE STATUSG

Önemli kontrol noktaları:

Slave_IO_Running: Yes      ← Olmalı
Slave_SQL_Running: Yes     ← Olmalı
Seconds_Behind_Master: 0   ← Az olmalı

GTID Tabanlı Replikasyon (MySQL 5.6+)

GTID (Global Transaction ID) daha güvenilir replikasyon sağlar:

# Her iki sunucuda
[mysqld]
gtid_mode = ON
enforce_gtid_consistency = ON
log_slave_updates = ON
-- Slave'de GTID ile bağlan
CHANGE MASTER TO
    MASTER_HOST = 'MASTER_IP',
    MASTER_USER = 'replicator',
    MASTER_PASSWORD = 'sifre',
    MASTER_AUTO_POSITION = 1;

START SLAVE;

Replikasyon İzleme

-- Slave durumu
SHOW SLAVE STATUSG

-- Gecikme izle
SELECT VARIABLE_VALUE AS seconds_behind
FROM performance_schema.global_status
WHERE VARIABLE_NAME = 'Seconds_Behind_Source';

-- Binary log boyutu
SHOW BINARY LOGS;
SHOW MASTER STATUS;
# Bash ile izleme scripti
while true; do
    mysql -u root -p"sifre" -e "SHOW SLAVE STATUSG" 2>/dev/null |         grep -E "Running|Behind|Error"
    sleep 10
done

Replikasyon Sorunları ve Çözümleri

Replikasyon Durdu (Hata):

-- Hatayı göster
SHOW SLAVE STATUSG
-- Last_Error: ...

-- Tek hatayı atla
STOP SLAVE;
SET GLOBAL sql_slave_skip_counter = 1;
START SLAVE;

-- Veya GTID ile
SET GTID_NEXT = 'MASTER_UUID:hatali_gtid';
BEGIN; COMMIT;
SET GTID_NEXT = 'AUTOMATIC';

Slave Geride Kaldı:

-- Seconds_Behind_Master büyükse:
STOP SLAVE SQL_THREAD;
-- Slave sunucusunun I/O ve CPU kapasitesini artırın
-- Paralel replikasyon etkinleştirin:
-- slave_parallel_workers = 4
START SLAVE SQL_THREAD;

Master-Master Replikasyon

# Her iki sunucuda
[mysqld]
server-id = 1 (veya 2)
log-bin = mysql-bin
auto_increment_increment = 2
auto_increment_offset = 1 (veya 2)  # Çakışmayı önler

Failover (Geçiş)

Master çöktüğünde slave'i promote etme:

-- Slave'de
STOP SLAVE;
RESET SLAVE ALL;
SET GLOBAL read_only = 0;

-- Uygulama bağlantılarını slave'e yönlendirin
-- (DNS güncelleme veya load balancer)

Büyükweb VDS sunucularında MySQL replikasyon kurulumu yaparak yüksek erişilebilirlik ve okuma performansı elde edebilirsiniz.


Veritabani Performans Optimizasyonu

Veritabani web uygulamalarinin kalbidir.

MySQL/MariaDB Tuning

innodb_buffer_pool_size'i RAM'in %60-70'ine ayarlayin. slow_query_log ile yavas sorgulari tespit edin. max_connections optimize edin.

Indeksleme

WHERE, JOIN, ORDER BY sutunlarina indeks ekleyin. EXPLAIN ile sorgu planlari analiz edin. Composite index kullanin.

Baglanti Havuzu

ProxySQL ile gelismis baglanti yonetimi. Connection pooling ile maliyet azaltma. Persistent connections kullanin.

Replikasyon

Master-Slave ile okuma yukunu dagitin. Galera Cluster ile multi-master yuksek erisilebilirlik. Semi-senkron replikasyon degerlendirin.

Yedekleme

mysqldump mantiksal, xtrabackup fiziksel yedek. Binary log ile point-in-time recovery. Incremental yedekleme ile tasarruf.

Sik Sorulan Sorular

MySQL mi PostgreSQL mi?

MySQL cogu web uygulamasi ile uyumlu. PostgreSQL gelismis veri tipleri ve JSON icin ideal. CMS'ler genelde MySQL kullanir.

Veritabanim buyudu ne yapmaliyim?

Gereksiz verileri temizleyin, tablo optimize edin, arsivleme yapin, partitioning kullanin.

Ne siklikla yedek almaliyim?

Kritik veritabanlari saatlik, standart siteler gunluk. Buyuk degisikliklerden once manuel yedek.

Sonuc

Veritabani optimizasyonu uygulama performansini dogrudan etkiler. Indeksleme, tuning ve yedekleme ile veri katmaninizi guclendirin.

Veritabani Boyut Yonetimi

Buyuk Tablolar icin Stratejiler

  • Partitioning: Tarihe gore tablolari bolumlendirin. Sorgu performansi artar.
  • Arsivleme: Eski verileri arsiv tablolarina tasiyin.
  • Sikistirma: InnoDB sikistirmasi ile disk kullanimini %50-75 azaltin.

WordPress Veritabani Optimizasyonu

  • wp_options autoload: Gereksiz autoload kayitlari temizleyin.
  • Post revisions: wp-config.php'de WP_POST_REVISIONS sinirlayin.
  • Transient veriler: Suresi dolmus verileri duzenli temizleyin.
  • Spam yorumlar: Toplu silin.

Veritabani Guvenlik

  • Varsayilan portu degistirin
  • Uygulama bazli kullanici olusturun
  • Minimum gerekli yetki verin
  • SSL ile baglanti sifreleyin
  • Duzenli guvenlik taramasi yapin

Hosting ve Sunucu Terimleri Sozlugu

Terim Aciklama
VDS Virtual Dedicated Server - Sanal ozel sunucu
NVMe SSD Non-Volatile Memory Express - En hizli disk teknolojisi
LiteSpeed Yuksek performansli web sunucu yazilimi
CloudLinux Paylasimli hosting icin kaynak izolasyon isletim sistemi
cPanel Populer web hosting kontrol paneli
Plesk Web hosting ve sunucu yonetim paneli
KVM Kernel-based Virtual Machine - Tam sanallastirma teknolojisi
DDoS Distributed Denial of Service - Dagitik hizmet engelleme saldirisi
SSL/TLS Veri iletisimini sifreleyen guvenlik protokolu
TTFB Time to First Byte - Sunucu yanit suresi
CDN Content Delivery Network - Icerik dagitim agi
WAF Web Application Firewall - Web uygulama guvenligi duvari
IOPS Input/Output Operations Per Second - Disk performans olcusu
Uptime Sunucunun kesintisiz calisma suresi yuzdesi
Bandwidth Veri transfer kapasitesi

Bu terimleri anlamak, hosting ve sunucu hizmetlerini daha bilinçli secmenize yardimci olur. Detayli bilgi icin Buyukweb blog yazilarini takip edin veya teknik destek ekibimize danisIn.

Teknik Destek ve Yardim Kanallari

Buyukweb olarak musterilerimize birden fazla destek kanali sunuyoruz:

Canli Destek (Tawk.to)

Web sitemiz uzerinden 7/24 canli destek ile aninda yardim alin. Teknik sorulariniz, fatura islemleriniz ve genel bilgi talepleriniz icin canli destek ekibimiz hizmetinizdedir.

Telefon Destegi

0850 302 60 70 numarasindan hafta ici ve hafta sonu teknik destek alabilirsiniz. Acil durumlar ve karmasik sorunlar icin telefon destegi en hizli cozum yoludur.

E-posta Destegi

destek@buyukweb.com adresine detayli sorun tanimlamanizi gonderin. Ekran goruntuleri ve hata mesajlari ile birlikte gonderdiginiz talepler daha hizli cozumlenir.

Musteri Paneli

my.buyukweb.com uzerinden destek talepleri olusturun, faturalarinizi yonetin ve hizmetlerinizi kontrol edin. Ticket sistemi ile tum iletisiminiz kayit altindadir.

Bilgi Bankasi

Blog yazilarimiz ve rehberlerimiz ile sik karsilasilan sorunlarin cozumlerini kendiniz bulabilirsiniz. WordPress kurulumu, DNS ayarlari, e-posta yapilandirmasi gibi konularda adim adim rehberler mevcuttur.

Buyukweb teknik ekibi, hosting alaninda 17 yillik tecrubesi ile her turlu sorununuza profesyonel cozum sunar.

Ek Kaynaklar ve Referanslar

Konuyu daha derinlemesine ogrenimek icin asagidaki kaynaklari incelemenizi oneririz:

Buyukweb Blog

Hosting rehberleri, teknik yazilar ve sektorel analizler icin Buyukweb blogunu duzenli takip edin. Her hafta yeni icerikler yayinliyoruz.

Resmi Dokumanlar

  • cPanel Documentation: cPanel kontrol paneli kullanim kilavuzu
  • Plesk Documentation: Plesk panel yonetim rehberi
  • WordPress Codex: WordPress gelistirici dokumantasyonu
  • DigitalOcean Community: Sunucu yonetimi rehberleri
  • Linux man pages: Linux komut referansi

Topluluk Forumlar

StackOverflow, ServerFault ve Reddit r/webhosting gibi topluluklarda deneyimli kullanicilardan yardim alabilirsiniz.

Video Kaynaklar

YouTube uzerinde Turkce hosting ve sunucu yonetimi egitim videolari mevcut. Gorsel ogrenme tercih ediyorsaniz bu kaynaklari degerlendirin.

Daha fazla bilgi ve profesyonel destek icin Buyukweb teknik ekibine ulasin:

  • Telefon: 0850 302 60 70
  • E-posta: destek@buyukweb.com
  • Canli Destek: buyukweb.com
  • Panel: my.buyukweb.com

Etiketler:

#mysql#kurulum rehberi#veritabanı replikasyonu#veritabanı#database#veri yönetimi

Bu yazıyı paylaş