Postgresql pg_dump ile Backup İşlemleri
Postgresql Backup-Restore İşlemleri
Veri tabanı sistemlerinin en temel özelliklerinden bir tanesi hata durumlarında sizi koruyacak bir yedekleme politikasına sahip olmasıdır. Veri tabanı kaybedildiğinde veya veri tabanı geçmiş bir andaki haline döndürülmek istendiğinde veri tabanı yedek ve yedekten dönme denilen backup/restore işlemleri kullanılılır. Postgresql veri tabanında üç tip backup/restore operasyonu bulunur.
- SQL Dump
- File System level Backup (Cold Backup)
- Continuous Archiving
SQL DUMP
Bu yedek yönteminde veri tabanı objelerinin SQL scriptleri yedeklenerek veri tabanının yeniden yaratılması sql cümleleri üzerinden yapılır. Pg_dump komut satırı aracı ile SQL dump backup ve restore işlemleri yapılır. Kullanım şekli aşağıdaki gibidir.
pg_dump dbname > dumpfile
Bu komut çıktı olarak bir text dosyası üretir. Herhangi bir uzak sunucudan pg_dump komutu ile veri tabanına bağlanılıp backup/restore işlemleri gerçekleştirilebilir. Veri tabanına bağlanacak kullanıcınının yedeklerin alınacak objeler üzerinde okuma hakkı olmalıdır. Veri tabanı backup’I pg_dump ile alınacak ise superuser yetkisine sahip bir kullanıcı ile çalıştırılması gerekir.
Uzak bir sunucuya bağlanmak için kulanılması gereken komut aşağıdaki gibidir.
pg_dump -h host -p port dbname > dumpfile
Restore işlemi için kullanılması gereken komut;
psql dbname < dumpfile
Bu komut çalıştırılırken dbname ismi ile verilen veri tabanı yaratılmış olmalıdır. Dumpfile çıktısı text formatında değil ise restore işlemi pg_restore tool’u ile yapılır.
Hata alındığında restore işlemini durdurmak için kullanılması gereken komut aşağıdaki gibidir;
psql –set ON_ERROR_STOP=on dbname < dumpfile
Bir veri tabanından başka bir veri tabanına direkt olarak restore işlemi yapmak için aşağıdaki komut kullanılır.
pg_dump -h host1 dbname | psql -h host2 dbname
pg_dump tool’u ile tek seferde bir veri tabanı üzerinde işlem yapılabilir. Postgresql sunucusunda bulunan bütün veri tabanlarının sql dump’ını almak için pg_dumpall komutu kullanılır. Aynı zamanda pg_dumpall ile alınan yedekler cluster seviyesinde bulunan role/tablespace tanımlamaları gibi objelerin de yedeklerinin alınmasını sağlar.
Pg_dumpall ile yedek almak için kullanılması gereken komut aşağıdaki gibidir;
pg_dumpall > dumpfile
pg_dumpall ile alınan yedeklerden restore işlemi yapabilmek için aşağıdaki komut kullanılır. -f opsiyonu restore işleminin hangi veri tabanından başlayacağını gösterir.
psql -f dumpfile postgres
pg_dump ile yedek alınırken çıktının sıkıştırılmış formatta alınması için aşağıdaki komut kullanılır.
pg_dump dbname | gzip > filename.gz
Sıkıştırılmış dosyadan restore işlemi yapmak için kullanılması gereken komut ise aşağıdaki gibidir.
gunzip -c filename.gz | psql dbname
Dump çıktısı belli boyutlarda birden cok dosyaya bölünmek istenir ise komut aşağıdaki gibidir.
pg_dump dbname | split -b 1m – filename
Bu durumda restore komutu şu şekilde kullanılır.
cat filename* | psql dbname
Pg_dump’ın kendi formatında daha düşük boyutta bir çıktı dosyası üretmek için kullanılacak komut şu şekildedir.Bu durumda Restore işlemi pg_restore ile yapılır.
pg_dump -Fc dbname > filename
pg_restore -d dbname filename
Paralel process kullanarak pg_dump ile yedek almak için kullanılması gereken komut aşağıdaki gibidir.
pg_dump -j num -F d -f out.dir dbname
Pg_dump ile tablo yedeğini almak için -t opsiyonu ile kullanılması gereken komut
Pg_dump -t tablename -d dbname > filename
Pg_dump ile kullanılabilecek diğer opsiyonlar şekildeki gibidir.


- AWS nedir? – Cloud 101 - Mayıs 16, 2024
- Vector Databases - Mayıs 15, 2024
- Data Dünyası Nereye Gidiyor? - Mayıs 8, 2024