PostGreSQL ile PGBackRest Backup & Restore

Selamlar arkadaşlar bu makalemde sizlere PostGreSQL üzerinde nasıl Backup ve Restore işlemi yapılır bunu anlatacağım. Bu işlemi yaparken ise PGBackRest den yardım alıyor olacağız.

İşlem sırasında gerekli olan ihtiyaçlarınız bir adet Ubuntu üzerine kurulmuş PostGreSQL 13’dür. Ben örneğimi 13 üzerinden yapacağım.

PSQL 13 kurulumu için buraya tıklayabilirsiniz.

PGBackRest için Gerekli adımlar :

– Kurulum : Bu komutları Root olarak çalıştırmalısınız.

> apt install -y pgbackrest

– PGBackRest için PostGreSQL Archive Ayarları : Bu ayarları ise /etc/postgresql/13/main/postgresql.conf dosyası içerisinde yapacaksınız. Backup dosyalarınızı tutacağınız klasörünüzü oluşturmalısınız.

> mkdir -p /mnt/pgbackrest/

Bir dosya oluşturdum. Daha sonra ise postgresql.conf dosyasında

> archive_mode = on
> archive_command = 'pgbackrest --stanza=main archive-push %p'

Ayarlarını yaptığınızda yukarıdaki gibi görünecektir.

– PGBackRest ayarlamaları : Bu ayarları yapmanız için /etc/pgbackrest.conf dosyasına gitmeli ve içerisini tamamen silerek aşağıdaki kodu eklemelisiniz.

[global]
repo1-path=/mnt/pgbackrest/
repo1-retention-full=3 // Tutulacak Max Backup Sayısı.
repo1-cipher-type=aes-256-cbc // Şifreleme algoritması
repo1-cipher-pass=PasswordBilgisi // Backuplarınız için Password oluşturduğunuz alan
repo1-retention-full-type=count
process-max=2
log-level-console=info
log-level-file=debug
compress-level=3 // Compress yapılarak sıkıştırmasını sağlayan komut.

[main]
db-path=/var/lib/postgresql/13/main

Ayarlamalarınızı yaptığınız da dosyamız yukarıdaki gibi görünecektir.

– Dosyamızın izinlerini ayarlıyoruz :

> chown -R postgres:postgres /mnt/pgbackrest && chmod -R 700 /mnt/pgbackrest

– Son olarak ayarların uygulanabilmesi için PostGreSQL’e Restart atıyoruz :

> systemctl restart postgresql

– PGBackRest ile Backup oluşturma işlemleri :

Bu işlemleri yaparken kullanıcımızın postgres olması gerekiyor. Aşağıdaki kod ile kullanıcı değiştiriyoruz.

> su - postgres

Daha sonra Backup almamıza yarayacak olan Stanza-Create komutumuzu çalıştırıyoruz.

> pgbackrest --stanza=main stanza-create

Completed successfully yazısını görmeniz durumunda başarılı şekilde oluşturulmuş olacaktır.

> pgbackrest --stanza=main info 

Komutu yardımıyla ise oluşturulan Stanza hakkında bilgi alabiliyoruz.

Şimdi ise aşağıdaki komutlar ile Full ve Incr backupları alacağız.

> pgbackrest --stanza=main --type=full backup 

Komutu yardımıyla Full Backup alabiliyorsunuz.

> pgbackrest --stanza=main --type=incr backup

Komutu yardımıyla INCR backup alabiliyorsunuz.

> pgbackrest --stanza=main info

Komutunu tekrar çalıştırdığımız da backuplarımızın alındığını göreceksiniz.

– EK Komutlar :

Stanza silme işlemi yapacaksanız eğer ilk olarak o Stanzayı durdurmalısınız.

> pgbackrest --stanza=main stop

Durdurduktan sonra

> pgbackrest --stanza=main stanza-delete

Komutu ile silmeli ve sonrasında;

> pgbackrest --stanza=main start

Komutu ile tekrar çalıştırmanız gerekmektedir.

– Restore işlemleri :

Restore senaryomuzda ise ilk olarak PostGreSQL’imizi bozuyoruz. J Bunun için dosyalarını siliyoruz ve durduruyoruz. Bu işlemleri Root kullanıcımızla yapıyoruz.

> rm -r /var/lib/postgresql/13/main
> systemctl stop postgresql

Daha sonra dosyalarımızı atacağımız yeri oluşturuyor ve izinlerini veriyoruz.

> mkdir /var/lib/postgresql/13/main
> chown postgres:postgres /var/lib/postgresql/13/main
> chmod 700 /var/lib/postgresql/13/main

Daha sonra Postgres kullanıcısına geçiş yaparak Restore komutumuzu çalıştırıyoruz.

> su - postgres
> pgbackrest --stanza=main restore

Restore komutumuzu çalıştırıyoruz ve Completed Successfully yazısını gördüğümüzde başarılı bir şekilde tamamlandığını anlıyoruz. Sonrasında ise Root kullanıcısına geçiyoruz ve PostGreSQL’i çalıştırıyoruz. Burada Hostname’in değiştiğini fark edeceksiniz ama bunun konuyla alakası yok kullandığım Ubuntu Desktop çöktü ve bende yeni Ubuntu Server kurarak tekrar bu kısma geldim. 🙂 küçük bir aksilik sadece. 🙂

Daha sonra tail /var/log/postgresql/postgresql-13-main.log komutu ile loglarımı kontrol ediyorum ve sorunsuz işlemin bittiğini buradan da görebiliyorum. Daha sonra tabiki psql ile DB’min içerisine giriyorum. İşlemlerimiz bu kadar arkadaşlar.

PGBackRest yararlı kodlar :

> pgbackrest --stanza=main --delta --set=20220307-122315F --type=time --target="2022-03-07 12:30:17" restore

// Komutu yardımıyla –set=20220307-122315F kısmına info’dan aldığımız Full Backup adını yazıyoruz. –target=”2022-03-07 12:30:17″ ise istediğimiz geri dönüş tarihini yazarak belirlediğimiz tarihe geri dönüş sağlayabiliyoruz.

> sudo -u postgres pgbackrest --stanza=main --compress-level=6 --type=full backup

// Komutumuz ile ise –compress-level=6 diyerek Backup işlemi sırasında Compress işlemi yaptırabiliyoruz.

Bu yazımda bu kadar arkadaşlar deneyimleyerek elde ettiğim ve öğrendiğim bütün bilgileri siz okurlarımla paylaşmak istedim. Umarım yararlı bir yaz olur. Yanlışlarım, eksiklerim, eklemek istedikleriniz ya da yorumlarınız varsa lütfen yorumlar kısmından bana iletin ki doğru bilgiler için güncellemeler yapabileyim.

Herkese kolaylıklar dilerim arkadaşlar.

3 yorum

  1. Eymen Doğan Yanıtla

    Hocam iyi günler windows ‘a PgBackRest kurulumu yapabiliyor muyuz? sanal makine kullanmak veya işletim sistemini değiştirmemiz mi gerekiyor?

    • Semih Yanıtla

      Selamlar Hocam, Ben Postgresql kurulumları yaparken Windows cihazlarında kurulum yapmadım hiç bundan dolayı pek emin değilim. Ufak bir googlelama yapıp baktığımda ise görmedim kurulumun olup olmadığını. Yanlış yönlendirmek istemem araştırmak gerekir. Sağlıklı olan bence Linux sisteminde koşturulması. Kolaylıklar dilerim.

Bir Cevap Yazın