Wszystkie firmy mają obecnie (lub powinny mieć) plan odzyskiwania po awarii (DRP), aby zapobiec utracie danych w przypadku awarii; zbudowany zgodnie z akceptowalnym celem punktu odzyskiwania (RPO) dla firmy.
Kopia zapasowa to podstawowy początek w każdym DRP, ale aby zagwarantować użyteczność kopii zapasowej, pojedyncza kopia zapasowa po prostu nie wystarczy. Najlepszą praktyką jest przechowywanie plików kopii zapasowych w trzech różnych miejscach, jeden przechowywany lokalnie na serwerze bazy danych (dla szybszego odzyskiwania), drugi na scentralizowanym serwerze kopii zapasowych, a ostatni w chmurze. W tym ostatnim kroku powinieneś wybrać stabilnego i solidnego dostawcę chmury, aby upewnić się, że Twoje dane są prawidłowo przechowywane i dostępne w dowolnym momencie.
W tym blogu przyjrzymy się jednemu z najbardziej znanych dostawców usług w chmurze, Google Cloud Platform (GCP) i sposobom używania go do przechowywania kopii zapasowych PostgreSQL w chmurze.
Informacje o Google Cloud
Google Cloud oferuje szeroką gamę produktów dostosowanych do Twoich zadań. Przyjrzyjmy się niektórym z nich i ich powiązaniu z przechowywaniem kopii zapasowych PostgreSQL w chmurze.
- Przechowywanie w chmurze:umożliwia przechowywanie i pobieranie dowolnej ilości danych na całym świecie w dowolnym momencie. Możesz używać Cloud Storage do różnych scenariuszy, w tym do obsługi zawartości witryny, przechowywania danych do archiwizacji i odzyskiwania po awarii lub dystrybucji dużych obiektów danych do użytkowników poprzez bezpośrednie pobieranie.
- Cloud SQL:jest to w pełni zarządzana usługa bazy danych, która ułatwia konfigurację, utrzymanie, zarządzanie i administrowanie relacyjnymi bazami danych PostgreSQL, MySQL i SQL Server w chmurze.
- Compute Engine:zapewnia maszyny wirtualne działające w Google Cloud z obsługą skalowania od pojedynczych instancji do globalnego przetwarzania w chmurze o zrównoważonym obciążeniu. Maszyny wirtualne Compute Engine uruchamiają się szybko, są wyposażone w opcje dysków stałych i lokalnych o wysokiej wydajności oraz zapewniają stałą wydajność.
Przechowywanie kopii zapasowych w Google Cloud
Jeśli używasz bazy danych PostgreSQL w Google Cloud za pomocą Cloud SQL, możesz utworzyć jej kopię zapasową bezpośrednio z Google Cloud Platform, jednak nie ma potrzeby uruchamiania jej tutaj, aby przechowywać kopie zapasowe PostgreSQL.
Google Cloud Storage
Podobnie jak w przypadku dobrze znanego produktu Amazon S3, jeśli nie używasz bazy danych PostgreSQL z Cloud SQL, jest to najczęściej używana opcja przechowywania kopii zapasowych lub plików w Google Cloud. Jest dostępny z Google Cloud Platform, w sekcji Pierwsze kroki lub w lewym menu Storage. Dzięki Cloud Storage możesz nawet łatwo przesłać tutaj swoją zawartość S3 za pomocą funkcji Transfer.
Jak korzystać z Google Cloud Storage
Najpierw musisz utworzyć nowy zasobnik do przechowywania danych, więc przejdź do Google Cloud Platform -> Pamięć -> Utwórz zasobnik
W pierwszym kroku wystarczy dodać nową nazwę zasobnika.
W następnym kroku możesz określić typ lokalizacji (wiele regionów domyślnie) i miejsce lokalizacji.
Następnie możesz zmienić klasę pamięci ze standardowej (opcja domyślna) na nearline lub coldline.
Następnie możesz zmienić kontrolę dostępu.
Na koniec masz kilka opcjonalnych ustawień, takich jak szyfrowanie lub zasady przechowywania.
Teraz masz już utworzony nowy zasobnik, zobaczymy, jak z niego korzystać.
Korzystanie z narzędzia GSutil
GSutil to aplikacja Pythona, która umożliwia dostęp do Cloud Storage z wiersza poleceń. Umożliwia wykonywanie różnych zadań związanych z zarządzaniem zasobnikami i obiektami. Zobaczmy, jak zainstalować go w CentOS 7 i jak za jego pomocą przesłać kopię zapasową.
Pobierz pakiet SDK chmury:
$ curl https://sdk.cloud.google.com | bash
Zrestartuj swoją powłokę:
$ exec -l $SHELL
Uruchom gcloud init i skonfiguruj narzędzie:
$ gcloud init
To polecenie poprosi Cię o zalogowanie się na konto Google Cloud przez uzyskanie dostępu do adresu URL i dodanie kodu uwierzytelniającego.
Teraz masz już zainstalowane i skonfigurowane narzędzie, prześlijmy kopię zapasową do zasobnika.
Najpierw sprawdźmy, jakie zostały utworzone zasobniki:
[[email protected] ~]# gsutil ls
gs://pgbackups1/
Aby skopiować kopię zapasową PostgreSQL (lub inny plik), uruchom:
[[email protected] ~]# gsutil cp /root/backups/BACKUP-3/base.tar.gz gs://pgbackups1/new_backup/
Copying file:///root/backups/BACKUP-3/base.tar.gz [Content-Type=application/x-tar]...
| [1 files][ 4.9 MiB/ 4.9 MiB]
Operation completed over 1 objects/4.9 MiB.
Zasobnik docelowy musi istnieć.
Następnie możesz wyświetlić zawartość katalogu new_backup, aby sprawdzić przesłany plik:
[[email protected] ~]# gsutil ls -r gs://pgbackups1/new_backup/*
gs://pgbackups1/new_backup/
gs://pgbackups1/new_backup/base.tar.gz
Więcej informacji na temat korzystania z programu GSutil można znaleźć w oficjalnej dokumentacji.
Google Cloud SQL
Jeśli chcesz scentralizować całe środowisko (baza danych + kopie zapasowe) w Google Cloud, masz do dyspozycji ten produkt Cloud SQL. W ten sposób będziesz mieć bazę danych PostgreSQL działającą w Google Cloud, a także możesz zarządzać kopiami zapasowymi z tej samej platformy. Jest dostępny z Google Cloud Platform, w sekcji Pierwsze kroki lub w menu Pamięć masowa po lewej stronie.
Jak korzystać z Google Cloud SQL
Aby utworzyć nową instancję PostgreSQL, przejdź do Google Cloud Platform -> SQL -> Utwórz instancję
Tutaj możesz wybrać MySQL i PostgreSQL jako silnik bazy danych. Na potrzeby tego bloga stwórzmy instancję PostgreSQL.
Teraz musisz dodać identyfikator instancji, hasło, lokalizację i PostgreSQL wersja (9.6 lub 11).
Masz również kilka opcji konfiguracyjnych, takich jak włączenie publicznego adresu IP, typ komputera i przechowywania oraz kopii zapasowych itp.
Po utworzeniu instancji Cloud SQL możesz ją wybrać, a zobaczysz przegląd tej nowej instancji.
Możesz też przejść do sekcji Kopie zapasowe, aby zarządzać kopiami zapasowymi PostgreSQL.
Aby zmniejszyć koszty przechowywania, kopie zapasowe działają przyrostowo. Każda kopia zapasowa przechowuje tylko zmiany w danych od czasu poprzedniej kopii zapasowej.
Google Cloud Compute Engine
Podobnie jak Amazon EC2, ten sposób przechowywania informacji w chmurze jest droższy i bardziej czasochłonny niż Cloud Storage, ale będziesz mieć pełną kontrolę nad środowiskiem przechowywania kopii zapasowych. Jest również dostępny z Google Cloud Platform, w sekcji Pierwsze kroki lub w lewym menu Compute.
Jak korzystać z Google Cloud Compute Engine
Aby utworzyć nową maszynę wirtualną, przejdź do Google Cloud Platform -> Compute Engine -> Utwórz instancję
Tutaj musisz dodać nazwę instancji, region i strefę, Stwórz To. Ponadto należy określić konfigurację maszyny zgodnie z wymaganiami sprzętowymi i użytkowymi, a także rozmiar dysku i system operacyjny, który ma być używany z nową maszyną wirtualną.
Gdy instancja będzie gotowa, możesz tutaj przechowywać kopie zapasowe, na przykład , wysyłając go przez SSH lub FTP przy użyciu zewnętrznego adresu IP. Spójrzmy na przykład z Rsync i inny z poleceniem SCP Linux.
Aby połączyć się przez SSH z nową maszyną wirtualną, upewnij się, że dodałeś swój klucz SSH w konfiguracji maszyny wirtualnej.
[[email protected] ~]# rsync -avzP -e "ssh -i /home/sinsausti/.ssh/id_rsa" /root/backups/BACKUP-3/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
sending incremental file list
base.tar.gz
5,155,420 100% 1.86MB/s 0:00:02 (xfr#1, to-chk=0/1)
sent 4,719,597 bytes received 35 bytes 629,284.27 bytes/sec
total size is 5,155,420 speedup is 1.09
[[email protected] ~]#
[[email protected] ~]# scp -i /home/sinsausti/.ssh/id_rsa /root/backups/BACKUP-5/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
base.tar.gz 100% 2905KB 968.2KB/s 00:03
[[email protected] ~]#
Możesz łatwo osadzić to w skrypcie, aby wykonać automatyczny proces tworzenia kopii zapasowej lub użyć tego produktu z zewnętrznym systemem, takim jak ClusterControl, do zarządzania kopiami zapasowymi.
Zarządzanie kopiami zapasowymi za pomocą ClusterControl
W ten sam sposób, w jaki możesz scentralizować zarządzanie bazą danych i kopiami zapasowymi z tej samej platformy za pomocą Cloud SQL, możesz użyć ClusterControl do kilku zadań zarządzania związanych z bazą danych PostgreSQL.
ClusterControl to kompleksowy system zarządzania bazami danych typu open source, który automatyzuje funkcje wdrażania i zarządzania, a także monitorowanie kondycji i wydajności. ClusterControl wspiera wdrażanie, zarządzanie, monitorowanie i skalowanie dla różnych technologii i środowisk baz danych. Możesz więc na przykład utworzyć naszą instancję maszyny wirtualnej w Google Cloud i wdrożyć/importować naszą usługę bazy danych za pomocą ClusterControl.
Tworzenie kopii zapasowej
W tym zadaniu przejdź do ClusterControl -> Wybierz Cluster -> Kopia zapasowa -> Utwórz kopię zapasową.
Możesz utworzyć nową kopię zapasową lub skonfigurować zaplanowaną. W naszym przykładzie natychmiast utworzymy pojedynczą kopię zapasową.
Należy wybrać jedną metodę, serwer, z którego zostanie pobrana kopia zapasowa i gdzie chcesz przechowywać kopię zapasową. Możesz również przesłać naszą kopię zapasową do chmury (AWS, Google lub Azure), włączając odpowiedni przycisk.
Następnie określ użycie kompresji, poziom kompresji, szyfrowanie i okres przechowywania dla kopii zapasowej.
Jeśli włączyłeś opcję przesyłania kopii zapasowej do chmury, zobaczysz sekcji, aby określić dostawcę chmury (w tym przypadku Google Cloud) i poświadczenia (ClusterControl -> Integracje -> Dostawcy chmury). W przypadku Google Cloud używa Cloud Storage, więc musisz wybrać Bucket lub nawet utworzyć nowy, aby przechowywać kopie zapasowe.
W sekcji kopii zapasowej można zobaczyć postęp tworzenia kopii zapasowej oraz informacje takie jak metoda, rozmiar, lokalizacja i inne.
Wnioski
Google Cloud może być dobrą opcją do przechowywania kopii zapasowych PostgreSQL i oferuje różne produkty, które to umożliwiają. Nie jest jednak konieczne, aby Twoje bazy danych PostgreSQL były tam uruchomione, ponieważ możesz ich używać tylko jako lokalizacji przechowywania.
Narzędzie GSutil to fajny produkt do zarządzania danymi Cloud Storage z wiersza poleceń, łatwy w użyciu i szybki.
Możesz także połączyć Google Cloud i ClusterControl, aby ulepszyć środowisko wysokiej dostępności PostgreSQL i system monitorowania. Jeśli chcesz dowiedzieć się więcej o PostgreSQL w Google Cloud, możesz sprawdzić nasz wpis na blogu o głębokim nurkowaniu.