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