Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
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=pg1 pg2-path=/postgres/data pg2-host=pg2 pg3-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-create pgbackrest --stanza patroni --log-level-console=detail check pgbackrest --stanza patroni --log-level-console=detail backup --type=full
Komentarze (0)
Brak komentarzy...