Bir müşterimizin 100GB civarı PostgreSQL veritabanı vardı. Standart pg_dump komutu ile yedek alındığında yedek alma süresi 24 saate kadar uzayabilmekteydi. Sonrasında binary backup ile testler yaptığımızda bu sürenin 2 saate düştüğünü gözlemledik. Burada kısaca binary yedek nasıl alınır ve geri yüklenir ondan bahsedeceğim. Örnekler PostgreSQL 9.2 üzerinde uygulanmıştır.
pg_dump -F parametresi yedek türünü belirler.
p: plain(düz) yedek anlamına gelir. Ön tanımlı yedek türü budur. Yedek SQL metin dosyası formatındadır.
Örnek:
# pg_dump -U ssm -F t -b -v -f ssm.dbbackup ssm
Dosyanın türüne file komut ile baktığımızda metin olarak gözükmektedir.
# file ssmdb.backup ssmdb.backup: UTF-8 Unicode English text, with very long lines
c: custom (özel) yedektir. Bu fomat bize esneklik sağlıyor. Yedekten sadece bir tablo veya index
dönebiliyoruz. Ön tanımlı olarak yedek sıkıştırılmaktadır.
# pg_dump -U ssm -F c -b -v -f ssmdb.backup ssm
pg_dump: reading schemas
pg_dump: reading user-defined tables
pg_dump: reading extensions
pg_dump: reading user-defined functions
pg_dump: reading user-defined types
pg_dump: reading procedural languages
..
# file ssmdb.backup
ssmdb.backup: PostgreSQL custom database dump - v1.12-0
d: directory(dizin) Yedekler bir dizin altında oluşmaktadır. Ön tanımlı olarak arşiv sıkıştırılır.
# pg_dump -U ssm -F d -b -v -f ssmbackupdir ssm
# ls -al ssmbackupdir/
total 360K
drwx------ 2 root root 4.0K Apr 5 10:53 .
dr-xr-x--- 11 root root 4.0K Apr 5 10:53 ..
-rw-r--r-- 1 root root 230 Apr 5 10:53 2859.dat.gz
-rw-r--r-- 1 root root 295K Apr 5 10:53 2861.dat.gz
-rw-r--r-- 1 root root 5.0K Apr 5 10:53 2863.dat.gz
-rw-r--r-- 1 root root 29 Apr 5 10:53 2865.dat.gz
-rw-r--r-- 1 root root 25 Apr 5 10:53 2866.dat.gz
-rw-r--r-- 1 root root 29 Apr 5 10:53 2868.dat.gz
-rw-r--r-- 1 root root 29 Apr 5 10:53 2869.dat.gz
-rw-r--r-- 1 root root 307 Apr 5 10:53 2870.dat.gz
-rw-r--r-- 1 root root 29 Apr 5 10:53 2872.dat.gz
-rw-r--r-- 1 root root 15K Apr 5 10:53 toc.dat
t: tar tar arşivleme formatında yedek alır. Dizin formatındakinin arşivlenmiş hali gibi düşünülebilir. Bu yöntemde yedekler sıkıştırılmz.
# pg_dump -U ssm -F t -b -v -f ssmtar.backup ssm
# file ssmtar.backup
ssmtar.backup: tar archive
tar dosyasnının içeriği aşağıdaki gibidir.
# tar tvf
# tar tvf ssmtar.backup
-rw------- 2048/1024 14416 2013-04-05 11:05 toc.dat
-rw------- 2048/1024 489 2013-04-05 11:05 2859.dat
-rw------- 2048/1024 895755 2013-04-05 11:05 2861.dat
-rw------- 2048/1024 19287 2013-04-05 11:05 2863.dat
-rw------- 2048/1024 9 2013-04-05 11:05 2865.dat
-rw------- 2048/1024 5 2013-04-05 11:05 2866.dat
-rw------- 2048/1024 9 2013-04-05 11:05 2868.dat
-rw------- 2048/1024 9 2013-04-05 11:05 2869.dat
-rw------- 2048/1024 573 2013-04-05 11:05 2870.dat
-rw------- 2048/1024 9 2013-04-05 11:05 2872.dat
-rw------- 2048/1024 13065 2013-04-05 11:05 restore.sql
Yukarıdaki restore.sql dosyasında veritabanında tek tek tüm indeks,tablo vs kayıtlır silinip tekrar oluşturulmaktadır.
pg_restore
pg_restore komutu ile de yedekleri dönebilirsiniz. pg_restore ile komutu dönerken yedek formatını belirtmeye gerek yoktur. Programın kendisi otomatik olarak formatı tanımaktadır.
Aşağıdaki komutla yukarıdaki yedeklerden birini dönebilirsiniz. Örnek olarak tar formatlı yedek geri dönüşü gösterilmiştir.
# pg_restore -U ssm -v -f ssmtar.backup ssm
pg_dump -F parametresi yedek türünü belirler.
p: plain(düz) yedek anlamına gelir. Ön tanımlı yedek türü budur. Yedek SQL metin dosyası formatındadır.
Örnek:
# pg_dump -U ssm -F t -b -v -f ssm.dbbackup ssm
Dosyanın türüne file komut ile baktığımızda metin olarak gözükmektedir.
# file ssmdb.backup ssmdb.backup: UTF-8 Unicode English text, with very long lines
c: custom (özel) yedektir. Bu fomat bize esneklik sağlıyor. Yedekten sadece bir tablo veya index
dönebiliyoruz. Ön tanımlı olarak yedek sıkıştırılmaktadır.
# pg_dump -U ssm -F c -b -v -f ssmdb.backup ssm
pg_dump: reading schemas
pg_dump: reading user-defined tables
pg_dump: reading extensions
pg_dump: reading user-defined functions
pg_dump: reading user-defined types
pg_dump: reading procedural languages
..
# file ssmdb.backup
ssmdb.backup: PostgreSQL custom database dump - v1.12-0
d: directory(dizin) Yedekler bir dizin altında oluşmaktadır. Ön tanımlı olarak arşiv sıkıştırılır.
# pg_dump -U ssm -F d -b -v -f ssmbackupdir ssm
# ls -al ssmbackupdir/
total 360K
drwx------ 2 root root 4.0K Apr 5 10:53 .
dr-xr-x--- 11 root root 4.0K Apr 5 10:53 ..
-rw-r--r-- 1 root root 230 Apr 5 10:53 2859.dat.gz
-rw-r--r-- 1 root root 295K Apr 5 10:53 2861.dat.gz
-rw-r--r-- 1 root root 5.0K Apr 5 10:53 2863.dat.gz
-rw-r--r-- 1 root root 29 Apr 5 10:53 2865.dat.gz
-rw-r--r-- 1 root root 25 Apr 5 10:53 2866.dat.gz
-rw-r--r-- 1 root root 29 Apr 5 10:53 2868.dat.gz
-rw-r--r-- 1 root root 29 Apr 5 10:53 2869.dat.gz
-rw-r--r-- 1 root root 307 Apr 5 10:53 2870.dat.gz
-rw-r--r-- 1 root root 29 Apr 5 10:53 2872.dat.gz
-rw-r--r-- 1 root root 15K Apr 5 10:53 toc.dat
t: tar tar arşivleme formatında yedek alır. Dizin formatındakinin arşivlenmiş hali gibi düşünülebilir. Bu yöntemde yedekler sıkıştırılmz.
# pg_dump -U ssm -F t -b -v -f ssmtar.backup ssm
# file ssmtar.backup
ssmtar.backup: tar archive
tar dosyasnının içeriği aşağıdaki gibidir.
# tar tvf
# tar tvf ssmtar.backup
-rw------- 2048/1024 14416 2013-04-05 11:05 toc.dat
-rw------- 2048/1024 489 2013-04-05 11:05 2859.dat
-rw------- 2048/1024 895755 2013-04-05 11:05 2861.dat
-rw------- 2048/1024 19287 2013-04-05 11:05 2863.dat
-rw------- 2048/1024 9 2013-04-05 11:05 2865.dat
-rw------- 2048/1024 5 2013-04-05 11:05 2866.dat
-rw------- 2048/1024 9 2013-04-05 11:05 2868.dat
-rw------- 2048/1024 9 2013-04-05 11:05 2869.dat
-rw------- 2048/1024 573 2013-04-05 11:05 2870.dat
-rw------- 2048/1024 9 2013-04-05 11:05 2872.dat
-rw------- 2048/1024 13065 2013-04-05 11:05 restore.sql
Yukarıdaki restore.sql dosyasında veritabanında tek tek tüm indeks,tablo vs kayıtlır silinip tekrar oluşturulmaktadır.
pg_restore
pg_restore komutu ile de yedekleri dönebilirsiniz. pg_restore ile komutu dönerken yedek formatını belirtmeye gerek yoktur. Programın kendisi otomatik olarak formatı tanımaktadır.
Aşağıdaki komutla yukarıdaki yedeklerden birini dönebilirsiniz. Örnek olarak tar formatlı yedek geri dönüşü gösterilmiştir.
# pg_restore -U ssm -v -f ssmtar.backup ssm
Hiç yorum yok:
Yorum Gönder