Veritabanı Yedekleme: PostgreSQL, MySQL, rsync, rclone, CloudBox
Veritabanı yedekleme, web siteleri ve uygulamaların güvenliğini ve güvenilirliğini sağlamak için en önemli prosedürlerden biridir. Veri kaybı birçok nedenden dolayı meydana gelebilir: sunucu arızası, yönetici hatası, güncelleme sorunları, kötü amaçlı yazılımlar veya basitçe insan hatası. Düzenli yedeklemeler, projenizi veri kaybı olmadan hızlı bir şekilde geri yüklemenizi sağlar.
Bu kılavuz, PostgreSQL ve MySQL veritabanlarını nasıl yedekleyeceğinizi, yedekleri rsync veya scp kullanarak uzak bir Linux sunucusunda nasıl depolayacağınızı ve rclone kullanarak bulut depolamaya nasıl yükleyeceğinizi açıklar.
PostgreSQL Yedekleme
PostgreSQL, bir SQL dosyası olarak tam bir veritabanı kopyası oluşturmanıza olanak tanıyan standart pg_dump aracını sağlar.
Yedekleme oluşturma örneği:
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Parametrelerin açıklaması:
- -U myuser — veritabanı kullanıcı adı;
- -h localhost — sunucu adresi (yerel ise atlanabilir);
- mydatabase — veritabanı adı;
- /backup/... — hedef yol;
- $(date +%F) — dosya adına mevcut tarihi ekler.
Alan tasarrufu sağlamak için yedeği hemen sıkıştırın:
pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz
Sunucudaki tüm veritabanlarını yedeklemek için:
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
MySQL Yedekleme
MySQL ve MariaDB için mysqldump aracını kullanın.
Tek bir veritabanı yedekleme örneği:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Bu komutu çalıştırdığınızda, sistem kullanıcı şifresini isteyecektir.
Tüm veritabanlarını yedeklemek için:
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Saklı yordamlar ve tetikleyicileri dahil etmek için --routines --triggers seçeneklerini ekleyin.
CloudBox'a Yedekleme
INTROSERV'den CloudBox, birden fazla bağlantı protokolünü destekleyen (rsync, scp, SSH üzerinden rsync, WebDAV dahil) bir bulut depolama çözümüdür. CloudBox'un kullanım kolaylığı, veri yükleme, yönetme ve geri alma görevlerini önemli ölçüde basitleştirir.
Veritabanı yedeklerinizi depolamak için uzak bir konum olarak kullanabilirsiniz. Aşağıda kurulum detayları ve script örnekleri bulunmaktadır.
Adım 1. CloudBox'a Erişim Alma
Web sitemizden mevcut CloudBox planlarından birini sipariş edin — https://introserv.com/solutions/cloudbox/
Ödeme sonrası, hizmet birkaç dakika içinde kullanılabilir hale gelir. Hizmet aktivasyonundan sonra bağlantı detaylarını alacaksınız:
- sunucu adresi (box$$$$$.introserv.cloud)
- kullanıcı adı (box$$$$$) ve şifre
Adım 2. rsync veya scp Kullanarak Bağlantı ve Senkronizasyon
rsync kullanarak (önerilen):
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Burada:
- user — CloudBox kullanıcı adı;
- cloudbox-server — bağlantı adresi;
- /path_to_cloudbackups/ — CloudBox üzerindeki yol.
Otomatik çalışma için SSH anahtarlarını ayarlamak önerilir.
1) Bir genel anahtar oluşturun:
ssh-keygen -t rsa
2) Oluşturulan genel anahtar dosyasının içeriğini, örneğin /root/.ssh/id_rsa.pub panoya kopyalayın.
3) "Profil" bölümüne gidin (sağ üstteki kullanıcı simgesinin üzerine gelin), anahtar içeriğini "Genel anahtarlar" alanına ekleyin ve ayarları kaydedin.


Bundan sonra, rsync şifre istemleri olmadan çalışacaktır, bu da cron işleri için uygundur.
Alternatif — scp:
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Adım 3. rclone Kullanarak Bağlantı ve Senkronizasyon
CloudBox ile etkileşim için rclone kullanmak istiyorsanız, aşağıdaki gibi yapılandırın.
1) rclone'u yükleyin:
sudo apt install rclone
2) Yapılandırmayı başlatın:
rclone config
Kurulum sırasında şunları seçin:
- n — yeni bir uzak oluşturmak için;
- isim, örneğin
cloudbox; - depolama türü —
sftpveyasshseçin; - sunucu adresini
box$$$$$.introserv.cloudformatında, kullanıcı adınıbox$$$$$formatında, portu (SSH — varsayılan 22), dizin yolunu girin; - yetkilendirme yapın (gerekirse).
Bağlantıyı test edin:
rclone ls cloudbox:/path_to_cloudbackups/
Yedek veri kopyalayın:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Yerel olarak eksik dosyaların silinmesiyle senkronize edin:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Gerekirse — transfer öncesi dosyaları şifreleyin:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Adım 4. CloudBox ile Otomasyon Script Örneği
/usr/local/bin/db_backup_cloudbox.sh scriptini oluşturun:
#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # CloudBox'a Yükleme rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # CloudBox'a Yükleme (rclone seçeneği, kullanılıyorsa yorumdan çıkarın) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # 7 günden eski yedekleri kaldır find /backup/ -type f -mtime +7 -delete
Daha sonra bir cron işi ekleyin (script her gün saat 2:00'de çalışır):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Önemli hususlar:
- CloudBox'a bağlantının kararlı olduğundan ve bant genişliğinin yeterli olduğundan emin olun.
- İzleme ayarlayın: dosyaların gerçekten kopyalandığını doğrulayın.
- CloudBox yedeklerinden periyodik olarak geri yükleme testi yapın.
- Gizli veriler kullanıyorsanız — yedekleri şifrelemeyi düşünün.
SSH Üzerinden Uzak Linux Sunucusuna Kopyalama
Yedekleri sadece yerel olarak değil, başka bir sunucuda da depolamak istiyorsanız, rsync veya scp kullanın.
rsync kullanarak (önerilen, çünkü sadece değişiklikleri kopyalar):
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Parametre açıklaması:
- user — uzak sunucudaki kullanıcı adı;
- remote.server — uzak sunucunun IP adresi veya alan adı;
- /remote_backups/ — yedeklerin depolanacağı yol.
Şifre girmeden çalışmak için SSH anahtarlarını yapılandırın.
SSH anahtarları oluşturun:
ssh-keygen -t rsa
Anahtarı uzak sunucuya kopyalayın:
ssh-copy-id [email protected]
Bundan sonra, rsync şifre istemleri olmadan çalışacaktır, bu da cron işleri için uygundur.
Alternatif — scp kullanarak:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
rclone ile Bulut Depolamaya Kopyalama
Yedekleri bulutta (Google Drive, Dropbox, Amazon S3, vb.) depolamanız gerekiyorsa, çeşitli bulut hizmetleriyle veri senkronizasyonu için evrensel bir araç olan rclone'u kullanın.
Kurulum:
sudo apt install rclone
Yapılandırma:
rclone config
Etkileşimli kurulum adımlarını izleyin:
- Yeni bir bağlantı oluşturmak için n seçin;
- Bir isim girin, örneğin
remote; - Depolama türünü seçin (örneğin
s3,drive,dropbox); - Erişim anahtarlarını girin veya tarayıcı üzerinden yetkilendirin.
Bağlantıyı kontrol edin:
rclone ls remote:path
Yedekleri buluta yükleme örneği:
rclone copy /backup/ remote:db-backups/ --progress
Senkronizasyon komutu (yerel olarak eksik dosyaları kaldırır):
rclone sync /backup/ remote:db-backups/ --progress
Ayrıca yüklemeden önce dosyaları şifreleyebilirsiniz:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Güvenlik ve Kontrol
- Yedekleri en az iki konumda saklayın — yerel ve uzak.
- Yedeklerin başarıyla oluşturulduğunu ve yüklendiğini düzenli olarak kontrol edin.
- En az ayda bir kez test geri yüklemeleri yapın.
- Hassas veriler içeren dosyaları şifreleyin, eğer kamuya açık bulutlar kullanıyorsanız:
gpg -c /backup/mysql_mydatabase.sql.gz
/backupiçin uygun dosya izinlerini sağlayın ve veritabanı kimlik bilgilerinizi güvence altına alın.
Yedekten Geri Yükleme
PostgreSQL:
gunzip < backup.sql.gz | psql -U myuser -d mydatabase
MySQL:
gunzip < backup.sql.gz | mysql -u myuser -p mydatabase
Sonuç
PostgreSQL ve MySQL veritabanlarını yedeklemek basit ama kritik öneme sahip bir prosedürdür. En güvenilir altyapı bile sizi insan hatası veya teknik arızalardan koruyamaz. En iyi strateji, en az bir dış sunucuda ve bulutta saklanan düzenli otomatik yedeklemeler ve periyodik geri yükleme testleridir.
pg_dump, mysqldump, rsync, rclone ve cron kombinasyonunu kullanarak, herhangi bir ücretli üçüncü taraf yazılımı olmadan güvenilir, tamamen otomatik bir yedekleme sistemi oluşturabilirsiniz. Bu yaklaşım, tüm Linux sistemleri için kolayca uygulanabilir ve uygundur.