Postgresql pg_basebackup ile Backup İşlemleri

Postgresql File System Backup

Postgresql veri tabanı file system backup yöntemi işletim sistemi üzerindeki PGDATA dizininin yedeklenmesi anlamına gelmektedir. File system backup işlemine cold backup’da denir. Cold backup olarak adlandırılmasının sebebi postgresql veri tabanı servisleri durdurulduktan sonra file system yedeğinin alınabilmesidir. Veri tabanı çalışırken alınan file system yedeği tutarlı bir yedek olmaz.

File system yedeği aşağıdaki komut ile alınır.

tar -cf backup.tar /usr/local/pgsql/data

Continuous Archiving ve Point in Time Recovery

Cold backup alınırken veri tabanı servislerinin durdurulması production sistemlerde uygulanabilir bir yedekleme çözümü değildir. Çünkü backup alınırken de veri tabanının kullanımda olması kaçınılmazdır. Veri tabanı çalışır durumda iken backup alabilmenin zor kısmı alınan backup’ın tutarlı bir şekilde restore edilebilmesi aşamasında ortaya çıkar.

Bu problemin ortadan kaldırılmasını sağlayan yapı Online Backup alınırken veri tabanı log dosyalarının (WAL) kayıtlarının da backup işlemine dahil edilmesidir. Veri tabanı restore edilirken Backup dosyalarından sonra WAL dosyaları da okunarak veri tabanını son transaction’a kadar hazır hale getirir ve tutarlı bir yedekleme çözümü sunulmuş olur.

Online backup/restore çözümü ve Log replay denilen WAL kayıtlarının işletilmesi özellikleri ile veri tabanını belirli bir zamana da tutarlı bir şekilde döndürmek mümkündür.

WAL Archiving

Online Backup işlemleri için WAL archiving özelliğinin ayarlanması gerekir. Wal_level parametresi replica yada daha yüksek bir log seviyesi olarak ayarlanır. Archive_mode parametresi on olarak set edilir. Daha sonra ise archive_command parametresi set edilir.

Archive_command parametresinde %p arşivlenecek dosya dizinini gösterir. %f ise dosya adını belirtir.

archive_command = ‘test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f’ 

Bu komut aşağıdaki gibi bir ifade çalıştırır.

test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/00000001000000A900000065 /mnt/server/archivedir/00000001000000A900000065

Yani pg_wal dizini altındaki dosyanın archive dizininde olup olmadığını kontrol eder ve yoksa kopyalama işlemini yapar.

Full backup almak için kullanılacak komut örnekleri ;

pg_basebackup -h mydbserver -D /usr/local/pgsql/data

pg_basebackup -D backup -Ft -z -P

pg_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts

-D directory : Backup dosyalarının yazılacağı dizin

-F format : Backup dosyalarının türünü belirtir. P (plain) veya t (tar) olarak verilebilir.

-r rate : Transfer oranı. KB per Second

–waldir : Write ahead log dizini

-X method : –wal-method Backup’ın wal dosyalarını da içermesi için kullanılır.

-z : –gzip Gzip sıkıştırma ile backup almak için.

-Z level : Compress level’ı belirlemek için kullanılır.

-h : host

-p : port

-U : username

-w : Password kullanmadan bağlantı

-W : Password

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