Postgresql pg_dump

Pg_dump postgresql de veritabanı yedeklemek için yardımcı programlardan birisidir. Postgresql’in bize veritabanı yedeklemeleri için  sunduğu pg_dump yardımı ile postgresql clusterınız içerisinde ki veritabanı,şema ,tablo  yedekleme de kullanılmaktadır.

Pg_dump  da bulunan parametrelerle birden fazla parametre alır ve bu parametreler yardımı ile backupın birkaç process de alınmasını sağlayarak hızlı bir şekilde almasını sağlayabiliriz ya da   veritabanın yedeğini alırken unlogged tabloları almamak isteyebilirsiniz  ya da uzak makine üzerinde ki postgresql sunucularına bağlanarak sadece belirli veritabanlarını almak isteyebilirsiniz.

 

Pg_dump ile veritabanına bağlanmak için bazı parametreler aşağıdaki gibidir.

-d veya –dbname       Bağlanılacak veritabanın adı belirtilir .

-h veya –host              Bağlanılmak istenen postgresql ip

-p veya –port              Bağlanmak istenen postgresql portu

-U veya –username   Bağlanılmak istenen kullanıcı adı.

-w  veya  –no-password     Bağlantı sağlanırken işlem sırasında parola kullanılmaması için kullanılır.

-W veya –password             Bir veritabanına bağlanmadan önce parola istemesi için kullanılır.

–role                            Belirtilen role u kullanarak backup almak için kullanılır. Superuser kullanıcısı verilemeden yetki tanımlamak için kullanılır.

 

Superuser vermeden backup almak için postgresql superuser vermeden backup almak isimli yazıma bakabilirsiniz.

Pg_dump alırken tabloları almadan sadece içerisinden ki verileri almak için veya  blob datalar alınsın veya alınmasın gibi seçenekleri eklemek ve daha fazlası gibi parametreler vardır. Bu parametreler aşağıdaki gibidir.

Dbname                      Adından anlaşılacağı üzere veritabanı adını belirtmek için kullanılır.  -d parametresi de aynı işlemi görür . Database ismi belirtilmezse default olarak postgresql de işlem yapılır.

  • -a veya –data-only   Belirtilen veritabanındaki ki nesnelerin create scriptinlerini almaz sadece içerisinde ki dataları alır.
  • -b veya –blobs       Dump içerisine veritabanı içerisinde ki large objeleri dahil etmek için kullanılır. -b veya –blobs parametresi kullanılmadığı durumlarda default olarak pg_dump içerisinde blob datalar bulunur  sadece belirli tablo veya şemanın yedeği istenildiği durumlarda -b parametresi kullanabilir.
  • -c veya –clean       Dump oluşturulurken veritabanı içerisinde ki objelerin  drop create scriptleri bulunur. Örnek olarak restore edilirken tablo varsa sil yeniden oluştur veya şema varsa sil tekrar oluştur anlamındadır. İçerisinde data olan veritabanına restore işlemi yapıyorsanız dikkat etmeniz gerekebilir.
  • -C veya –create     Veritabanı ve içerisindekileri oluşturmak için kullanılır .
  • -E veya –encoding  Belirtilen Encoding ile oluşturulması için kullanılır.
  • -f veya –file Pg_dump ile alınan backupın nereye alınacağını belirtmek için kullanılır. Yer belirtilmezse default yere alınır.
  • -F veya –format  Pg_dump  ile backup alınırken alınan backupın formatını seçmek için kullanılır.

Pg_dump backup formatları aşağıdaki gibidir.

  •  p veya plain: SQL komutu dosyası olarak çıktı vermek için kullanılır. -Fp şeklinde kullanabilir .
  • c veya custom: Pg_restore için uygun özel formatta çıkarır.  -Fc şeklinde kullanabilir .
  • d veya directory : Pg_restore için uygun özel formatta çıkarır. Bunun yanında  backup dosyanızı gzip ile sıkıştırarak ve bir dosya içerisinde oluşturmak için kullanılır.  -Fd şeklinde kullanabilir .
  • -t veya tar: Pg_restore için uygun özel formatta çıkarır. Bunun yanında  backup dosyanızı tar ile sıkıştırarak ve bir dosya içerisinde oluşturmak için kullanılır.  Tar dosyasını açarken 3 parça halinde  çıktı verir . Bu çıktıların uzantısı”.sql”,”.dat” şeklindedir.  -Fd şeklinde kullanabilir .
  • -j veya –jobs : paralel bir şekilde yedek alınması için kullanılır. Bu işlem yapılırken max_connections parametresi ile birden fazla parametre proceses de işlem yapılmasını sağlar.
  • -n veya –schema : Belirtilen şemaya ait verilerin yedeğini almak için kullanılır. Bu parametre de birden fazla şema adı belirtilebilir. Şemalar arasında bağlılık varsa postgresql bunları es geçecektir.
  • -N veya –exclude-schema : Belirtilen şemaya ait verilerin yedeğini almamak veritabanı içerisinde bulunan diğerlerinin backupını almak için kullanılır. Bu parametre de birden fazla şema adı belirtilebilir. Şemalar arasında bağlılık varsa postgresql bunları es geçecektir.
  • -O veya –no-owner :  Yedeği alınacak veritabanın içerisindeki bulunan nesnelerinin  ownerını almamak için kullanılır.
  • -s veya –schema-only :  Belirtilen nesnelerin sadece create scriptlerini almak için kullanılır. İçerisinde data bulunmaz.
  • -S veya –superuser : Triggerları devre dışı bırakılır. Farklı superuser kullanıcısı belirterek işlem yapmak için kullanılır.
  • -t  veya –table   : Sadece belirtilen tablonun yedeğini almak için kullanılır. –include-foreign-data parametresi ile fdw tablolarını da almak için kullanabilirsiniz. Fdw ile ilgili detaylı bilgi için Foreign Data Wrapper yazılarımı okuyabilirsiniz.
  • -T  veya –exclude-table   : Sadece belirtilen tablonun yedeğini almaz diğerlerini yedeğini almak  için kullanılır.
  • -v  veya –verbose   : pg_dump işlemi yapılırken yapılan işlemlerin ekrana yazdırmak için kullanılır.
  • -x veya –no-privileges veya –no-acl : Erişim ayrıcalıklarının atlanması için kullanılır.  Detaylı bilgi için ACL yazıma göz atabilirsiniz.
  • -Z veya –compress :   Dump çıktısının sıkıştırma oranını belirtmek için kullanılır. 0 ile 9 arasında değer alır.
  • –binary-upgrade: binarylerin upgrade edilmesi için kullanılır.
  • –column-inserts veya –attribute-inserts : pg_dump içerisinde standart olarak copy komutu kullanılır. Bunun sebebi daha hızlı olmasıdır fakat verileri copy yerine insert scripti şeklinde oluşturmak isterseniz bu komutu kullanabilirsiniz.
  • –include-foreign-data : bu parametre ile Fdw tablolarını belirterek yükleyebiliriz.
  • –lock-wait-timeout : Dump sırasında lock olduğu zamanda timeout değeri kadar beklemesini sağlamak için kullanılır.
  • –no-comments : Yorum satırı kullanılmaması için kullanılır.
  • –no-security-labels : Güvenlik etiketlerini almamak için kullanılır.
  • –no-tablespaces : Belirtilen tablespace ‘in yedeğini almamak için kullanılır.
  • –no-unlogged-table-data: Unlogged tableları yedeğini almamak için kullanılır. Unlogged Table ile ilgili detaylı bilgi için Unlogged Table isimli yazıma bakabilirsiniz.

Örnek kullanımı aşağıdaki gibidir:

 

pg_dump  -p 5432 -d aa  -T public.Personel -c -C -f/var/lib/pgsql/13/backups/d1/aacreatetableinsert --column-inserts

 

Loading