Pgbackrest kurulumu

Caner AYSAN
3 min readNov 4, 2022

--

pgBackRest , PostgreSQL için bir seferde terabaytlara kadar veri üzerinde verimli bir şekilde yedekleme ve geri yükleme gerçekleştirmek için tasarlanmış açık kaynaklı bir araçtır . Amacı, yedekleme işlemi sırasında sağlam performans sunarken güvenilir, ölçeklenebilir ve esnek olmaktır.

Paralel yedekleme ve geri yükleme , yerel veya uzaktan çalıştırma, tam, artımlı ve farklı yedekleme türleri , yedekleme döndürme, arşiv sona erme, yedekleme bütünlüğü, sayfa sağlama toplamları, yedekleme özgeçmişi, akış sıkıştırma ve sağlama toplamları, delta geri yükleme dahil olmak üzere pgBackRest’e ve daha fazlası birçok güçlü özellik dahildir.

Veritabanı mühendislerine kendini gösterebilecek zor bir senaryo , tüm yedeklemelerin birincil veritabanı ana bilgisayarını etkilemeden tutarlı ve iyi performans göstermesini sağlamayı içeren PostgreSQL kümenizin yüksek kullanılabilirliğini sağlamaktır. Yeterince büyük miktarda veriye sahipseniz, bir pgBackRest yedeği çalışırken bazen birincil veritabanında önemli bir sistem yükü yaşayabilirsiniz.

Bu soruna etkili bir çözüm, birincil yerine replikadan yedekleme performansını etkinleştirme seçeneğini etkinleştirmektir; Giriş/Çıkış üzerindeki etkinin büyük kısmı daha sonra çoğaltma düğümünde gerçekleşir ve birincil ana bilgisayardaki yükü en aza indirir. Bu noktada yapılan tek bağlantı, bilgi ve günlük dosyalarını elde etmek için çoğaltmadan birincil bağlantıya olacaktır.

Ayrıca pgBackRest ile çalışmak üzere birden fazla replika konfigüre etmek mümkündür; bu durumda, bulunan ilk çalışan bekleme seçilecek ve yedekleme işlemi için kullanılacaktır. Beklemedeki düğümlerden biri başarısız olursa, pgBackRest otomatik olarak yedeği bulur ve yapılandırılan bir sonraki kullanılabilir replika üzerinde çalıştırmaya devam eder.

Kurulum aşamaları

build version 2.38 of pgBackRest i oluşturduğumuz klasör e indiriyoruz

mkdir -p /build
wget -q -O - \
https://github.com/pgbackrest/pgbackrest/archive/release/2.38.tar.gz | \
tar zx -C /build

build bağımlılık paketlerinin kurulumu

sudo yum install make gcc postgresql13-devel \
openssl-devel libxml2-devel lz4-devel libzstd-devel bzip2-devel libyaml-devel

build indirdiğimiz pgbackrest dosyasını ayarlayıp build yapıyoruz

cd /build/pgbackrest-release-2.38/src && ./configure && make

pg-primary gerekli bağımlılık paketleri:

sudo yum install postgresql-libs

pg-primary pgBackRest i host a build etme

sudo scp $HOSTNAME:/build/pgbackrest-release-2.38/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

pgBackRest, log ve configuration dizinleri ile bir yapılandırma dosyası gerektirir.

pg-primary pgBackRest yapılandırma dosyası ve dizinleri oluşturun

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

pgBackRest şimdi düzgün bir şekilde kurulmalıdır, ancak kontrol edilmesi en iyisidir. Herhangi bir bağımlılık kaçırıldıysa, komut satırından pgBackRest’i çalıştırırken bir hata alırsınız.

pg-primary Kurulduğundan emin olun

sudo -u postgres pgbackrest

pg-primary Test için cluster oluşturun

sudo -u postgres /usr/pgsql-13/bin/initdb \
-D /var/lib/pgsql/10/data -k -A peer

Pgbackrest i patroni yapısında kullanma

postgres_node_1 – 192.168.56.107 - pgBackrest repository
postgres_node_2 - 192.168.56.108 - Postgres instance 1
postgres_node_3 - 192.168.56.109 - Postgres instance 2

pgBackrest i kurmadan önce patroni.yaml dosyasından;

  • enable archive logging
  • listen_addresses = ‘*’
postgresql:
listen: "*:5432"
parameters:
archive_mode: "on"
archive_command: 'pgbackrest --stanza=main archive-push %p'
--pg-socket-path postgresql.base.conf dan düzenle

bu işlemleri yaptıktan sonra;

patronictl -c /etc/patroni.yaml edit-config

komutu ile tüm patroni makinalarında postgres ayarlarını yapıyoruz. listen_addresses=0.0.0.0:5432 olarak ayarlayabiliriz.

sudo -u postgres psql -c show listen_addresses;
<*>
sudo -u postgres psql -c show archive_command;
< pgbackrest --stanza=main archive-push %p>

Backup yapacağımız sunucuda bgbackrest kullanıcısı oluşturuyoruz (postgres kullanıcısı ile de işlemlerimize devam edebiliriz)

sudo adduser --disabled-password --gecos "" pgbackrest
sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf
sudo chown pgbackrest:pgbackrest /home/pgbackrest

On the pgbackup server as pgbackrest user:

sudo -u pgbackrest mkdir -m 750 /home/pgbackrest/.ssh
sudo -u pgbackrest ssh-keygen -f /home/pgbackrest/.ssh/id_rsa \
-t rsa -b 4096 -N ""

On prd-postgresql-n52 as postgres user: for 2 nodes

sudo -u postgres mkdir -m 750 -p /home/postgres/.ssh
sudo -u postgres ssh-keygen -f /home/postgres/.ssh/id_rsa \
-t rsa -b 4096 -N ""

On prd-postgresql-n52 (backup):

cat /home/pgbackrest/.ssh/id_rsa.pub | ssh postgres@prd-postgresql-n2"cat >> ~/.ssh/authorized_keys"
cat ~/.ssh/id_rsa.pub | ssh postgres@prd-postgresql-n3"cat >> ~/.ssh/authorized_keys"

On prd-postgresql-n54-n53 (active db):

cat ~/.ssh/id_rsa.pub | ssh pgbackrest@prd-postgresql-n52"cat >> ~/.ssh/authorized_keys"
cat ~/.ssh/id_rsa.pub | ssh pgbackrest@prd-postgresql-n54"cat >> ~/.ssh/authorized_keys"
cat ~/.ssh/id_rsa.pub | ssh pgbackrest@prd-postgresql-n53"cat >> ~/.ssh/authorized_keys"

--

--