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.

  1. SQL Dump
  2. File System level Backup (Cold Backup)
  3. 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.

Veysel YUKSEL
Latest posts by Veysel YUKSEL (see all)

Veysel YUKSEL

RDBMS ve NoSQL veri tabanı yönetimi ve Big Data teknolojileri.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir