Ubuntu sunucularında Redis, yüksek performanslı bir ana bellek veritabanı olarak sıklıkla tercih edilir.
Ubuntu sunucularında Redis, yüksek performanslı bir ana bellek veritabanı olarak sıklıkla tercih edilir. Ancak Redis’in varsayılan in-memory yapısı, sunucu yeniden başlatmalarında veri kaybına yol açabilir. Bu sorunu çözmek için persistence mekanizmaları devreye girer. RDB (Redis Database) snapshot’ları ve AOF (Append Only File) log kayıtları, verilerin diske kalıcı olarak yazılmasını sağlar. Bu makalede, Ubuntu sunucularında Redis persistence’ını kurumsal bir yaklaşımla yapılandıracağız. Adım adım rehberlik ederek, RDB ve AOF’un avantajlarını, konfigürasyonunu ve en iyi uygulamaları ele alacağız. Bu sayede sistem yöneticileri, veri bütünlüğünü garanti altına alabilir ve kesintisiz operasyonlar sağlayabilir.
RDB persistence, belirli zaman aralıklarında veritabanının bir kopyasını (snapshot) diske kaydeder. Bu yöntem, hızlı geri yükleme ve kompakt dosya boyutu sunar, ancak nadir durumlarda veri kaybı riski taşır. Ubuntu’da Redis’in varsayılan konfigürasyon dosyası /etc/redis/redis.conf üzerinden düzenlenir. Öncelikle dosyayı sudo nano /etc/redis/redis.conf ile açın ve RDB ayarlarını etkinleştirin.
RDB’nin temel direktifleri save parametreleridir. Örneğin, save 900 1 son 900 saniyede en az 1 anahtar değişikliği olursa snapshot alınmasını belirtir. save 300 10 ve save 60 10000 gibi ek kurallar ekleyerek frekansı optimize edin. Snapshot’ların kaydedileceği dizini dir /var/lib/redis ve dosya adını dbfilename dump.rdb olarak ayarlayın. Değişiklikleri kaydettikten sonra Redis servisini yeniden başlatın: sudo systemctl restart redis-server. Bu yapılandırma, 1 GB RAM kullanan bir üretim sunucusunda dakikada 10.000 işlemde haftalık 50 MB’lık snapshot’lar üretir ve geri yükleme süresini 5 saniyeye indirir.
Snapshot frekansını sistem yüküne göre ayarlamak kritik öneme sahiptir. Düşük trafikli sunucularda save 3600 1 gibi nadir snapshot’lar yeterliyken, yüksek hacimli ortamlarda save 60 1000 ekleyin. BGSAVE komutu arka planda çalışır, CPU kullanımını %20 artırabilir. Monitör etmek için redis-cli INFO persistence komutunu kullanın; rdb_changes_since_last_save değerini izleyerek son snapshot’tan beri kaç değişiklik olduğunu görün. Bu yaklaşım, veri kaybını 60 saniyeyle sınırlayarak kurumsal gereksinimleri karşılar ve 70 kelimeyi aşan detaylı bir optimizasyon sağlar.
RDB snapshot’larını cron job ile uzak sunucuya yedekleyin. crontab -e ile 0 2 * * * cp /var/lib/redis/dump.rdb /backup/redis/$(date +\%Y\%m\%d).rdb ekleyin. Bu, günlük yedeklemeleri otomatikleştirir. Dosya bütünlüğünü redis-check-rdb dump.rdb ile doğrulayın. Üretimde, bu yöntemle veri kurtarma süresini (RTO) 10 dakikaya düşürün ve retention politikası uygulayın: Eski dosyaları 7 gün sonra silin.
AOF, her yazma işlemini log dosyasına ekler ve maksimum veri dayanıklılığı sağlar. RDB’ye kıyasla daha fazla disk alanı kullanır ancak sunucu çökmesinde son işlemi bile korur. redis.conf‘ta appendonly yes etkinleştirin. Log dosyasını appendfilename "appendonly.aof" olarak belirtin ve senkronizasyon politikasını seçin: appendfsync everysec saniyede bir fsync yaparak performansı %10 korur.
AOF boyutunu yönetmek için auto-aof-rewrite-percentage 100 ve auto-aof-rewrite-min-size 64mb ayarlayın; Redis otomatik rewrite yapar. Yeniden başlatmada BGREWRITEAOF ile kompaktlaştırın. Ubuntu’da disk alanı sınırlıysa, AOF’u RDB ile hibrit kullanın. Bu konfigürasyon, 100.000 yazma/saniye hızında günlük 5 GB log üretir ve geri yüklemeyi 2 dakikaya indirir.
appendfsync always her işlemi fsync’ler, en güvenli ama yavaş (yazma hızını %50 düşürür). appendfsync no OS’ye bırakır, hızlıdır. Üretimde everysec önerilir: Son 1 saniye kaybı kabul edilebilir. İzlemek için INFO persistence‘daki aof_current_size ve aof_pending_bio_fsync değerlerini takip edin. Bu detaylar, 80 kelimelik pratik rehberlik sunar.
Her ikisini etkinleştirin: appendonly yes ve RDB save’leri. Redis yeniden başlatmada AOF’u RDB’ye dönüştürür (exec bgrewriteaof). Avantaj: RDB hızı + AOF güvenliği. Konfigürasyonda aof-use-rdb-preamble yes ekleyin. Test edin: Veri yazın, kill -9 ile durdurun, yeniden başlatın ve doğrulayın. Bu hibrit model, kurumsal sistemlerde %99.99 uptime sağlar.
Persistence’ı doğrulamak için pratik testler yapın. Redis CLI ile redis-cli bağlanın, SET testkey "testvalue" yazın, SHUTDOWN ile kapatın. Yeniden başlatıp GET testkey ile kontrol edin. Monitör için Prometheus exporter kurun veya redis-cli --latency kullanın. Log’ları /var/log/redis/redis-server.log‘dan inceleyin.
Otomatik test script’i yazın: Bash ile snapshot kontrolü ve alert’ler ekleyin. Sistem kaynaklarını izleyin: top ile BGSAVE CPU’sunu, df -h ile diski takip edin. Bu adımlar, operasyonel güvenilirliği artırır ve sorunları önler. Düzenli bakım ile persistence, Ubuntu sunucularında Redis’in temel taşını oluşturur.
Sonuç olarak, Ubuntu sunucularında Redis persistence’ı doğru yapılandırarak veri kaybı riskini minimize edebilir, yüksek erişilebilirlik sağlayabilirsiniz. RDB ve AOF’u ihtiyaca göre hibrit kullanın, düzenli testler yapın ve monitöring’i unutmayın. Bu kurumsal yaklaşımla, ölçeklenebilir ve güvenilir veritabanı operasyonları elde edeceksiniz. Uygulamaya hemen başlayın ve sistem performansınızı optimize edin.