Redis Verilerinizi Ubuntu 14.04 Üzerinde Yedekleme ve Geri Yükleme Rehberi
Redis, bellek içi veri yapısı deposu olarak, yüksek performanslı uygulamalar için vazgeçilmez bir araç haline gelmiştir. Önbellekleme, oturum yönetimi, mesaj kuyrukları ve gerçek zamanlı analiz gibi birçok alanda tercih edilen Redis, verileri RAM’de tutarak olağanüstü hızlar sunar. Ancak, RAM tabanlı bir sistem olmasının getirdiği potansiyel riskler de vardır: elektrik kesintisi, sistem çökmesi veya yazılım hatası gibi durumlarda veriler kalıcı olarak kaybolabilir. Bu nedenle, Redis verilerinin düzenli olarak yedeklenmesi ve gerektiğinde güvenli bir şekilde geri yüklenebilmesi, herhangi bir üretim ortamı için kritik bir öneme sahiptir.
Bu makalede, Ubuntu 14.04 gibi artık desteklenmeyen ancak hala bazı eski sistemlerde kullanılıyor olabilecek bir işletim sistemi üzerinde Redis verilerinizi nasıl yedekleyeceğinizi ve geri yükleyeceğinizi ayrıntılı olarak ele alacağız. Ubuntu 14.04’ün destek süresinin sona ermiş olması, güvenlik açıklarına karşı daha savunmasız olduğu anlamına gelir, bu nedenle bu tür sistemlerde veri güvenliği ve yedekleme stratejileri daha da hayati hale gelmektedir. Redis’in sunduğu yerleşik kalıcılık mekanizmalarını (RDB ve AOF) kullanarak, veri kaybını en aza indirecek etkili yedekleme stratejileri oluşturmayı ve bu yedekleri sorunsuz bir şekilde geri yüklemeyi öğreneceksiniz.
Redis Veri Kalıcılığı Mekanizmaları
Redis, verilerinizi kalıcı hale getirmek için iki temel mekanizma sunar: RDB (Redis Database Backup) ve AOF (Append Only File). Her iki mekanizmanın da kendine özgü avantajları ve dezavantajları vardır ve genellikle en güvenli yaklaşım, her ikisini birlikte kullanmaktır.
RDB (Redis Database Backup)
RDB, belirli aralıklarla veritabanının anlık görüntüsünü (snapshot) alan bir kalıcılık yöntemidir. Redis, bu anlık görüntüleri sıkıştırılmış ikili formatta bir .rdb dosyasına kaydeder. Bu dosyalar, Redis’in yeniden başlatılması durumunda verileri geri yüklemek için kullanılır.
RDB’nin Avantajları:
* Kompakt Dosyalar: RDB dosyaları oldukça sıkıştırılmıştır ve genellikle AOF dosyalarından daha küçüktür. Bu, yedekleme ve geri yükleme sürelerini kısaltır.
* Hızlı Geri Yükleme: Büyük veri kümeleri için bile, RDB dosyalarından geri yükleme genellikle AOF’tan daha hızlıdır, çünkü Redis’in sadece dosyayı yüklemesi yeterlidir.
* Felaket Kurtarma İçin İdeal: Bir felaket durumunda, en son RDB yedeğiyle hızlı bir şekilde sistemi ayağa kaldırmak mümkündür.
* Performans: RDB yedekleme işlemi, ana Redis sürecini engellemeden ayrı bir alt süreç (fork) tarafından gerçekleştirilir, bu da Redis’in performansını minimum düzeyde etkiler.
RDB’nin Dezavantajları:
* Veri Kaybı Riski: RDB, belirli aralıklarla anlık görüntüler aldığı için, son anlık görüntü ile bir sonraki anlık görüntü arasında meydana gelen değişiklikler, bir sistem çökmesi durumunda kaybolabilir. Bu, birkaç saniye veya dakika değerinde veri kaybı anlamına gelebilir.
* Daha Az Kontrol: Anlık görüntülerin ne zaman alınacağı, yapılandırma dosyasındaki save direktifleri ile belirlenir ve daha granüler bir kontrol sağlamaz.
AOF (Append Only File)
AOF, Redis’e gönderilen her yazma komutunu bir günlük dosyasına (log file) ekleyerek kalıcılık sağlar. Redis yeniden başlatıldığında, AOF dosyasındaki komutları baştan sona tekrar yürüterek veri kümesini yeniden oluşturur.
AOF’un Avantajları:
* Minimum Veri Kaybı: AOF, her yazma komutunu kaydettiği için, doğru appendfsync ayarlarıyla, çok az veri kaybı yaşanır (genellikle 1 saniye veya daha az).
* Daha İyi Veri Bütünlüğü: AOF dosyası, mantıksal bir komut dizisi olduğu için daha dayanıklıdır ve bozulma durumunda redis-check-aof aracıyla tamir edilebilir.
* İnsan Tarafından Okunabilir: AOF dosyası, Redis komutlarını içerdiği için insan tarafından okunabilir ve gerekirse manuel olarak incelenebilir veya düzenlenebilir (ancak bu tavsiye edilmez).
AOF’un Dezavantajları:
* Daha Büyük Dosya Boyutu: AOF dosyaları, RDB dosyalarına göre genellikle daha büyüktür, çünkü her komutu kaydederler. Bu, disk alanı tüketimini artırır.
* Daha Yavaş Geri Yükleme: Redis, AOF dosyasındaki tüm komutları yeniden yürütmek zorunda olduğu için, geri yükleme süresi RDB’ye göre daha uzun olabilir, özellikle büyük dosyalar için.
* Performans Etkisi: appendfsync ayarına bağlı olarak, AOF yazma işlemleri Redis’in performansını bir miktar etkileyebilir. everysec ayarı genellikle iyi bir denge sağlar.
RDB ve AOF Birlikte Kullanımı
Redis, her iki kalıcılık mekanizmasını da aynı anda kullanmanıza izin verir. Bu, genellikle en güvenli ve önerilen yaklaşımdır. Eğer hem RDB hem de AOF etkinse, Redis yeniden başlatıldığında AOF dosyasını kullanarak verileri geri yüklemeyi tercih eder, çünkü AOF genellikle daha güncel veriyi içerir. RDB ise daha çok felaket kurtarma senaryolarında, AOF dosyasının bozulması gibi durumlarda bir güvenlik ağı görevi görür.
Ortam Hazırlığı (Ubuntu 14.04)
Yedekleme ve geri yükleme işlemlerine başlamadan önce, Ubuntu 14.04 sunucunuzun uygun şekilde hazırlandığından emin olmalıyız.
Redis Kurulumu (Eğer Yoksa)
Eğer sunucunuzda Redis kurulu değilse, aşağıdaki adımlarla kurabilirsiniz. Ubuntu 14.04 için genellikle Redis’in daha eski bir sürümü (örneğin Redis 2.8) depolarda bulunur.
sudo apt-get update
sudo apt-get install redis-server
Kurulumdan sonra Redis servisi otomatik olarak başlayacaktır. Durumunu kontrol edebilirsiniz:
sudo service redis-server status
veya Redis CLI ile bağlantı kurarak:
redis-cli ping
Yanıt olarak PONG almalısınız.
Gerekli Araçlar
Yedekleme ve geri yükleme işlemleri için bazı temel Linux araçlarına ihtiyacımız olacak:
* rsync: Dosyaları yerel veya uzak sistemler arasında verimli bir şekilde senkronize etmek için kullanılır.
* tar: Dosya ve dizinleri arşivlemek ve sıkıştırmak için kullanılır.
* ssh ve scp: Uzak sunuculara güvenli bir şekilde bağlanmak ve dosya kopyalamak için kullanılır.
Bu araçlar genellikle Ubuntu’da varsayılan olarak bulunur, ancak eksikse kurabilirsiniz:
sudo apt-get install rsync tar openssh-client openssh-server
Dizin Yapısı ve İzinler
Redis, varsayılan olarak veri dosyalarını /var/lib/redis dizininde tutar. Yapılandırma dosyası ise /etc/redis/redis.conf konumundadır. Yedekleme dosyalarını saklamak için ayrı bir dizin oluşturmak iyi bir uygulamadır. Örneğin:
sudo mkdir -p /var/backups/redis
sudo chown redis:redis /var/backups/redis # Redis kullanıcısı için izinler
sudo chmod 750 /var/backups/redis
Bu dizini, Redis verilerinin kopyalarını ve arşivlerini saklamak için kullanacağız. İzinlerin doğru ayarlandığından emin olun, böylece Redis veya yedekleme betikleri bu dizine yazabilir.
Redis Yapılandırma Dosyası (/etc/redis/redis.conf)
Redis’in kalıcılık ayarları bu dosyada bulunur. Yedekleme stratejinizi belirlerken bu dosyadaki ayarları doğru şekilde yapılandırmak önemlidir.
* dir /var/lib/redis: Redis’in veri dosyalarını (RDB ve AOF) sakladığı dizin. Bu dizin genellikle Redis kullanıcısının yazma izinlerine sahip olduğu bir yer olmalıdır.
* save : RDB anlık görüntülerini otomatik olarak tetikleyen direktifler. Örneğin, save 900 1 (900 saniyede en az 1 değişiklik), save 300 10 (300 saniyede en az 10 değişiklik) ve save 60 10000 (60 saniyede en az 10000 değişiklik).
* appendonly yes/no: AOF kalıcılığını etkinleştirir veya devre dışı bırakır.
* appendfilename "appendonly.aof": AOF dosyasının adı.
* appendfsync always/everysec/no: AOF dosyasının diske ne sıklıkla senkronize edileceğini belirler. everysec (her saniye) genellikle iyi bir denge sunar.
Bu ayarları, yedekleme stratejinize ve veri kaybı toleransınıza göre düzenlemeniz gerekecektir.
Redis Verilerini Yedekleme
Redis verilerini yedeklemek için RDB ve AOF yöntemlerini ayrı ayrı veya birlikte kullanabiliriz. Her iki yöntemin de kendine özgü yedekleme adımları vardır.
RDB Yöntemi ile Yedekleme
RDB, Redis veritabanının anlık görüntüsünü alır. Bu anlık görüntü dosyası, yedekleme için kopyalanabilir.
Otomatik RDB Yapılandırması
Varsayılan olarak, Redis yapılandırma dosyasında ( /etc/redis/redis.conf ) aşağıdaki gibi save direktifleri bulunur:
save 900 1
save 300 10
save 60 10000
Bu direktifler, belirtilen süre ve değişiklik sayısı eşiklerine ulaşıldığında Redis’in otomatik olarak bir BGSAVE komutu çalıştırmasını sağlar. Bu, arka planda bir RDB dosyası oluşturulacağı anlamına gelir. Oluşturulan dosya genellikle dump.rdb adını taşır ve dir direktifinde belirtilen dizinde (varsayılan olarak /var/lib/redis) bulunur.
Manuel RDB Yedekleme (BGSAVE Komutu)
Otomatik yedeklemelerin yanı sıra, Redis CLI üzerinden manuel olarak da bir RDB anlık görüntüsü oluşturabilirsiniz. Bu, özellikle anında bir yedek almaya ihtiyaç duyduğunuzda veya bir yedekleme betiği içinde kullanışlıdır.
redis-cli BGSAVE
Bu komut, Redis’in arka planda bir anlık görüntü almasını tetikler. İşlem tamamlandığında, /var/lib/redis/dump.rdb dosyası güncellenmiş olacaktır.
Yedekleme Dosyasını Güvenli Bir Yere Kopyalama
dump.rdb dosyası oluşturulduktan sonra, onu güvenli bir yedekleme konumuna kopyalamak önemlidir. Aynı sunucuda farklı bir dizine veya uzak bir sunucuya kopyalayabilirsiniz.
Yerel Yedekleme:
sudo cp /var/lib/redis/dump.rdb /var/backups/redis/dump-$(date +%Y%m%d%H%M%S).rdb
Bu komut, dump.rdb dosyasını zaman damgasıyla birlikte /var/backups/redis dizinine kopyalar.
Uzak Yedekleme (SCP ile):
# İlk olarak manuel bir BGSAVE tetikleyin
redis-cli BGSAVE
Ardından dosyayı uzak sunucuya kopyalayın
sudo scp /var/lib/redis/dump.rdb user@remote_host:/path/to/remote/backups/redis/dump-$(date +%Y%m%d%H%M%S).rdb
Bu işlem için uzak sunucuda SSH erişiminizin olması ve kimlik doğrulamanın (parola veya SSH anahtarı) ayarlanmış olması gerekir.
Cron Job ile Otomatik RDB Yedekleme
Düzenli yedeklemeler için bir cron job oluşturmak en iyi yöntemdir. Aşağıdaki örnek, her gece yarısı bir RDB yedeği alıp sıkıştırır ve eski yedekleri temizler.
Öncelikle bir yedekleme betiği oluşturalım: /usr/local/bin/redis-rdb-backup.sh
#!/bin/bash
Yedekleme dizini
BACKUP_DIR="/var/backups/redis"
REDIS_DATA_DIR="/var/lib/redis"
RDB_FILE="dump.rdb"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/dump-${TIMESTAMP}.rdb.gz"
RETENTION_DAYS=7 # Kaç gün yedekleri saklayalım
Redis'ten BGSAVE komutunu tetikle
redis-cli BGSAVE
BGSAVE'in tamamlanmasını bekleyin (isteğe bağlı, ancak büyük veritabanları için önerilir)
Bu komut, son BGSAVE işleminin tamamlanıp tamamlanmadığını kontrol eder.
Eğer tamamlanmadıysa, "OK" döndürecektir. Tamamlanana kadar döngüde kalır.
while ! redis-cli INFO persistence | grep -q "rdb_bgsave_in_progress:0"; do
echo "RDB BGSAVE işlemi devam ediyor, bekliyor..."
sleep 5
done
RDB dosyasını sıkıştırarak yedekleme dizinine kopyala
sudo cp "${REDIS_DATA_DIR}/${RDB_FILE}" "${BACKUP_FILE%.gz}"
sudo gzip "${BACKUP_FILE%.gz}"
Eski yedekleri sil
find "${BACKUP_DIR}" -name "dump-*.rdb.gz" -mtime +"${RETENTION_DAYS}" -delete
echo "Redis RDB yedeği başarıyla alındı: ${BACKUP_FILE}"
Betiği çalıştırılabilir hale getirin:
sudo chmod +x /usr/local/bin/redis-rdb-backup.sh
Ardından, cron job’ı ayarlayın. sudo crontab -e komutunu kullanarak root kullanıcısının cron tablosunu düzenleyin ve aşağıdaki satırı ekleyin:
0 0 * /usr/local/bin/redis-rdb-backup.sh >> /var/log/redis_rdb_backup.log 2>&1
Bu cron job, her gece yarısı (00:00) betiği çalıştıracak ve çıktıyı /var/log/redis_rdb_backup.log dosyasına yönlendirecektir.
AOF Yöntemi ile Yedekleme
AOF, Redis’e gönderilen her yazma komutunu bir günlük dosyasına kaydeder.
AOF’u Etkinleştirme
AOF varsayılan olarak devre dışı olabilir. Etkinleştirmek için /etc/redis/redis.conf dosyasını düzenleyin:
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
Bu değişiklikleri yaptıktan sonra Redis’i yeniden başlatmanız gerekir:
sudo service redis-server restart
Redis yeniden başlatıldığında, /var/lib/redis/appendonly.aof adında bir dosya oluşturmaya başlayacaktır.
AOF Rewrite (BGREWRITEAOF)
AOF dosyası zamanla büyüyebilir ve gereksiz komutlar içerebilir. BGREWRITEAOF komutu, AOF dosyasını optimize ederek daha küçük ve daha verimli hale getirir. Bu işlem, Redis’in mevcut veri kümesini temsil eden minimum sayıda komutu içeren yeni bir AOF dosyası oluşturur.
redis-cli BGREWRITEAOF
Bu komutu düzenli olarak çalıştırmak, AOF dosyasının boyutunu yönetmenize yardımcı olur.
AOF Dosyasını Kopyalama
AOF dosyasını yedeklemek, RDB dosyasını yedeklemeye benzer. Önemli olan, kopyalama sırasında AOF dosyasının bütünlüğünü korumaktır. Redis’in appendfsync everysec modunda çalıştığını varsayarsak, dosya genellikle tutarlıdır.
Yerel Yedekleme:
sudo cp /var/lib/redis/appendonly.aof /var/backups/redis/appendonly-$(date +%Y%m%d%H%M%S).aof
Uzak Yedekleme (rsync ile):
rsync aracı, özellikle büyük dosyalar ve uzak yedeklemeler için daha verimli olabilir, çünkü sadece değişen kısımları kopyalar.
sudo rsync -az --progress /var/lib/redis/appendonly.aof user@remote_host:/path/to/remote/backups/redis/appendonly-$(date +%Y%m%d%H%M%S).aof
Cron Job ile Otomatik AOF Yedekleme
AOF yedeklemesi için de bir cron job oluşturabiliriz. Bu betik, AOF dosyasını kopyalayacak ve isteğe bağlı olarak BGREWRITEAOF komutunu tetikleyecektir.
/usr/local/bin/redis-aof-backup.sh
#!/bin/bash
Yedekleme dizini
BACKUP_DIR="/var/backups/redis"
REDIS_DATA_DIR="/var/lib/redis"
AOF_FILE="appendonly.aof"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/appendonly-${TIMESTAMP}.aof.gz"
RETENTION_DAYS=7 # Kaç gün yedekleri saklayalım
AOF rewrite işlemini tetikle (isteğe bağlı, ancak önerilir)
Bu, AOF dosyasının boyutunu optimize eder.
redis-cli BGREWRITEAOF
AOF rewrite işleminin tamamlanmasını bekleyin
while ! redis-cli INFO persistence | grep -q "aof_rewrite_in_progress:0"; do
echo "AOF rewrite işlemi devam ediyor, bekliyor..."
sleep 5
done
AOF dosyasını sıkıştırarak yedekleme dizinine kopyala
sudo cp "${REDIS_DATA_DIR}/${AOF_FILE}" "${BACKUP_FILE%.gz}"
sudo gzip "${BACKUP_FILE%.gz}"
Eski yedekleri sil
find "${BACKUP_DIR}" -name "appendonly-*.aof.gz" -mtime +"${RETENTION_DAYS}" -delete
echo "Redis AOF yedeği başarıyla alındı: ${BACKUP_FILE}"
Betiği çalıştırılabilir hale getirin:
sudo chmod +x /usr/local/bin/redis-aof-backup.sh
Cron job’ı ayarlayın: sudo crontab -e
30 1 * /usr/local/bin/redis-aof-backup.sh >> /var/log/redis_aof_backup.log 2>&1
Bu cron job, her gece 01:30’da çalışır.
Her İki Yöntemi Birlikte Kullanma
En güvenli yaklaşım, hem RDB hem de AOF kalıcılığını etkinleştirmek ve her ikisi için de yedekleme betikleri çalıştırmaktır. RDB, hızlı geri yüklemeler ve felaket kurtarma için iyi bir temel sağlarken, AOF en az veri kaybını garanti eder. Bu iki betiği farklı zamanlarda çalıştırmak, kaynak kullanımını optimize edebilir. Örneğin, RDB yedeğini gece yarısı, AOF yedeğini ise biraz daha sonra almak gibi.
Dış Ortama Yedekleme
Yerel yedekler önemlidir, ancak sunucunun kendisi arızalanırsa veya bir felaket yaşanırsa, yerel yedekler de kaybolabilir. Bu nedenle, yedeklerinizi uzak bir konuma (başka bir sunucu, bulut depolama gibi) kopyalamak kritik öneme sahiptir.
* SSH/SCP: En basit ve güvenli yöntemlerden biridir. Yukarıdaki örneklerde gösterildiği gibi, scp komutunu kullanarak yedekleme dosyalarını uzak bir sunucuya kopyalayabilirsiniz. SSH anahtarları kullanarak parola gerektirmeyen erişim kurmak, otomatik yedeklemeler için idealdir.
* rsync over SSH: Büyük dosyaların veya dizinlerin uzak bir konuma kopyalanması için rsync çok verimlidir. Sadece değişen blokları kopyalayarak bant genişliğinden tasarruf sağlar.
* Bulut Depolama Entegrasyonu: Amazon S3, Google Cloud Storage veya Azure Blob Storage gibi bulut depolama hizmetleri, yedekleriniz için güvenli, ölçeklenebilir ve uygun maliyetli bir çözüm sunar. Bu hizmetlerin CLI araçları veya S3 uyumlu araçlar (minio client gibi) ile yedeklerinizi doğrudan buluta yükleyebilirsiniz.
Bir uzak yedekleme betiği örneği:
/usr/local/bin/redis-remote-backup.sh
#!/bin/bash
LOCAL_BACKUP_DIR="/var/backups/redis"
REMOTE_USER="backupuser"
REMOTE_HOST="your_remote_backup_server.com"
REMOTE_PATH="/path/to/remote/redis_backups"
En son RDB ve AOF yedeklerini uzak sunucuya kopyala
rsync ile sadece değişen dosyaları veya yeni dosyaları kopyalayabilirsiniz
rsync -avz --remove-source-files "${LOCAL_BACKUP_DIR}/dump-*.rdb.gz" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/"
rsync -avz --remove-source-files "${LOCAL_BACKUP_DIR}/appendonly-*.aof.gz" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/"
--remove-source-files parametresi, başarılı kopyalamadan sonra yerel dosyaları siler.
Dikkatli kullanın! Yalnızca uzak yedekleme ana stratejinizse kullanın.
Genellikle yerel kopyaları bir süre tutmak daha güvenlidir.
Bu betiği de bir cron job ile düzenli olarak çalıştırabilirsiniz.
Redis Verilerini Geri Yükleme
Yedekleme kadar, geri yükleme işlemini de anlamak ve test etmek hayati öneme sahiptir. Bir felaket anında, yedeklerinizin gerçekten işe yaradığından emin olmanız gerekir.
RDB Yöntemi ile Geri Yükleme
RDB dosyası ile geri yükleme oldukça basittir. Redis, başlatıldığında veri dizinindeki dump.rdb dosyasını otomatik olarak yükler.
Adımlar:
1. Redis’i Durdurun: Geri yükleme yapmadan önce Redis sunucusunu durdurmanız gerekir, aksi takdirde Redis mevcut verilerini üzerine yazabilir veya çakışmalar yaşanabilir.
sudo service redis-server stop
2. Yedekleme Dosyasını Kopyalayın: Geri yüklemek istediğiniz RDB yedek dosyasını (örneğin, dump-20231027103000.rdb.gz) Redis’in veri dizinine (varsayılan olarak /var/lib/redis) kopyalayın ve adını dump.rdb olarak değiştirin. Eğer dosya sıkıştırılmışsa, önce açmanız gerekir.
# Sıkıştırılmışsa önce açın
sudo gunzip /var/backups/redis/dump-20231027103000.rdb.gz
# Kopyalayın ve yeniden adlandırın
sudo cp /var/backups/redis/dump-20231027103000.rdb /var/lib/redis/dump.rdb
# Doğru izinleri ayarlayın
sudo chown redis:redis /var/lib/redis/dump.rdb
sudo chmod 644 /var/lib/redis/dump.rdb
Eğer hedef sunucuda zaten bir dump.rdb dosyası varsa, üzerine yazılmadan önce onu yedeklemeniz veya silmeniz önerilir.
3. Redis’i Başlatın: Redis’i başlattığınızda, yeni dump.rdb dosyasını yükleyecek ve verileri geri yükleyecektir.
sudo service redis-server start
4. Verileri Doğrulayın: Redis CLI kullanarak bazı verilerinizi kontrol edin ve geri yüklemenin başarılı olduğunu doğrulayın.
redis-cli KEYS "*"
redis-cli GET mykey
AOF Yöntemi ile Geri Yükleme
AOF dosyası ile geri yükleme de benzerdir, ancak AOF’un etkin olduğundan emin olmanız gerekir.
Adımlar:
1. Redis’i Durdurun:
sudo service redis-server stop
2. Yedekleme Dosyasını Kopyalayın: Geri yüklemek istediğiniz AOF yedek dosyasını (örneğin, appendonly-20231027103000.aof.gz) Redis’in veri dizinine (varsayılan olarak /var/lib/redis) kopyalayın ve adını appendonly.aof olarak değiştirin. Eğer dosya sıkıştırılmışsa, önce açmanız gerekir.
# Sıkıştırılmışsa önce açın
sudo gunzip /var/backups/redis/appendonly-20231027103000.aof.gz
# Kopyalayın ve yeniden adlandırın
sudo cp /var/backups/redis/appendonly-20231027103000.aof /var/lib/redis/appendonly.aof
# Doğru izinleri ayarlayın
sudo chown redis:redis /var/lib/redis/appendonly.aof
sudo chmod 644 /var/lib/redis/appendonly.aof
Hedef sunucuda zaten bir appendonly.aof dosyası varsa, üzerine yazılmadan önce onu yedeklemeniz veya silmeniz önerilir.
3. AOF’un Etkin Olduğundan Emin Olun: /etc/redis/redis.conf dosyasında appendonly yes satırının etkin olduğundan emin olun.
4. AOF Dosyasının Bütünlüğünü Kontrol Edin (Önemli): AOF dosyası bozulmuş olabilir. Redis’i başlatmadan önce bütünlüğünü kontrol etmek iyi bir uygulamadır.
redis-check-aof --fix /var/lib/redis/appendonly.aof
Bu komut, AOF dosyasını kontrol eder ve gerekirse bozuk girişleri düzeltmeye çalışır.
5. Redis’i Başlatın: Redis’i başlattığınızda, AOF dosyasındaki komutları yürüterek verileri geri yükleyecektir.
sudo service redis-server start
6. Verileri Doğrulayın: Redis CLI kullanarak bazı verilerinizi kontrol edin ve geri yüklemenin başarılı olduğunu doğrulayın.
Olası Sorunlar ve Çözümleri
* İzin Sorunları: Yedekleme dosyalarını kopyaladıktan sonra redis:redis kullanıcısına ve grubuna doğru okuma/yazma izinlerini (chown, chmod) vermediyseniz, Redis dosyaları yükleyemeyebilir.
* Dosya Bozulması: Yedekleme dosyası bozuk olabilir. Bu nedenle birden fazla yedek kopyası tutmak ve yedekleri düzenli olarak test etmek önemlidir. AOF için redis-check-aof --fix kullanın. RDB dosyaları için maalesef benzer bir onarım aracı yoktur, bu yüzden sağlam RDB yedekleri almak kritik.
* Redis Başlamıyor: Redis, başlangıçta bir hata günlüğü (/var/log/redis/redis-server.log veya syslog) oluşturur. Bu günlüğü kontrol ederek hatanın nedenini anlayabilirsiniz. Genellikle izin sorunları veya bozuk veri dosyaları Redis’in başlamasını engeller.
* Disk Alanı Yetersizliği: Özellikle AOF dosyaları veya sıkıştırılmamış RDB dosyaları büyük olabilir. Yeterli disk alanına sahip olduğunuzdan emin olun.
En İyi Uygulamalar ve Ek İpuçları
Redis verilerinizin güvenliğini sağlamak için sadece yedekleme ve geri yükleme adımlarını bilmek yeterli değildir. Sürekli ve güvenilir bir strateji oluşturmak için bazı en iyi uygulamaları takip etmek önemlidir.
Yedekleri Düzenli Olarak Test Etme
En önemli ipuçlarından biri budur. Yedeklerinizin gerçekten işe yarayıp yaramadığını bilmenin tek yolu, onları düzenli olarak test etmektir. Yeni bir sunucuda veya mevcut bir sunucuda test ortamı oluşturarak yedekleme ve geri yükleme sürecini baştan sona uygulayın. Bu, hem prosedürün doğruluğunu teyit eder hem de olası sorunları felaket anından önce tespit etmenizi sağlar.
Yedekleme Sıklığı
Yedekleme sıklığı, veri kaybı toleransınıza bağlıdır.
* RDB: Günde bir kez veya birkaç kez RDB yedeği almak, çoğu uygulama için yeterli olabilir, ancak bu, son RDB yedeği ile çökme anı arasındaki tüm verilerin kaybolabileceği anlamına gelir.
* AOF: appendfsync everysec ile AOF kullanıyorsanız, neredeyse gerçek zamanlı kalıcılık elde edersiniz. AOF dosyasını düzenli olarak yedeklemek, geçmişe dönük kurtarma noktaları oluşturmanıza yardımcı olur.
* Kombinasyon: En iyi yaklaşım, her ikisini de kullanmaktır. RDB ile hızlı geri yüklemeler için sağlam temel yedekler alın ve AOF ile minimum veri kaybı sağlayın.
Yedekleme Dosyalarının Şifrelenmesi ve Sıkıştırılması
* Şifreleme: Özellikle hassas veriler içeriyorsa ve uzak bir konuma yedekliyorsanız, yedekleme dosyalarını şifrelemek önemlidir. gpg veya openssl gibi araçları kullanarak dosyaları şifreleyebilirsiniz.
* Sıkıştırma: Yedekleme dosyalarını sıkıştırmak (gzip, bzip2) hem disk alanından tasarruf sağlar hem de ağ üzerinden aktarım sürelerini kısaltır. Yukarıdaki örneklerde gzip kullanılmıştır.
Yedekleme Stratejileri (Tam, Artımlı)
Redis’in yerleşik kalıcılık mekanizmaları tam yedekleme sağlar (RDB bir anlık görüntüdür, AOF tüm komutları içerir). Artımlı yedekleme için Redis’in doğrudan bir desteği yoktur. Ancak, rsync gibi araçlar, uzak bir konuma kopyalama yaparken sadece değişen blokları aktararak artımlı yedekleme benzeri bir davranış sergileyebilir.
İzleme ve Uyarılar
Yedekleme betiklerinizin başarıyla çalışıp çalışmadığını düzenli olarak izleyin. Cron job’ların çıktısını log dosyalarına yönlendirin ve bu log dosyalarını hata veya uyarılar için kontrol edin. Başarısız yedeklemeler durumunda sizi bilgilendirecek uyarı sistemleri (e-posta, Slack, PagerDuty) kurmak, potansiyel veri kaybını önlemenin kritik bir parçasıdır.
Redis Sentinel/Cluster ile Yüksek Erişilebilirlik ve Yedekleme İlişkisi
Redis Sentinel veya Redis Cluster, yüksek erişilebilirlik (HA) ve ölçeklenebilirlik sağlamak için kullanılır. Bu çözümler, birincil Redis sunucusu arızalandığında otomatik olarak ikincil bir sunucuyu devreye sokarak hizmet kesintisini en aza indirir. Ancak, yüksek erişilebilirlik, yedeklemenin yerini tutmaz. HA çözümleri, veri kaybı riskini azaltır ancak tamamen ortadan kaldırmaz. Örneğin, yanlış bir yazma işlemi veya bir veritabanı bozulması, tüm replikalara yayılabilir. Bu nedenle, Redis Sentinel veya Cluster kullanıyor olsanız bile, düzenli yedekleme stratejileri uygulamaya devam etmelisiniz.
Ubuntu 14.04’ün Son Desteğinin Sona Ermesi
Makalenin başında da belirtildiği gibi, Ubuntu 14.04’ün resmi desteği sona ermiştir. Bu, güvenlik güncellemeleri ve hata düzeltmeleri almadığı anlamına gelir. Bu tür eski bir işletim sistemi üzerinde kritik verileri barındırmak, ciddi güvenlik riskleri taşır. Mümkün olan en kısa sürede daha güncel ve desteklenen bir işletim sistemi sürümüne (örneğin Ubuntu 22.04 LTS) geçiş yapmanız şiddetle tavsiye edilir. Bu, sadece Redis verilerinizin değil, tüm sisteminizin güvenliğini ve kararlılığını artıracaktır. Geçiş sırasında da Redis yedekleme ve geri yükleme bilgileri hayati olacaktır.
Sonuç
Redis verilerinizin güvenliğini sağlamak, her uygulama için vazgeçilmez bir adımdır. Ubuntu 14.04 gibi eski bir platformda çalışıyor olsanız bile, RDB ve AOF gibi Redis’in yerleşik kalıcılık mekanizmalarını kullanarak etkili yedekleme stratejileri oluşturmak mümkündür. Bu makalede, bu mekanizmaların nasıl çalıştığını, nasıl yapılandırılacağını, manuel ve otomatik yedekleme yöntemlerini ve yedekleri uzak konumlara nasıl kopyalayacağınızı detaylı bir şekilde inceledik.
Ayrıca, bir felaket durumunda verilerinizi sorunsuz bir şekilde geri yüklemek için adım adım talimatlar sunduk ve bu süreçte karşılaşabileceğiniz yaygın sorunlara çözümler getirdik. En iyi uygulamalar bölümünde ise, yedekleri düzenli olarak test etmenin, yedekleme sıklığını doğru ayarlamanın, dosyaları şifrelemenin ve sıkıştırmanın, izleme ve uyarı sistemleri kurmanın ve yüksek erişilebilirlik çözümleriyle yedeklemenin ilişkisini anlamanın önemini vurguladık.
Unutmayın, yedekleme stratejinizin gücü, yedeklerinizin güncelliği ve geri yüklenebilirliği ile ölçülür. Bu nedenle, sadece yedek almakla kalmayın, aynı zamanda düzenli olarak geri yükleme süreçlerinizi test edin. Son olarak, güvenlik ve performans açısından, Ubuntu 14.04 gibi desteklenmeyen sistemlerden daha güncel ve desteklenen bir işletim sistemine geçiş yapmayı ciddi şekilde değerlendirmeniz, uzun vadeli veri güvenliğiniz için en kritik adımdır.