Wprowadzenie do usługi Azure Database for PostgreSQL

Ukończone

Usługa Azure Database for PostgreSQL jest dostępna w wersjach wieloserwerowych.

Jako deweloper bazy danych z wieloletnim doświadczeniem w uruchamianiu lokalnych instalacji postgreSQL i zarządzaniu nimi chcesz dowiedzieć się, jak usługa Azure Database for PostgreSQL obsługuje i skaluje jego funkcje.

W tej lekcji zapoznasz się z cennikiem, obsługą wersji, replikacją i opcjami skalowania usługi Azure Database for PostgreSQL.

Azure Database for PostgreSQL

Usługa Azure Database for PostgreSQL to implementacja społecznościowej wersji bazy danych PostgreSQL. Usługa udostępnia typowe funkcje używane przez typowe systemy PostgreSQL, w tym obsługę geoprzestrzeni i wyszukiwanie pełnotekstowe.

Firma Microsoft zaadaptowała program PostgreSQL dla platformy Azure i jest ściśle zintegrowana z wieloma usługami platformy Azure. Usługa Azure Database for PostgreSQL jest w pełni zarządzana przez firmę Microsoft. Firma Microsoft obsługuje aktualizacje i poprawki oprogramowania oraz zapewnia umowę SLA gwarantującą dostępność na 99,99%. Oznacza to, że możesz po prostu skoncentrować się na uruchomionych bazach danych i aplikacjach przy użyciu usługi.

W każdym wystąpieniu tej usługi można wdrożyć wiele baz danych.

Warstwy cenowe

Podczas tworzenia wystąpienia usługi Azure Database for PostgreSQL należy określić zasoby obliczeniowe i magazynowe, które chcesz przydzielić, wybierając warstwę cenową. Warstwa cenowa łączy liczbę rdzeni procesora wirtualnego, ilość dostępnego miejsca do magazynowania i różne opcje tworzenia kopii zapasowych. Im więcej zasobów przydzielasz, tym wyższy koszt.

Usługa Azure Database for PostgreSQL używa magazynu do przechowywania plików bazy danych, plików tymczasowych, dzienników transakcji i dzienników serwera. Opcjonalnie możesz określić, że magazyn będzie dostępny do zwiększenia, gdy zbliżasz się do bieżącej pojemności. Jeśli nie wybierzesz tej opcji, serwery, na których zabraknie miejsca do magazynowania, będą nadal działać, ale działają jako tylko do odczytu.

Witryna Azure Portal grupuje warstwy cenowe na trzy szerokie zakresy:

  • Podstawowa, która jest odpowiednia dla małych systemów i środowisk programistycznych, ale ma zmienną wydajność we/wy.
  • Ogólnego przeznaczenia, który zapewnia przewidywalną wydajność, do 6000 operacji we/wy na sekundę, w zależności od liczby rdzeni procesora i dostępnego miejsca do magazynowania.
  • Zoptymalizowana pod kątem pamięci, która używa do 32 rdzeni procesorów wirtualnych zoptymalizowanych pod kątem pamięci, a także zapewnia przewidywalną wydajność do 6000 operacji we/wy na sekundę.

Firma Microsoft ma również opcję dużego magazynu w wersji zapoznawczej, która może aprowizować do 16 TB miejsca do magazynowania i obsługiwać maksymalnie 20 000 operacji we/wy na sekundę.

Możesz dostosować wymaganą liczbę rdzeni procesora i magazynu. Zasoby przetwarzania można skalować w górę i w dół — nie można skalować magazynu tylko w górę i przełączać się między warstwami cenowymi Ogólnego przeznaczenia i Zoptymalizowane pod kątem pamięci zgodnie z potrzebami po utworzeniu baz danych. Płacisz tylko za to, czego potrzebujesz.

Image showing the pricing tiers in the Azure portal

Uwaga

Jeśli zmienisz liczbę rdzeni procesora, platforma Azure utworzy nowy serwer z tą alokacją obliczeniową. Po uruchomieniu serwera połączenia klienckie są przełączane na nowy serwer. Ten przełącznik może potrwać do minuty. W tym interwale nie można nawiązać nowych połączeń, a wszystkie transakcje w locie zostaną wycofane.

Jeśli zmienisz tylko rozmiar magazynu opcji tworzenia kopii zapasowych, nie będzie żadnych przerw w działaniu usługi.

Warstwa cenowa i przydzielone zasoby przetwarzania określają maksymalną liczbę współbieżnych połączeń, które będzie obsługiwać usługa. Jeśli na przykład wybierzesz warstwę cenową Ogólnego przeznaczenia i przydzielisz 64 rdzenie wirtualne, usługa obsługuje 1900 połączeń współbieżnych. Warstwa Podstawowa z dwoma rdzeniami wirtualnymi obsługuje maksymalnie 100 połączeń współbieżnych. Sama platforma Azure wymaga pięciu z tych połączeń do monitorowania serwera. W przypadku przekroczenia liczby dostępnych połączeń klienci otrzymają błąd KRYTYCZNY: niestety, zbyt wielu klientów.

Ceny mogą ulec zmianie. Aby uzyskać najnowsze informacje, odwiedź stronę cennika usługi Azure Database for PostgreSQL.

Parametry serwera

W lokalnej instalacji bazy danych PostgreSQL należy ustawić parametry konfiguracji serwera w pliku postgresql.conf . Użyj usługi Azure Database for PostgreSQL, aby zmodyfikować parametry konfiguracji za pośrednictwem strony Parametry serwera. Nie wszystkie parametry instalacji lokalnej bazy danych PostgreSQL są istotne dla usługi Azure Database for PostgreSQL, dlatego na stronie Parametry serwera są wyświetlane tylko te parametry, które są odpowiednie dla platformy Azure.

Image showing the Server parameters page in the Azure portal

Zmiany parametrów oznaczonych jako Dynamiczne zostaną zastosowane natychmiast. Parametry statyczne wymagają ponownego uruchomienia serwera. Uruchom ponownie serwer przy użyciu przycisku Uruchom ponownie na stronie Przegląd w portalu:

Image showing the Overview page in the Azure portal with the Restart button highlighted

Wysoka dostępność

Usługa Azure Database for PostgreSQL jest wysoce dostępna. Zawiera wbudowane mechanizmy wykrywania niepowodzeń i trybu failover. Jeśli węzeł przetwarzania zostanie zatrzymany z powodu problemu ze sprzętem lub oprogramowaniem, nowy węzeł zostanie przełączony, aby go zastąpić. Wszystkie połączenia aktualnie korzystające z tego węzła zostaną porzucone, ale automatycznie otwarte względem nowego węzła. Wszystkie transakcje wykonywane przez węzeł, który kończy się niepowodzeniem, zostaną wycofane. Z tego powodu należy zawsze upewnić się, że klienci są skonfigurowani do wykrywania i ponawiania prób operacji zakończonych niepowodzeniem.

Obsługiwane wersje bazy danych PostgreSQL

Usługa Azure Database for PostgreSQL obecnie obsługuje program PostgreSQL w wersji 11 z powrotem do wersji 9.5. Określasz, która wersja bazy danych PostgreSQL ma być używana podczas tworzenia wystąpienia usługi. Firma Microsoft ma na celu zaktualizowanie usługi w miarę dostępności nowych wersji bazy danych PostgreSQL i zachowa zgodność z poprzednimi dwoma głównymi wersjami.

Platforma Azure automatycznie zarządza uaktualnieniami baz danych między wersjami pomocniczymi bazy danych PostgreSQL, ale nie wersjami głównymi. Jeśli na przykład masz bazę danych korzystającą z bazy danych PostgreSQL w wersji 10, platforma Azure może automatycznie uaktualnić bazę danych do wersji 10.1. Jeśli chcesz przełączyć się na wersję 11, musisz wyeksportować dane z baz danych w bieżącym wystąpieniu usługi, utworzyć nowe wystąpienie usługi Azure Database for PostgreSQL i zaimportować dane do tego nowego wystąpienia.

Węzły koordynatora i procesu roboczego

Dane są podzielone na fragmenty i dystrybuowane między węzłami roboczymi. Aparat zapytań w koordynatorze może zrównać złożone zapytania, kierując przetwarzanie do odpowiednich węzłów roboczych. Węzły procesu roboczego są wybierane zgodnie z tym, które fragmenty przechowują przetwarzane dane. Następnie koordynator gromadzi wyniki z węzłów procesu roboczego przed wysłaniem ich z powrotem do klienta. Bardziej proste zapytania mogą być wykonywane przy użyciu tylko jednego węzła roboczego. Klienci łączą się również z koordynatorem i nigdy nie komunikują się bezpośrednio z węzłem procesu roboczego.

W razie potrzeby można skalować liczbę węzłów procesu roboczego w górę i w dół w usłudze.

Dystrybucja danych

Dane są dystrybuowane między węzłami procesu roboczego przez utworzenie tabel rozproszonych . Tabela rozproszona jest podzielona na fragmenty, a każdy fragment jest przydzielany do magazynu w węźle roboczym. Wskazujesz, jak podzielić dane, definiując kolumnę jako kolumnę dystrybucji . Dane są podzielone na fragmenty na podstawie wartości danych w tej kolumnie. Podczas projektowania tabeli rozproszonej należy uważnie wybrać kolumnę dystrybucji. Należy użyć kolumny z dużą liczbą odrębnych wartości, które zwykle będą używane do grupowania powiązanych wierszy. Na przykład w tabeli dla systemu handlu elektronicznego, który przechowuje informacje o zamówieniach klientów, identyfikator klienta może być rozsądną kolumną dystrybucji. Wszystkie zamówienia dla danego klienta będą przechowywane w tym samym fragmentzie, ale zamówienia dla wszystkich klientów będą rozłożone na fragmenty.

Można również tworzyć tabele referencyjne . Te tabele zawierają dane odnośników, takie jak nazwy miast lub kodów stanu. Tabela referencyjna jest replikowana w całości do każdego węzła roboczego. Dane w tabeli referencyjnej powinny być stosunkowo statyczne; każda zmiana wymaga zaktualizowania każdej kopii tabeli.

Na koniec można tworzyć tabele lokalne . Tabela lokalna nie jest fragmentowana, ale jest przechowywana w węźle koordynacji. Użyj tabel lokalnych do przechowywania małych tabel z danymi, które prawdopodobnie nie będą wymagane przez sprzężenia. Przykłady obejmują nazwy użytkowników i ich szczegóły logowania.

Replikowanie danych w usłudze Azure Database for PostgreSQL

Repliki tylko do odczytu są przydatne do obsługi obciążeń intensywnie korzystających z odczytu. Połączenia klienta można rozłożyć między repliki, co ułatwia obciążenie pojedynczego wystąpienia usługi. Jeśli klienci znajdują się w różnych regionach świata, należy użyć replikacji między regionami, aby umieścić dane w pobliżu każdego zestawu klientów i zmniejszyć opóźnienie.

Repliki można również używać w ramach planu awaryjnego odzyskiwania po awarii. Jeśli serwer główny stanie się niedostępny, nadal może być możliwe nawiązanie połączenia z repliką.

Uwaga

Jeśli serwer główny zostanie utracony lub usunięty, zamiast tego wszystkie repliki tylko do odczytu staną się serwerami do odczytu i zapisu. Te serwery będą jednak niezależne od siebie, więc wszelkie zmiany wprowadzone w danych na jednym serwerze nie zostaną skopiowane do pozostałych serwerów.

Ustanawianie repliki

Replika tylko do odczytu zawiera kopię baz danych przechowywanych na oryginalnym serwerze — nazywaną wzorcem. Aby utworzyć replikę wzorca, użyj witryny Azure Portal lub interfejsu wiersza polecenia.

Image showing the Replication page for the Azure Database for PostgreSQL service

Podczas tworzenia repliki tylko do odczytu platforma Azure tworzy nowe wystąpienie usługi Azure Database for PostgreSQL, a następnie kopiuje bazy danych z serwera głównego do nowego serwera. Replika działa w trybie tylko do odczytu. Próba zmodyfikowania danych zakończy się niepowodzeniem.

Opóźnienie repliki

Replikacja nie jest synchroniczna, a zmiany wprowadzone w danych na serwerze głównym mogą zająć trochę czasu w replikach. Aplikacje klienckie, które łączą się z replikami, muszą być w stanie poradzić sobie z tym poziomem spójności ostatecznej. Usługa Azure Monitor umożliwia śledzenie opóźnienia czasu replikacji przy użyciu metryk Maksymalne opóźnienie między replikami i opóźnieniem repliki.

Zarządzanie i monitorowanie

Możesz użyć znanych narzędzi, takich jak pg Administracja, aby nawiązać połączenie z usługą Azure Database for PostgreSQL w celu zarządzania bazami danych i monitorowania ich. Jednak niektóre funkcje ukierunkowane na serwer, takie jak wykonywanie kopii zapasowej i przywracanie serwera, nie są dostępne, ponieważ serwer jest zarządzany i obsługiwany przez firmę Microsoft.

Image showing the pgAdmin tool connected to Azure Database for PostgreSQL

Narzędzia platformy Azure do monitorowania usługi Azure Database for PostgreSQL

Platforma Azure udostępnia obszerny zestaw usług używanych do monitorowania wydajności serwera i bazy danych oraz rozwiązywania problemów. Te usługi umożliwiają wyświetlenie sposobu, w jaki postgreSQL korzysta z przydzielonych zasobów platformy Azure. Te informacje służą do oceny, czy chcesz skalować system, modyfikować strukturę tabel i indeksów w bazach danych oraz wizualizować statystyki środowiska uruchomieniowego i inne zdarzenia. Dostępne usługi obejmują:

  • Azure Monitor. Usługa Azure Database for PostgreSQL udostępnia metryki, które umożliwiają śledzenie elementów, takich jak użycie procesora CPU i magazynu, współczynniki we/wy, zajętość pamięci, liczba aktywnych połączeń i opóźnienie replikacji:

    Image showing the Azure Monitor with metrics for Azure Database for PostgreSQL

  • Dzienniki serwera. Platforma Azure udostępnia dzienniki dla każdego serwera PostgreSQL. Można je pobrać z witryny Azure Portal:

    Image showing the server logs for an instance of the Azure Database for PostgreSQL service

  • Magazyn zapytań i wydajność zapytań Szczegółowe informacje. Usługa Azure Database for PostgreSQL przechowuje informacje o zapytaniach uruchamianych względem baz danych na serwerze i zapisuje je w bazie danych o nazwie azure_sys w schemacie query_store . Wykonaj zapytanie względem widoku query_store.qs_view , aby wyświetlić te informacje. Domyślnie usługa Azure Database for PostgreSQL nie przechwytuje żadnych informacji o zapytaniach, ponieważ nakłada niewielkie obciążenie, ale możesz włączyć śledzenie, ustawiając właściwość serwera pg_qs.query_capture_mode na ALL lub TOP.

    Image showing the server server parameters page for Azure Database for PostgreSQL

    Można również skonfigurować magazyn zapytań, aby przechwytywać informacje o zapytaniach, które spędzają czas oczekiwania. Zapytanie może być konieczne odczekać, gdy inne zapytanie zwalnia blokadę w tabeli lub ponieważ zapytanie wykonuje wiele operacji we/wy lub ponieważ pamięć jest krótka. Te informacje są widoczne w widoku query_store.runtime_stats_view .

    Jeśli wolisz wizualizować te statystyki zamiast uruchamiać instrukcje SQL, użyj szczegółowych informacji o wydajności zapytań w witrynie Azure Portal:

    Image showing Query Performance Insight

  • Zalecenia dotyczące wydajności. Narzędzie Rekomendacje wydajności, dostępne również w witrynie Azure Portal, sprawdza, czy zapytania są uruchomione przez aplikacje. Analizuje również struktury w bazie danych i zaleca organizowanie danych — oraz to, czy należy rozważyć dodawanie lub usuwanie indeksów.

Łączność z klientem

Usługa Azure Database for PostgreSQL działa za zaporą. Aby uzyskać dostęp do usługi i bazy danych, należy dodać regułę zapory dla zakresów adresów IP, z których klienci nawiązują połączenie. Jeśli musisz uzyskać dostęp do usługi z poziomu platformy Azure — na przykład aplikacji działającej przy użyciu usług aplikacja systemu Azure Services — musisz również włączyć dostęp do usług platformy Azure.

Konfigurowanie zapory

Najprostszym sposobem skonfigurowania zapory jest użycie ustawień zabezpieczeń Połączenie ion dla usługi w witrynie Azure Portal. Dodaj regułę dla każdego zakresu adresów IP klienta. Ta strona służy również do wymuszania połączeń SSL z usługą.

Image showing the firewall configuration for Azure Database for PostgreSQL

Kliknij pozycję Dodaj adres IP klienta na pasku narzędzi, aby dodać adres IP komputera stacjonarnego.

Jeśli skonfigurowano repliki tylko do odczytu, należy dodać regułę zapory do każdego z nich, aby były dostępne dla klientów.

Biblioteki połączeń klienta

Jeśli piszesz własne aplikacje klienckie, musisz użyć odpowiedniego sterownika bazy danych, aby nawiązać połączenie z bazą danych PostgreSQL. Wiele z tych bibliotek jest zależnych od języka programowania. Są one utrzymywane przez niezależne strony trzecie. Usługa Azure Database for PostgreSQL obsługuje biblioteki klienckie dla języków Python, PHP, Node.js, Java, Ruby, Go, C# (.NET), ODBC, C i C++.

Logika ponawiania prób klienta

Jak wspomniano wcześniej, niektóre zdarzenia — takie jak przejście w tryb failover podczas odzyskiwania o wysokiej dostępności i skalowanie zasobów procesora CPU w górę — może spowodować krótką utratę łączności. Wszystkie transakcje w toku zostaną wycofane. Usługa Azure Database for PostgreSQL automatycznie przekierowuje połączonego klienta do węzła roboczego, ale wszystkie operacje wykonywane przez klienta w tym czasie będą zwracać błąd. To zdarzenie należy traktować jako wyjątek przejściowy. Kod aplikacji powinien być przygotowany do przechwytywania tych wyjątków i ponawiania próby.

Funkcje postgreSQL obsługiwane w usłudze Azure Database for PostgreSQL

Usługa Azure Database for PostgreSQL obsługuje większość funkcji najczęściej używanych przez bazy danych PostgreSQL, ale istnieją pewne wyjątki. Jeśli potrzebujesz nieobsługiwanej funkcji, musisz przerobić bazę danych i kod aplikacji, aby usunąć tę zależność, lub rozważyć uruchomienie bazy danych PostgreSQL na maszynie wirtualnej. W tym ostatnim przypadku trzeba będzie wziąć na siebie odpowiedzialność za zarządzanie serwerem i utrzymywanie go.

Obsługiwane rozszerzenia w usłudze Azure Database for PostgreSQL

Wiele funkcji PostgreSQL jest hermetyzowanych w rozszerzeniach. Rozszerzenia to pakiety obiektów SQL i kodu przechowywanego na serwerze — można je załadować do bazy danych przy użyciu CREATE EXTENSION polecenia . Usługa Azure Database for PostgreSQL obecnie udostępnia wiele powszechnie używanych rozszerzeń dla:

  • Typy danych
  • Funkcje
  • Wyszukiwanie pełnotekstowe
  • Indeksy (bloom, btree_gist i btree_gin)
  • Język plpgsql
  • PostGIS
  • Wiele funkcji administracyjnych

Pakiety dblink i postgres_fdw służą do łączenia jednego serwera PostgreSQL z innym — umożliwia to kodowi na jednym serwerze uzyskiwanie dostępu do danych przechowywanych w innym. W usłudze Azure Database for PostgreSQL można łączyć się tylko między serwerami utworzonymi przy użyciu usługi Azure Database for PostgreSQL. Nie można tworzyć połączeń wychodzących z serwerami PostgreSQL hostowanymi gdzie indziej, takimi jak lokalne lub na maszynie wirtualnej.

Uwaga

Lista obsługiwanych rozszerzeń jest stale przeglądana i może ulec zmianie. Wygenerujesz listę rozszerzeń obsługiwanych przy użyciu następującego zapytania. Pamiętaj, że nie można utworzyć własnych rozszerzeń niestandardowych i przekazać je do usługi Azure Database for PostgreSQL:

SELECT * FROM pg_available_extensions;

Usługa Azure Database for PostgreSQL zawiera bazę danych TimescaleDB jako opcjonalne rozszerzenie. Ta baza danych zawiera funkcje analityczne zorientowane czasowo i inne funkcje, które obsługują obciążenia szeregów czasowych. Aby użyć tej bazy danych, wybierz opcję TIMESCALEDB w parametrze serwera shared_preload_libraries , a następnie uruchom ponownie serwer.

Obsługa języków procedur składowanych i wyzwalaczy

Obsługa języków innych niż plpgsql zwykle wymaga oddzielnego skompilowania procedury składowanej lub kodu wyzwalacza i przekazania skompilowanej biblioteki na serwer. Głównie ze względów bezpieczeństwa nie można tego zrobić w usłudze Azure Database for PostgreSQL. Jeśli masz kod napisany w innych językach, musisz przełączyć go do pliku plpgsql.