15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
01.11.2024

PostgreSQL Veritabanlarının Yedeklenmesi ve Kurtarılması: AlexHost Kullanıcıları için Kapsamlı Rehber

PostgreSQL Yedekleme Stratejisinin Düşündüğünüzden Daha Önemli Olmasının Nedenleri

Veri kaybı varsayımsal bir risk değildir — her veritabanı yöneticisinin bir noktada karşılaşacağı operasyonel bir kesinliktir. Donanım arızaları, yanlışlıkla silinen veriler, bozuk işlemler ve fidye yazılımı saldırıları, bir üretim ortamını saniyeler içinde çökertebilir. PostgreSQL kullanıcıları için, sağlam, test edilmiş ve otomatikleştirilmiş bir yedekleme stratejisine sahip olmak, küçük bir olay ile felaket niteliğinde bir iş başarısızlığı arasındaki farktır.

AlexHost Dedicated Servers, PostgreSQL veritabanlarını barındırmak ve korumak için ideal bir temel sağlar. İstisnai I/O verimlilik sunan kurumsal sınıf NVMe SSD depolama, tam konfigürasyon kontrolü için tam root erişimi ve yerleşik DDoS koruması ile AlexHost, ciddi veritabanı iş yükleri için gereken altyapı performansı ve güvenlik duruşunu sağlar.

Yüksek trafikli bir e-ticaret platformu, bir SaaS uygulaması, ilişkisel veritabanı tarafından desteklenen bir WordPress kurulumu veya özel bir kurumsal sistem çalıştırıyor olsanız da, bu kılavuz basit SQL dökümlerinden gelişmiş Point-in-Time Recovery (PITR) kadar her büyük PostgreSQL yedekleme ve kurtarma yönteminde size yol gösterir — tümü üretim ortamları için optimize edilmiştir.

İçindekiler

  1. PostgreSQL Yedekleme Seçeneklerini Anlama
  2. Ön Koşullar ve Ayrıcalık Gereksinimleri
  3. Yöntem 1 — SQL Dump ile pg_dump
  4. Yöntem 2 — Tüm Veritabanlarını pg_dumpall ile Yedekleme
  5. Yöntem 3 — Büyük Veritabanları için Özel Format Yedeklemeleri
  6. SQL Dökümlerinden Geri Yükleme
  7. Özel Format Dökümlerinden Geri Yükleme
  8. Yöntem 4 — Sürekli Arşivleme ve Point-in-Time Recovery (PITR)
  9. Yedeklemeleri Cron ile Otomatikleştirme
  10. Yedeklemeleri Güvenli Hale Getirme ve Uzaktan Depolama
  11. En İyi Uygulamalar Özeti

1. PostgreSQL Yedekleme Seçeneklerini Anlama

PostgreSQL, birkaç olgun, iyi belgelenmiş yedekleme mekanizması ile birlikte gelir. Doğru olanı seçmek, veritabanı boyutunuz, kurtarma süresi hedefleri (RTO), kurtarma noktası hedefleri (RPO) ve operasyonel karmaşıklık toleransınıza bağlıdır.

YöntemEn İyi KullanımAvantajlarDezavantajlar
SQL Dump (pg_dump)Küçük ve orta ölçekli veritabanlarıBasit, taşınabilir, insan tarafından okunabilirÇok büyük VT’ler için yavaş
Özel Format DumpOrta ve büyük ölçekli veritabanlarıSıkıştırılmış, paralel geri yüklemeİkili, pg_restore gerektirir
Dosya Sistemi Anlık GörüntüsüÇok büyük veritabanlarıHızlı, tutarlıUzmanlık gerektirir, VT sessiz veya anlık görüntü farkında olmalıdır
PITR (WAL Arşivleme)Görev açısından kritik üretim sistemleriAyrıntılı point-in-time kurtarmaKarmaşık kurulum ve bakım

Başlamadan önce bu dengeleri anlamak gereklidir. Çoğu üretim ortamı, örneğin, ayrıntılı kurtarma yeteneği için sürekli WAL arşivlemesi ile birlikte gece özel format dökümlerinden en az iki yaklaşımı birleştirmekten yararlanır.

2. Ön Koşullar ve Ayrıcalık Gereksinimleri

Herhangi bir yedekleme işlemini yürütmeden önce, aşağıdaki ön koşulların yerine getirildiğini doğrulayın:

Kullanıcı Ayrıcalıkları:

  • Tam bir yedekleme gerçekleştirmek için PostgreSQL superuser veya hedef veritabanının sahibi olmalısınız.
  • pg_dumpall için superuser ayrıcalıkları zorunludur.

PostgreSQL sürümünüzü doğrulayın:

psql --version

Yedeklemeden önce kullanılabilir disk alanını kontrol edin:

df -h /var/lib/postgresql/

Yedekleme hedefinin yeterli boş alana sahip olduğundan emin olun — geçici dosyalar ve sıkıştırma yükü için hesaba katmak üzere yedeklenen veritabanının boyutunun en az 1,5 katı.

SSH aracılığıyla sunucunuza bağlanın:

ssh root@your-server-ip

VPS Hosting planı kullanıyorsanız, tam SSH erişimine ve kısıtlama olmadan PostgreSQL’i kurma, yapılandırma ve yönetme yeteneğine sahip olacaksınız.

3. Yöntem 1 — pg_dump ile SQL Dump

pg_dump yardımcı programı, en yaygın olarak kullanılan PostgreSQL yedekleme aracıdır. Veritabanı etkin olarak kullanılıyor olsa bile, tek bir veritabanının tutarlı bir anlık görüntüsünü üretir. Çıktı, herhangi bir uyumlu PostgreSQL kurulumunda incelenebilen, düzenlenebilen ve yeniden oynatılabilen düz metin bir SQL komut dosyasıdır.

Adım 1: Terminal Açın ve Sunucunuza Erişin

ssh root@your-alexhost-server-ip

Adım 2: pg_dump Komutunu Çalıştırın

pg_dump -U username -W -F p database_name > /backups/backup_file.sql

Parametre dökümü:

ParametreAçıklama
-U usernameYedeklemeyi gerçekleştiren PostgreSQL kullanıcısı
-WParolayı etkileşimli olarak sor
-F pÇıktı formatı: p = düz SQL metni
database_nameYedeklenecek veritabanının adı
> /backups/backup_file.sqlÇıktıyı bir dosyaya yönlendir

Pratik örnek:

pg_dump -U postgres -W -F p my_production_db > /backups/my_production_db_$(date +%Y%m%d_%H%M%S).sql

> Pro İpucu: Yedekleme dosya adınıza $(date +%Y%m%d_%H%M%S) kullanarak bir zaman damgası eklemek, önceki bir yedeklemeyi yanlışlıkla üzerine yazmanızı asla sağlamaz ve doğal bir kronolojik arşiv oluşturur.

Adım 3: Yedekleme Dosyasını Doğrulayın

ls -lh /backups/
head -50 /backups/my_production_db_*.sql

Dosya, PostgreSQL başlık yorumları ve SET ifadeleri ile başlamalı, geçerli bir dökümün oluşturulduğunu doğrulayarak.

4. Yöntem 2 — Tüm Veritabanlarını pg_dumpall ile Yedekleme

Bir PostgreSQL örneğindeki her veritabanını — roller ve tablespace’ler gibi genel nesneleri de dahil — yedeklemeniz gerektiğinde, pg_dumpall doğru araçtır.

pg_dumpall -U postgres -W > /backups/all_databases_$(date +%Y%m%d).sql

Bu komut şunları dışa aktarır:

  • Tüm veritabanları
  • Tüm roller (kullanıcılar ve gruplar)
  • Tüm tablespace’ler
  • Tüm genel yapılandırma

Önemli: pg_dumpall çıktı dosyası meşgul sunucularda çok büyük olabilir. Yedekleme bölümünüzün yeterli alana sahip olduğundan emin olun ve çıktıyı hemen sıkıştırmayı düşünün:

pg_dumpall -U postgres | gzip > /backups/all_databases_$(date +%Y%m%d).sql.gz

5. Yöntem 3 — Büyük Veritabanları için Özel Format Yedeklemeleri

Birkaç gigabaytı aşan üretim veritabanları için, özel format (-F c) düz SQL dökümlerine göre kuvvetle tavsiye edilir. Özel format yedeklemeleri:

  • Varsayılan olarak sıkıştırılmıştır — depolama gereksinimlerini önemli ölçüde azaltır
  • Geri yükleme için daha hızlıdır-j bayrağı ile paralel geri yükleme işlemlerini destekler
  • Seçici olarak geri yüklenebilir — bireysel tabloları veya şemaları geri yüklemenize izin verir

Özel Format Yedeklemesi Oluşturma

pg_dump -U postgres -W -F c my_production_db > /backups/my_production_db_$(date +%Y%m%d).dump

Sıkıştırılmış Dizin Formatı Yedeklemesi Oluşturma (Paralelizmi Destekler)

pg_dump -U postgres -W -F d -j 4 -f /backups/my_production_db_dir my_production_db
ParametreAçıklama
-F dDizin formatı — tablo başına bir dosya
-j 44 paralel çalışan işlemi kullan
-f /path/to/dirÇıktı dizini (henüz mevcut olmamalıdır)

Bu yaklaşım, çok çekirdekli sunucularda yedekleme süresini önemli ölçüde azaltır ve AlexHost’ta bulunan yüksek performanslı dedicated server ortamları için idealdir.

6. SQL Dökümlerinden Geri Yükleme

Düz SQL Dökümünden Tek Bir Veritabanını Geri Yükleme

İlk olarak, hedef veritabanının mevcut olduğundan emin olun. Yoksa, oluşturun:

psql -U postgres -c "CREATE DATABASE my_restored_db;"

Ardından geri yükleyin:

psql -U postgres -d my_restored_db -f /backups/my_production_db_backup.sql

Parametre dökümü:

ParametreAçıklama
-U postgresPostgreSQL superuser
-d my_restored_dbGeri yükleme için hedef veritabanı
-f /path/to/file.sqlSQL döküm dosyasının yolu

Geri Yükleme İlerlemeşini İzleyin

Büyük SQL dosyaları için, pv kullanarak ilerlemeyi izleyebilirsiniz:

pv /backups/my_production_db_backup.sql | psql -U postgres -d my_restored_db

7. Özel Format Dökümlerinden Geri Yükleme

Özel format dökümler, pg_restore yerine psql yardımcı programını gerektirir.

Temel Geri Yükleme

pg_restore -U postgres -d my_restored_db /backups/my_production_db.dump

Geri Yükleme ve Veritabanını Otomatik Olarak Oluşturma

pg_restore öğesine veritabanını doldurmadan önce oluşturmasını söylemek için -C bayrağını kullanın:

pg_restore -U postgres -C -d postgres /backups/my_production_db.dump

Daha Hızlı Kurtarma için Paralel Geri Yükleme

pg_restore -U postgres -d my_restored_db -j 4 /backups/my_production_db_dir/

Dizin formatı yedeklemesi ile -j 4 kullanmak, dört çekirdekli bir sunucuda geri yükleme süresini %75’e kadar azaltabilir — felaket kurtarma sırasında kapalı kalma süresini en aza indirirken önemli bir avantaj.

Yalnızca Belirli Bir Tabloyu Geri Yükleme

pg_restore -U postgres -d my_restored_db -t orders /backups/my_production_db.dump

Bu ayrıntılı yetenek, özel formatın düz SQL dökümlerine göre temel avantajlarından biridir.

8. Yöntem 4 — Sürekli Arşivleme ve Point-in-Time Recovery (PITR)

PITR, görev açısından kritik PostgreSQL dağıtımları için altın standarttır. Bir temel yedeklemenin üzerine Write-Ahead Log (WAL) segmentlerini yeniden oynatarak, veritabanınızı herhangi bir belirli zaman noktasına geri yüklemenize izin verir — yalnızca son yedekleme değil. Bu, bilinen bir zaman damgasında meydana gelen mantıksal bir hata (örneğin, yanlışlıkla DROP TABLE) nedeniyle kurtarma yapmanız gereken senaryolar için gereklidir.

Adım 1: postgresql.conf içinde WAL Arşivlemesini Etkinleştirin

PostgreSQL yapılandırma dosyasını bulun ve düzenleyin:

nano /etc/postgresql/15/main/postgresql.conf

Aşağıdaki yönergeleri ekleyin veya değiştirin:

# Enable WAL archiving
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'

Parametre açıklaması:

ParametreDeğerAçıklama
wal_levelreplicaArşivleme için yeterli WAL ayrıntısını etkinleştirir
archive_modeonArşivleme işlemini etkinleştirir
archive_command'cp %p /path/%f'WAL dosyalarını arşive kopyalamak için shell komutu

Arşiv dizinini oluşturun ve doğru izinleri ayarlayın:

mkdir -p /var/lib/postgresql/wal_archive
chown postgres:postgres /var/lib/postgresql/wal_archive
chmod 700 /var/lib/postgresql/wal_archive

Değişiklikleri uygulamak için PostgreSQL’i yeniden başlatın:

systemctl restart postgresql

Adım 2: pg_basebackup ile Temel Yedekleme Alın

pg_basebackup -U postgres -D /backups/base_backup -Ft -z -P -Xs
ParametreAçıklama
-D /backups/base_backupTemel yedekleme için hedef dizin
-FtTar formatı çıktısı
-zGzip ile sıkıştır
-Pİlerlemeyi göster
-XsYedekleme sırasında WAL akışı

Adım 3: Belirli Bir Zaman Noktasına Geri Yükleme

Temel yedekleme ve WAL arşivlerinden

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın