Python ile Veritabanı Yedeklemesi Nedir?
Python, sistem otomasyonuna olan yatkınlığı ve güçlü kütüphaneleriyle, bu süreci oldukça kolaylaştırabilir. Veritabanı yedeklemesi, manuel olarak yapılabileceği gibi, Python ile otomatikleştirilebilir ve belirli zaman aralıklarında çalışacak şekilde programlanabilir.
Otomatik Yedekleme İşleminin Önemi
Bu sayede, bir veri kaybı yaşadığınızda, sadece birkaç tıklama ile verilerinizi geri alabilirsiniz.
Python Kütüphaneleri ile Veritabanı Yedeklemesi Yapmak
import os
import time
# Yedekleme işlemini yapmak istediğiniz veritabanının adı
database_name = "ornek_veritabani"
backup_folder = "/path/to/backup/folder"
# Zaman damgası ekleyerek yedekleme dosyasının adını oluşturuyoruz
timestamp = time.strftime("%Y%m%d-%H%M%S")
backup_file = f"{backup_folder}/{database_name}_backup_{timestamp}.sql"
# Veritabanı yedekleme komutunu çalıştırıyoruz
os.system(f"mysqldump -u root -p {database_name} > {backup_file}")
print(f"Yedekleme başarılı! Yedek dosyası: {backup_file}")
Bu kod, MySQL veritabanını yedeklemek için kullanılabilir. Yedekleme dosyasına, tarih ve saat bilgisi ekleyerek, her seferinde yeni bir dosya oluşmasını sağlıyoruz. Bu sayede eski yedekler silinmeden, her yedeklemenin kaydını tutabilirsiniz.
Gerçek Dünya Senaryoları ve Kod Örnekleri
Python'da, `cron` veya `Task Scheduler` gibi zamanlayıcılar kullanarak, yazdığınız yedekleme betiğini belirli zamanlarda otomatik olarak çalıştırabilirsiniz. Bu, zaman kazanmanıza ve sürecin güvenilirliğini artırmanıza yardımcı olur.
# Cron tablosu üzerinde çalışacak yedekleme komutları ekleyebiliriz:
# Bu komut, her gün gece 12'de yedekleme işlemini çalıştıracak
0 0 * * * /usr/bin/python3 /path/to/backup_script.py
Yedekleme İşlemi Sırasında Dikkat Edilmesi Gerekenler
Python ile yedekleme dosyalarınızı şifrelemek için `cryptography` gibi kütüphaneler kullanılabilir. İşte bir örnek:
from cryptography.fernet import Fernet
# Anahtar üretme
key = Fernet.generate_key()
cipher = Fernet(key)
# Yedek dosyasını şifreleme
with open("backup.sql", "rb") as f:
file_data = f.read()
encrypted_data = cipher.encrypt(file_data)
# Şifreli dosyayı kaydetme
with open("backup_encrypted.sql", "wb") as f:
f.write(encrypted_data)
Bu şekilde yedeklerinizin sadece sizin erişebileceğiniz şekilde saklanmasını sağlayabilirsiniz.
Yedekleme İşlemlerinin Raporlanması ve Zamanlanması
import smtplib
from email.mime.text import MIMEText
# E-posta içeriği
msg = MIMEText("Yedekleme işlemi başarıyla tamamlandı!")
msg["Subject"] = "Veritabanı Yedeklemesi Başarılı"
msg["From"] = "admin@example.com"
msg["To"] = "developer@example.com"
# E-posta gönderme
with smtplib.SMTP("smtp.example.com") as server:
server.login("admin@example.com", "password")
server.sendmail("admin@example.com", "developer@example.com", msg.as_string())
Bu yöntemle, her yedekleme tamamlandığında geliştiricilere bir bildirim gönderilebilir.