pg_dump Postgresql veritabanını yedeklemek için kullanılan programdır.
- pg_dump tarafından alınan dump dosyaları tamamen tutarlıdır, çünkü dump, veritabanınızın ve pg_dump’ın çalışmaya başladığı andaki verilerinin anlık görüntüsüdür(snapshot).
- pg_dump diğer kullanıcıların veritabanına (read veya write) erişimini engellemez.
- pg_dump kullanmak için özel bir yetki gerekmez; Normal bir kullanıcı bile, kullanıcının belirli bir veritabanı üzerinde izni olması koşuluyla onu çalıştırabilir.
pg_dump yalnızca tek bir veritabanının yedeğini alır. Clusterın tamamını yedeklemek veya clusterdaki tüm veritabanlarında ortak olan genel nesneleri (roller ve tablespace gibi) yedeklemek için pg_dumpall kullanılır.
Dump dosyaları, komut veya arşiv dosyası formatlarında çıkarılabilir. Komut dosyasında oluşan dump dosyası, veritabanını kaydedildiği sırada bulunduğu duruma yeniden yapılandırmak için gereken SQL komutlarını içeren düz metin dosyalarıdır. Böyle oluşan komut dosyasını geri yüklemek için oluşan sql dosyasını psql veya başka bir araç ile çalıştırmamız yeterlidir. Bu komut çalıştırılırken psql’de veritabanı ismi ile verilen veri tabanı yaratılmış olmalıdır, aksi halde objeler varsayılan olarak gelen postgres veritabanında yaratılır. Kullanım kolaylığı nedeni ile mimari ve makine değişimlerinde veritabanını yeniden yapılandırmak için kullanılabilir.
Veritabanını elle oluşturmak istemiyorsak pg_dump ile arşiv dosyası formatında (custom, directory, tar) yedekler almalıyız ancak bu durumda restore işlemini psql yerine pg_restore aracı ile yapmalıyız. pg_restore’un neyin geri yüklendiği konusunda seçici olmasını ve hatta öğeleri geri yüklenmeden önce yeniden düzenlemesinide sağlar, bu şekilde daha esnek bir yöntem elde etmiş oluruz. Arşiv dosyası formatları, mimariler arasında taşınabilir olacak şekilde tasarlanmıştır. pg_dump komutunun sintaksı aşağıdaki gibidir;
pg_dump [connection-option…] [option…] [dbname]
Hangi sunucu üzerindeki veri tabanlarını yedeklemek istiyorsak, -h host ve -p port komutlarını kullanarak bunu belirtebiliriz. Varsayılan sunucu, lokal sunucudur ya da PGHOST değişkeninde ne belirtildiyse odur. Aynı şekilde, varsayılan portun değeri de PGPORT değişkeninde belirtilen değerdir ya da derlenmiş olan varsayılan değeri alır. Diğer PostgreSQL istemci uygulmaları gibi, pg_dump varsayılan olarak, geçerli işletim sistemi adına eşit olan veri tabanı kullanıcı adına bağlanacaktır. Bunu ezmek için, ya -U seçeneğini ya da PGUSER değişkenini kullanabiliriz.
Örnekler; (devamı..)