PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Opcje kopii zapasowej w chmurze dla PostgreSQL

Ten blog został zaktualizowany 27.11.18 i 29.11.18, aby wprowadzić zmiany zgodnie z zaleceniami naszych wspaniałych komentatorów!

Podobnie jak w przypadku każdego innego elementu firmy, bazy danych są niezwykle ważne w jej wewnętrznym działaniu.

Niezależnie od tego, czy jest to rdzeń firmy, czy tylko inny komponent, bazy danych powinny być regularnie tworzone i przechowywane w bezpiecznych lokalizacjach, aby możliwe było ich odzyskanie w przyszłości.

Czy powinienem wykonać kopię zapasową w chmurze?

Ogólną zasadą jest posiadanie co najmniej 3 kopii wartościowego przedmiotu i przechowywanie tych kopii zapasowych w różnych lokalizacjach. Kopie zapasowe na tym samym dysku są bezużyteczne, jeśli sam dysk umiera, kopie zapasowe tego samego hosta są również zagrożone, jeśli host ulegnie awarii, a kopie zapasowe tych samych budynków są również zagrożone, jeśli budynek spłonie (drastyczne i mało prawdopodobne, ale możliwe).

Kopie zapasowe w chmurze oferują proste rozwiązanie w przypadku tworzenia kopii zapasowych poza siedzibą firmy, bez konieczności uruchamiania nowego sprzętu w dodatkowej lokalizacji. Istnieje wiele różnych usług w chmurze, które oferują przechowywanie kopii zapasowych, a wybór właściwej będzie zależał od potrzeb w zakresie tworzenia kopii zapasowych, wymagań dotyczących rozmiaru, kosztów i bezpieczeństwa.

Korzyści z posiadania kopii zapasowych w chmurze jest wiele, ale głównie dotyczą przechowywania tych kopii zapasowych w innej lokalizacji niż główna baza danych, co pozwala nam mieć sieć bezpieczeństwa w przypadku odzyskiwania po awarii. Chociaż nie będziemy szczegółowo omawiać konfiguracji każdej z tych opcji tworzenia kopii zapasowych, omówimy kilka różnych pomysłów i konfiguracji kopii zapasowych.

Przechowywanie kopii zapasowych w chmurze ma pewne wady, począwszy od transferu. Jeśli kopie zapasowe bazy danych są bardzo duże, faktyczne przesłanie może zająć dużo czasu, a nawet może zwiększyć koszty, jeśli usługa w chmurze pobiera opłaty za transfer przepustowości. Zaleca się kompresję, aby utrzymać niski czas i koszty.

Bezpieczeństwo może być kolejnym problemem związanym z hostingiem kopii zapasowych w chmurze, podczas gdy niektóre firmy mają ścisłe wytyczne dotyczące tego, gdzie są przechowywane i gdzie znajdują się ich dane. Jeśli chodzi o bezpieczeństwo, wszelkie kopie zapasowe można zaszyfrować przed wyeksportowaniem ich do usługi hostingu w chmurze.

Opcje kopii zapasowej w chmurze

Istnieje kilka różnych sposobów tworzenia kopii zapasowych bazy danych dla PostgreSQL, a w zależności od typu kopii zapasowej, czas odzyskiwania, rozmiar i opcje infrastruktury będą się różnić. Ponieważ wiele rozwiązań do przechowywania w chmurze to po prostu pamięć masowa z różnymi interfejsami API, każde sprytne rozwiązanie do tworzenia kopii zapasowych można utworzyć za pomocą odrobiny skryptów.

Kopie zapasowe migawek

Migawki to kopie zapasowe zawierające kopię bazy danych PostgreSQL w określonym momencie. Te kopie zapasowe są tworzone albo za pomocą pg_dump, który po prostu zrzuca bazę danych do pojedynczego pliku, albo kopiując podstawowy katalog danych dla PostgreSQL. Każdy z nich można skompresować, skopiować na inne dyski i serwery oraz skopiować do wybranej opcji przechowywania w chmurze.

Korzystanie z pg_dump z kompresją

pg_dump -Fc severalnines > severalnines.dmp

Kopia zapasowa katalogu danych za pomocą pg_basebackup

Program pg_basebackup może być użyty do bardzo łatwego utworzenia podstawowej kopii zapasowej. Aby uzyskać więcej informacji o wszystkich funkcjach i sposobie ich konfiguracji, odwiedź oficjalną dokumentację używanej wersji PostgreSQL.

pg_basebackup --format=tar -z -D severalnines_basebackup

Amazon S3

Dzięki platformie Amazon AWS, S3 to usługa przechowywania danych, która może być używana do przechowywania kopii zapasowych baz danych. Podczas gdy kopie zapasowe można przesyłać za pośrednictwem interfejsu internetowego, Amazon CLI (interfejs wiersza poleceń) może być używany do robienia tego z wiersza poleceń i za pomocą skryptów automatyzacji tworzenia kopii zapasowych. Informacje o AWS CLI można znaleźć tutaj. Jeśli kopie zapasowe mają być przechowywane przez bardzo długi czas, a czas odzyskiwania nie stanowi problemu, kopie zapasowe można przenieść do usługi Amazon Glacier, zapewniając znacznie tańsze długoterminowe przechowywanie.

aws s3 cp severalnines.dmp s3://severalninesbucket/backups

Amazon ma również różne regiony swoich usług na całym świecie. Mimo że mają dobrą historię dostępności, rozpowszechnianie kopii zapasowych w wielu regionach zwiększa możliwości odzyskiwania po awarii i zmniejsza ryzyko utraty cennych danych.

Microsoft Azure Storage

Platforma chmurowa firmy Microsoft, Azure, ma opcje przechowywania z własnym interfejsem wiersza poleceń, informacje można znaleźć tutaj.

az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup

Wszelkie inne nowoczesne usługi przechowywania w chmurze powinny oferować podobne narzędzia do kopiowania kopii zapasowych na ich serwery w chmurze, aby uzyskać szczegółowe informacje, zapoznaj się z ich dokumentacją.

Kopie zapasowe w trybie gotowości

Czasami same kopie zapasowe mogą być bardzo duże, nawet jeśli są skompresowane, a przesyłanie codziennej lub cotygodniowej kopii zapasowej do usługi w chmurze może być wykluczone ze względu na szybkość przepustowości i/lub koszty. Dlatego uzyskanie kopii zapasowej w chmurze w celu jej przechowywania jest znacznie trudniejsze.

Jednym ze sposobów, aby to zrobić, jest uruchomienie ciepłej lub gorącej rezerwy w wirtualnej maszynie opartej na chmurze, takiej jak instancja EC2 firmy Amazon, gdzie jest to dokładna kopia głównej bazy danych master i jedyne dane, które są przesyłane do instancji w chmurze to jakiekolwiek zmiany, a nie kolejna kopia całej bazy danych. Wymagałoby to przeniesienia całej bazy danych na raz, ale potem tylko zmiany muszą zostać przeniesione.

Ale czy serwer rezerwowy jest rzeczywiście kopią zapasową? Jeśli baza danych master ulegnie awarii, rezerwę można zmienić w bazę master i przekierować do niej aplikacje, jednak jeśli celem jest tworzenie kopii zapasowych na określony czas w ciągu ostatniego tygodnia / miesięcy, to nie zadziała.

Aby to naprawić, można zrobić kilka rzeczy. Sam tryb gotowości może być zmuszony do opóźnienia, przyswajając dane tylko wtedy, gdy na przykład ma jeden dzień. Innym jest tworzenie kopii zapasowych w jeden z tradycyjnych sposobów (pg_dump, kopia katalogu danych) w trybie gotowości w chmurze, co oznacza, że ​​te kopie zapasowe nie będą musiały być przesyłane przez sieć, ponieważ są tworzone na samej maszynie w chmurze. Transfery w sieci są zwykle szybsze i tańsze.

Kopie zapasowe ClusterControl i chmura

Kilkadziesiąt dziewięć stworzyło ClusterControl, system zarządzania bazami danych, który pomaga zarządzać wieloma różnymi bazami danych, w tym PostgreSQL. Jest to najlepszy zestaw narzędzi dla każdego administratora bazy danych lub systemu, który zapewnia pełną kontrolę i widoczność swoich baz danych oraz zawiera bardzo przydatne funkcje tworzenia kopii zapasowych.

Dzięki ClusterControl kopie zapasowe baz danych PostgreSQL można łatwo zarządzać, planować i konfigurować, aby automatycznie kopiować kopie zapasowe wykonane do usług „przechowywania w chmurze”, w tym Amazon S3, Microsoft Azure i Google Cloud. Dzięki temu nie ma potrzeby tworzenia skryptów niestandardowych narzędzi do przesyłania kopii zapasowych do chmury, a także zapewnia ogólnie ładny interfejs użytkownika do tworzenia kopii zapasowych.

Tworzenie kopii zapasowych naszych baz danych powinno mieć miejsce zawsze, a przechowywanie ich w drugiej, trzeciej i czwartej lokalizacji jest bardzo dobrą i powszechną praktyką. Dodanie opcji chmury zwiększa możliwości odzyskiwania po awarii i dodaje kolejną warstwę stabilności zaplecza dla firmy, gdzie w wielu przypadkach znika baza danych, a firma znika. Odkrywanie dzisiaj opcji tworzenia kopii zapasowych w chmurze może wyeliminować jutro katastrofę.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL, stan SQL:42601

  2. Skopiuj tabelę (wraz z indeksami) w postgres

  3. Jak wypełnić lukę w zabezpieczeniach PostgreSQL

  4. Generowanie identyfikatora UUID w instrukcji Postgres for Insert?

  5. jak wykonać skrypt .sql na heroku?