Pgbackrest kurulumu
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"