PostgreSQL/MySQL Veritabanı Yedeklemesi Bulut Depolama Alanına
Giriş
Veritabanı yedekleme, web sitelerinin ve uygulamaların güvenliğini ve güvenilirliğini sağlamak için en önemli işlemlerden biridir. Veri kaybı birçok nedenden dolayı meydana gelebilir: sunucu arızası, yönetici hatası, güncelleme sorunları, kötü amaçlı yazılım veya basitçe insan hatası. Düzenli yedeklemeler, veri kaybı yaşamadan projenizi hızlı bir şekilde geri yüklemenizi sağlar.
Bu kılavuzda, PostgreSQL ve MySQL veritabanlarının nasıl yedekleneceği, rsync veya scp kullanılarak uzak bir Linux sunucusunda yedeklerin nasıl depolanacağı ve rclone kullanılarak bulut depolama alanına nasıl yükleneceği açıklanmaktadır.
PostgreSQL Yedekleme
PostgreSQL, veritabanının tam bir kopyasını SQL dosyası olarak oluşturmanıza olanak tanıyan standart pg_dump yardımcı programını sunar.
Yedek 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 geçerli tarihi ekler
Yer kazanmak 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 yardımcı programını kullanın.
Tek bir veritabanının yedeklenmesi örneği:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Bu komutu çalıştırdığınızda, sistem kullanıcı şifresini soracaktır.
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'in CloudBox'ı, birden fazla bağlantı protokolünü (rsync, scp, SSH üzerinden rsync, WebDAV dahil) destekleyen bir bulut depolama çözümüdür. CloudBox'ın kullanım kolaylığı, veri yükleme, yönetme ve geri alma işlemlerini önemli ölçüde basitleştirir.
Bunu, veritabanı yedeklerinizi depolamak için uzak bir konum olarak kullanabilirsiniz. Aşağıda kurulum ayrıntıları ve komut dosyası örnekleri yer almaktadır.
Adım 1. CloudBox'a Erişim Sağlama
Web sitemizden ( introserv.com) mevcut CloudBox planlarından birini sipariş edin.
Ödeme yapıldıktan sonra hizmet birkaç dakika içinde kullanıma hazır hale gelir. Hizmet etkinleştirildikten sonra bağlantı bilgilerinizi 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 (önerilir):
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Burada:
user— CloudBox kullanıcı adıcloudbox-server— bağlantı adresi/cloudbackups_yolu/— CloudBox üzerindeki yol
Otomatik işlem için SSH anahtarlarını kurmanız tavsiye edilir:
- Bir açık anahtar oluşturun:
ssh-keygen -t rsa - Oluşturulan açık anahtar dosyasının içeriğini (örneğin,
/root/.ssh/id_rsa.pub) panoya kopyalayın. - "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 sorulmadan çalışacaktır; bu, cron işleri için kullanışlıdır.
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'u kullanmak istiyorsanız, aşağıdaki şekilde yapılandırın:
- rclone'u yükleyin:
sudo apt install rclone - Yapılandırmaya başlayın:
rclone config
Kurulum sırasında şunu seçin:
n— yeni bir uzak- adını oluşturmak için, örneğin
cloudbox - depolama türü —
sftpveyassh'yiseçin - sunucu adresini
box#####.introserv.cloudbiçiminde, kullanıcı adınıbox#####biçiminde, bağlantı noktasını (bu durumda SSH bağlantı noktası — varsayılan 22) ve dizin yolunu - yetkilendirme işlemini gerçekleştirin (gerekirse)
Bağlantıyı test edin:
rclone ls cloudbox:/path_to_cloudbackups/
Yedekleme verilerini kopyalayın:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Yerel olarak bulunmayan dosyaların silinmesiyle senkronize edin:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Gerekirse — aktarımdan önce dosyaları şifreleyin:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Adım 4. CloudBox ile Otomasyon Komut Dosyası Örneği
Örneğin, /usr/local/bin/db_backup_cloudbox.sh komut dosyasını 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 # Upload to CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Upload to CloudBox (rclone option, uncomment if used) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Remove backups older than 7 days find /backup/ -type f -mtime +7 -delete
Ardından bir cron işi ekleyin (örnekte, komut dosyası her gün saat 02:00'da çalışır):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Önemli hususlar:
- CloudBox bağlantısının istikrarlı olduğundan ve bant genişliğinin yeterli olduğundan emin olun.
- İzlemeyi ayarlayın: dosyaların gerçekten kopyalandığını doğrulayın.
- CloudBox yedeklemelerinden geri yüklemeyi düzenli olarak test edin.
- Gizli veriler kullanıyorsanız, yedekleri şifrelemeyi düşünün.
SSH aracılığıyla Uzak bir Linux Sunucusuna Kopyalama
Yedeklemeleri yalnızca yerel olarak değil, başka bir sunucuda da depolamak istiyorsanız, rsync veya scp kullanın.
rsync kullanımı (yalnızca değişiklikleri kopyaladığı için önerilir):
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 etki alanı adı/remote_backups/— yedeklemelerin depolanacağı yol
Şifre girmeden çalışmak için SSH anahtarlarını yapılandırın:
# Generate SSH keys: ssh-keygen -t rsa # Copy key to remote server: ssh-copy-id [email protected]
Bundan sonra, rsync şifre sorulmadan çalışacaktır; bu, cron işleri için kullanışlıdır.
rsync'e alternatif — scp kullanımı:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
rclone aracılığıyla Bulut Depolama Alanına Kopyalama
Yedeklemeleri bulutta (Google Drive, Dropbox, Amazon S3 vb.) depolamanız gerekiyorsa, çeşitli bulut hizmetleriyle verileri senkronize etmek 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'yiseçin - Bir ad 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
Yedeklemeleri buluta yükleme örneği:
rclone copy /backup/ remote:db-backups/ --progress
Senkronizasyon komutu (yerel olarak bulunmayan dosyaları siler):
rclone sync /backup/ remote:db-backups/ --progress
Yüklemeden önce dosyaları şifreleyebilirsiniz:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Güvenlik ve Kontrol
- Yedeklemeleri en az iki yerde saklayın — yerel ve uzaktan.
- Yedeklemelerin başarıyla oluşturulduğunu ve yüklendiğini düzenli olarak kontrol edin.
- Ayda en az bir kez test geri yüklemesi yapın.
- Genel bulut hizmetleri kullanıyorsanız, hassas veriler içeren dosyaları şifreleyin:
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.
Yedeklemeden 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 ancak son derece önemli bir işlemdir. En güvenilir altyapı bile sizi insan hatasından veya teknik arızalardan koruyamaz. En iyi strateji, en az bir harici sunucuda ve bulutta depolanan düzenli otomatik yedeklemeler ve periyodik kurtarma testleridir.
pg_dump, mysqldump, rsync, rclone ve cron araçlarını bir arada kullanarak, ücretli üçüncü taraf yazılımlar olmadan güvenilir ve tamamen otomatik bir yedekleme sistemi kurabilirsiniz. Bu yaklaşım, uygulaması kolaydır ve tüm Linux sistemleri için uygundur.