Kendi VPS Sunucumda MySQL Yedeklerini Nasıl Otomatikleştirdim?
Sürekli phpMyAdmin'e girip manuel veritabanı yedeği almaktan sıkıldığım için, VPS sunucumda SSH üzerinden çalışan basit bir otomatik yedekleme (cron) sistemi kurdum. İşte manuel çileyi bitiren o küçük script.
Kendi VPS sunucunuzu yönetmek, projelerinizi barındırmak harika bir özgürlük ama iş veritabanı güvenliğine gelince bazen o özgürlük küçük bir strese dönüşebiliyor. Uygulamalarımı (genelde Laravel ve MySQL kullanarak) canlıya aldıktan sonra arkada hep o meşhur geliştirici fısıltısını duyuyorum: "Ya veritabanına bir şey olursa?"
Önceleri haftada bir, aklıma geldikçe phpMyAdmin'e girip Dışa Aktar (Export) butonuna basarak manuel yedek alıyordum. Ama dürüst olalım, yoğun bir mesai veya yeni bir projenin karmaşası içindeyken insan bunu unutuyor. Ben de "madem sunucuya SSH ile erişebiliyorum ve terminalde kendimi rahat hissediyorum, neden bu ameleliği makineye devretmiyorum?" dedim.
Eğer siz de yedeklerinizi manuel almaktan yorulduysanız, kendi sunucumda MySQL yedeklerini otomatikleştirmek için kullandığım o basit ama hayat kurtaran yöntemi aşağıya bırakıyorum.
- Yedeklerin Duracağı Klasörü Oluşturmak Önce SSH ile sunucuma bağlanıp yedeklerin düzenli duracağı güvenli bir klasör oluşturuyorum:
mkdir -p /var/backups/mysql
- Yedekleme Scriptini Yazmak Her gün benim yerime phpMyAdmin'in yaptığı işi yapacak küçük bir bash dosyasına ihtiyacımız var. Terminalde nano /var/backups/mysql/yedekle.sh komutuyla bir dosya oluşturup içine şu satırları ekliyorum:
#!/bin/bash
TARIH=$(date +"%Y-%m-%d")
YEDEK_YOLU="/var/backups/mysql"
VERITABANI_ADI="veritabani_adiniz"
KULLANICI="mysql_kullanici_adiniz"
SIFRE="mysql_sifreniz"
mysqldump -u $KULLANICI -p$SIFRE $VERITABANI_ADI >$YEDEK_YOLU/$VERITABANI_ADI-$TARIH.sql
Bu kod parçası aslında çok basit bir şey yapıyor: Benim yerime mysqldump komutunu çalıştırarak veritabanını dışa aktarıyor ve dosya isminin sonuna o günün tarihini (örneğin: projem-2026-10-06.sql) ekliyor. Böylece yedekler birbirinin üzerine yazılmıyor.
- Dosyaya Çalışma İzni Vermek Linux'un bu dosyayı bir komut dosyası olarak görüp çalıştırabilmesi için izin vermemiz gerekiyor:
chmod +x /var/backups/mysql/yedekle.sh
- Cron Job (Zamanlanmış Görev) ile Otomasyon Geldik işin en keyifli kısmına. Bu scriptin her gece sabaha karşı saat 03:00'te kendi kendine çalışmasını istiyorum. Bunun için terminale crontab -e yazıyorum ve açılan dosyanın en altına şu satırı ekliyorum:
0 3 * * * /var/backups/mysql/yedekle.sh
İşte bu kadar! Artık ben uyurken sunucum her gece saat 3'te veritabanımın tam yedeğini alıp klasöre koyuyor. Bir geliştirici olarak omuzlarımdan kalkan o "yedek aldım mı?" yükünün tarifini anlatamam. Geriye sadece ara sıra klasöre girip her şeyin yolunda olup olmadığını kontrol etmek kalıyor.
Siz veritabanı yedeklerinizi nasıl yönetiyorsunuz? Hâlâ manuel export mu alıyorsunuz yoksa kendi otomasyonlarınızı kurdunuz mu?
mkdir -p /var/backups
chmod +x backup.sh