7/24 Türkçe destek:[email protected]Sistem durumuDestek talebi

Cron ile Otomatik Veritabanı Yedeği (mysqldump)

Okuma süresi: 2 dk

Kısa yanıt: Ana dizininizde şifreyi içeren ve yalnızca sizin okuyabildiğiniz bir .my.cnf dosyası oluşturun, ardından cPanel › Cron İşleri’ne her gece çalışacak mysqldump --single-transaction veritabani | gzip > ~/db-yedek/veritabani-$(date +\%F).sql.gz komutunu ekleyin (cron satırında % işareti \% olarak yazılır). Aynı cron’a 14 günden eski dosyaları silen bir find komutu ekleyerek disk dolmasını önleyin.

Bu rehber kimin için: Kendi yedeğini otomatikleştirmek isteyenler · Gereken süre: 20 dakika · Seviye: Orta

Sık güncellenen bir e-ticaret sitesi veya üye sitesi için veritabanı, sitenin en değerli kısmıdır. Otomatik sunucu yedeklerine ek olarak kendi kontrolünüzdeki gece yedekleri; istediğiniz sıklıkta, istediğiniz kadar geçmişe dönük kopya tutmanızı sağlar. Şifreyi komut satırına yazmak yerine .my.cnf dosyasında tutmak, şifrenin işlem listelerinde görünmesini engeller.

Kurulum adımları

  1. Klasör oluşturun: Ana dizinde public_html dışında db-yedek adlı bir klasör açın; web’den erişilememelidir.
  2. Şifre dosyası: Ana dizinde .my.cnf dosyası oluşturun; [client] satırının altına user=veritabani_kullanici ve password="sifre" yazın.
  3. İzin verin: Dosyanın iznini 600 yapın (dosya izinleri).
  4. Komutu test edin: Cron işini ilk olarak birkaç dakika sonrasına denk gelecek bir zamanla ekleyin; çalıştıktan sonra Dosya Yöneticisi’nde ~/db-yedek klasöründe dosyanın oluştuğunu görün ve zamanı kalıcı ayara çevirin.
  5. Cron ekleyin: cPanel › Cron İşleri ekranında her gün 03:00 için komutu ekleyin; cron satırında her % işaretinin önüne ters eğik çizgi koyun (\%), aksi hâlde cron komutu o noktada keser.
  6. Eskileri silin: İkinci bir satırla find ~/db-yedek -name "*.sql.gz" -mtime +14 -delete komutunu planlayın.
  7. Bildirim: Cron e-posta adresini ayarlayın; hata olursa bildirim alırsınız.
  8. Geri yükleme testi: Ayda bir yedeği test veritabanına aktararak dosyanın sağlam olduğunu doğrulayın.

Zamanlamayı hesaplama

Cron ifadesi 0 3 * * * her gün saat 03:00’te çalışır. Farklı sıklıklar için cron ifadesi oluşturucu aracımızı kullanabilirsiniz. Veritabanı büyükse yedeği trafiğin en düşük olduğu saate planlayın.

Hâlâ çözülmediyse

Yedekleri aynı sunucuda tutmak, sunucu kaynaklı sorunlara karşı koruma sağlamaz; dosyaları düzenli olarak harici bir konuma kopyalayın (uzak FTP/SCP). Geri yükleme adımları için veritabanını belirli bir tarihe geri yükleme rehberine bakın. Cron İşleri tüm web hosting paketlerimizde cPanel’den kullanılabilir; SSH erişimi ise yalnızca VPS ve VDS sunucularda vardır.

Sık sorulan sorular

--single-transaction ne işe yarar?

InnoDB tablolarında siteyi kilitlemeden tutarlı bir anlık görüntü alır.

Yedek dosyaları kotamdan düşer mi?

Evet; bu yüzden eski yedekleri otomatik silin.

“Access denied; you need (at least one of) the PROCESS privilege(s)” hatası alıyorum.

MySQL 8.0.21 ve sonrasında mysqldump, tablespace bilgisini dökmek için PROCESS yetkisi ister; paylaşımlı hostingte veritabanı kullanıcılarının bu yetkisi genellikle yoktur. Komuta --no-tablespaces seçeneğini ekleyin: mysqldump --single-transaction --no-tablespaces veritabani. Bu seçenek yalnız tablespace tanımlarını dökümden çıkarır, tablolarınızı ve verinizi etkilemez.

İlgili rehberler