
Przed rozpoczęciem konfiguracji upewnijmy się, że pgbackrest jest zainstalowany na wszystkich serwerach z Patroni (hosty 1,2,3) i na serwerze kopii zapasowych (host 5) w tej samej wersji.
$ pgbackrest version
pgBackRest 2.46
Następnie tworzymy pliki konfiguracyjne dla pgbackresta.
Na backup serwerze (host 5), definiujemy stanzę Patroni, podajemy adresy i katalogi pgdata dla wszystkich serwerów w klastrze, używając kolejno nazw parametrów pg1-path, pg2-path, pg3-path, etc.oraz dodajemy parametr backup_standby=y, aby pgbackrest starał się wykonywać kopie zapasowe z serwerów standby, odciążając tym samym instancję primary.
Otwórzmy plik konfiguracyjny pgbackresta, domyślnie znajduje się w /etc/pgbackrest.conf:
sudo vi /etc/pgbackrest.conf
Na początku należy wykomentować lub usunąć linie, które już znajdują się w tym pliku i wprowadzić konfigurację jak w przykładzie poniżej.
W sekcji [patroni] definiujemy, które serwery należą do konfigurowanej stanzy, czyli zestawu konfiguracji + struktury katalogów, w której przechowywane będą kopie zapasowe dla naszego klastra Patroni. Nazwę w [nazwa] możemy podać dowolną, najlepiej ułatwiającą szybką identyfikację klastra, którego dotyczy. Dalej będziemy posługiwać się nazwą stanzy "patroni".
W wierszach pgX-path, pgX-host podajemy ścieżkę do katalogu PGDATA oraz adres serwera, na którym się znajduje.
W sekcji [global] definiujemy parametry wspólne dla wszystkich stanz znajdujących się na serwerze. Parametry wykorzystane poniżej to:
Dalej indywidualne parametry dla poszczególnych operacji wykonywanych przez pgbackresta: backup, restore, archive-get, archive-push. Każdy z nich może mieć swój zestaw parametrów, jeżeli zajdzie taka potrzeba, poniższy przykład jest tylko demonstracją, jak to może wyglądać:
[patroni]
pg1-path=/postgres/data
pg1-host=pg1pg2-path=/postgres/data
pg2-host=pg2pg3-path=/postgres/data
pg3-host=pg3[global]
backup-standby=y
repo1-path=/backups
repo1-retention-full=3
archive-timeout=1000
start-fast=y
spool-path=/var/spool/pgbackrest
process-max=2[global:backup]
process-max=2[global:restore]
process-max=2[global:archive-get]
process-max=2[global:archive-push]
process-max=2
Na serwerach z patroni: pg1, pg2, pg3 plik konfiguracyjny wygląda dokładnie tak samo, kopiujemy go na wszystkie serwery.
Otwórzmy plik konfiguracyjny pgbackresta, domyślnie znajduje się w /etc/pgbackrest.conf:
sudo vi /etc/pgbackrest.conf
Na początku należy wykomentować lub usunąć linie, które już znajdują się w tym pliku i wprowadzić konfigurację jak poniżej:
[patroni]
pg1-path=/postgres/data[global]
repo1-host=pgbackup
repo1-host-user=postgres
repo1-path=/backups
archive-timeout=1000
backup-standby=y
start-fast=y
spool-path=/var/spool/pgbackrest
process-max=2[global:backup]
process-max=2[global:restore]
process-max=2[global:archive-get]
process-max=2[global:archive-push]
process-max=2
Na wszystkich serwerach tworzymy katalogi wymagane przez pgBackRest:
# na wszystkich serwerach Patroni
sudo mkdir -p /var/spool/pgbackrest && sudo chown postgres: /var/spool/pgbackrest
# na serwerze z backupami
sudo mkdir -p /backups && sudo chown postgres: /backups
Na wszystkich serwerach Patroni i pgbackresta, jako użytkownik systemowy postgres generujemy klucze uwierzytelniające dla połączeń ssh pomiędzy serwerami. Po czym przenosimy zawartość kluczy id_rsa.pub z każdego serwera na wszystkie pozostałe serwery do pliku ~/.ssh/authorized_keys. W poleceniu ssh-keygen -t rsa wciskamy enter na każde zapytanie, które nam się wyświetli:
sudo su - postgres
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
vi ~/.ssh/authorized_keys
Na każdym serwerze dodajemy wpisy do ~/.ssh/known_hosts jako użytkownik systemowy postgres:
cat <<EOF | xargs ssh-keyscan > ~/.ssh/known_hosts
pg1
pg2
pg3
pgbackup
EOF
Sprawdźmy, czy możemy zalogować się na serwery przez ssg bez potrzeby podawania hasła.
Z pg1 jako użytkownik postgres:
ssh postgres@pg2
ssh postgres@pg3
ssh postgres@pgbackup
I analogicznie z pg2, pg3 i pgbackup na pozostałe serwery. Powinno nas połączyć automatycznie bez potrzeby dodawania serwerów do pliku ~/.ssh/known_hosts, oraz bez pytania o hasło.
Na serwerze backupów tworzymy stanzę dla klastra patroni, sprawdzamy, czy archiwizacja działa prawidłowo i wykonujemy pierwszą kopię zapasową (jako użytkownik systemowy postgres):
pgbackrest --stanza patroni --log-level-console=detail stanza-createpgbackrest --stanza patroni --log-level-console=detail check
pgbackrest --stanza patroni --log-level-console=detail backup --type=full
Komentarze (0)
Brak komentarzy...