Migracja aplikacji

Ukończone

Po przeprowadzeniu migracji bazy danych ze środowiska lokalnego na platformę Azure należy zaktualizować istniejące aplikacje, aby mogły uzyskać dostęp do bazy danych PostgreSQL w nowej lokalizacji.

Oryginalny serwer lokalny i baza danych będą zawierać role, które definiują uprawnienia skojarzone z użytkownikami, operacje, które mogą wykonać, oraz obiekty, nad którymi wykonują te operacje. Usługa Azure Database for PostgreSQL używa tych samych mechanizmów uwierzytelniania i autoryzacji, co usługa PostgreSQL działająca lokalnie.

W tej lekcji zapoznasz się z aktualizacjami, które należy wprowadzić w aplikacjach, aby nawiązać połączenie z nowo zmigrowanym serwerem usługi Azure Database for PostgreSQL.

Ręczne tworzenie ról użytkownika

Podczas transferu bazy danych PostgreSQL do usługi Azure Database for PostgreSQL przy użyciu usługi Azure Database Migration Service role i przypisania ról nie są kopiowane. Należy ręcznie odtworzyć niezbędne role i konta użytkowników dla administratorów i użytkowników tabel w docelowej bazie danych. Aby wykonać te zadania, należy użyć narzędzi psql lub pg Administracja. Uruchom polecenie CREATE ROLE. Polecenie służy GRANT do przypisywania niezbędnych uprawnień do roli. Na przykład:

CREATE ROLE myuseraccount WITH LOGIN NOSUPERUSER CREATEDB PASSWORD 'mY!P@ss0rd';
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuseraccount;

Uwaga

Możesz również użyć createuser polecenia z poziomu wiersza polecenia powłoki bash, aby utworzyć role postgreSQL.

Aby wyświetlić istniejące role w lokalnej bazie danych, uruchom następującą instrukcję SQL:

SELECT rolname
FROM pg_roles;

Możesz użyć \du polecenia w narzędziu psql, aby wyświetlić uprawnienia przypisane do ról.

                              List of roles
   Role name   |               Attributes                                   | Member of
---------------+------------------------------------------------------------+-----------
 azureuser     | Superuser, Create DB                                       | {}
 myuseraccount | Create DB                                                  | {}
 postgres      | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

Uwaga

Pamiętaj, że usługa Azure Database for PostgreSQL dodaje własne role. Te role obejmują azure_pg_admin, azure_superuseri użytkownika administratora określonego podczas tworzenia usługi. Zalogujesz się przy użyciu kont administracyjnych, ale pozostałe dwie role są zarezerwowane do użycia przez platformę Azure — nie należy ich używać.

Ponowne konfigurowanie aplikacji

Ponowne skonfigurowanie aplikacji w celu nawiązania połączenia z usługą Azure Database for PostgreSQL jest prostym procesem. Jednak ważniejsze jest określenie strategii migracji aplikacji.

Zagadnienia dotyczące ponownego konfigurowania aplikacji PostgreSQL

W środowisku firmowym może istnieć wiele aplikacji działających na tych samych bazach danych PostgreSQL. Może istnieć duża liczba użytkowników, którzy uruchamiają te aplikacje. Chcesz mieć pewność, że po przejściu z istniejącego systemu do usługi Azure Database for PostgreSQL systemy będą nadal działać, użytkownicy mogą nadal wykonywać swoje zadania, a operacje krytyczne dla działania firmy pozostaną operacyjne. Moduł 1, lekcja 2, zagadnienia dotyczące migracji, omówił wiele ogólnych problemów. Podczas migracji bazy danych PostgreSQL na platformę Azure należy zwrócić uwagę na pewne kwestie:

  • Jeśli przeprowadzasz migrację w trybie offline, dane w oryginalnej bazie danych PostgreSQL i nowe bazy danych uruchomione na platformie Azure mogą zacząć się szybko rozróżnić, jeśli stara baza danych jest nadal używana. Migracja w trybie offline jest odpowiednia w przypadku całkowitego wyłączenia systemu przez krótki czas, a następnie przełączenia wszystkich aplikacji do nowego systemu przed ponownym uruchomieniem. Takie podejście może nie być możliwe w przypadku systemu krytycznego dla działania firmy. Jeśli przeprowadzasz migrację do bazy danych PostgreSQL uruchomionej na maszynie wirtualnej platformy Azure, skonfigurujesz replikację bazy danych PostgreSQL między systemem lokalnym i uruchomionym na platformie Azure. Natywna replikacja PostgreSQL działa tylko w jednym kierunku, ale dostępne są rozwiązania innych firm, które obsługują replikację dwukierunkową między serwerami PostgreSQL (te rozwiązania nie będą działać z usługą Azure Database for PostgreSQL).
  • Jeśli przeprowadzasz migrację online, usługa Azure Database for PostgreSQL konfiguruje replikację z lokalnej bazy danych do bazy danych uruchomionej na platformie Azure. Po początkowym transferze danych replikacja gwarantuje, że wszelkie zmiany wprowadzone w lokalnej bazie danych zostaną skopiowane do bazy danych na platformie Azure, ale nie w drugą stronę.

W obu przypadkach należy upewnić się, że nie utracisz danych na żywo za pośrednictwem przypadkowego zastąpienia. Na przykład w scenariuszu online aplikacja połączona z bazą danych uruchomioną w usłudze Azure Database for PostgreSQL może mieć zmiany w sposób ślepy nadpisane przez aplikację nadal korzystającą z lokalnej bazy danych. Mając to na uwadze, należy wziąć pod uwagę następujące podejścia:

  • Migrowanie aplikacji na podstawie typu obciążenia. Aplikacja, która uzyskuje dostęp do danych tylko do odczytu, może bezpiecznie przenieść się do bazy danych uruchomionej w usłudze Azure Database for PostgreSQL i zobaczy wszystkie zmiany wprowadzone przez aplikacje nadal korzystające z lokalnej bazy danych. Możesz również przyjąć strategię odwrotną, jeśli aplikacje tylko do odczytu nie wymagają w pełni aktualnych danych.
  • Migrowanie użytkowników na podstawie typu obciążenia. Ta strategia jest podobna do poprzedniej, z tą różnicą, że użytkownicy mogą generować raporty tylko wtedy, gdy inni modyfikują dane. Być może ta sama aplikacja jest skonfigurowana do nawiązywania połączenia z odpowiednią bazą danych zgodnie z wymaganiami użytkownika.
  • Migrowanie aplikacji na podstawie używanych zestawów danych. Jeśli różne aplikacje korzystają z różnych podzestawów danych, możesz migrować te aplikacje niezależnie od siebie.

Ponowne konfigurowanie aplikacji

Aby ponownie skonfigurować aplikację, należy wskazać ją w nowej bazie danych. Większość dobrze napisanych aplikacji wyizoluje logikę połączenia i powinna być jedyną częścią kodu, który wymaga zmiany. W wielu przypadkach informacje o połączeniu mogą być przechowywane jako informacje o konfiguracji — wystarczy zaktualizować te informacje.

Informacje o połączeniu usługi Azure Database for PostgreSQL znajdziesz w witrynie Azure Portal na stronie ciągów Połączenie ion dla usługi. Platforma Azure udostępnia informacje dotyczące wielu typowych języków programowania i struktur.

Image showing the Connection strings page for Azure Database for PostgreSQL item in the Azure portal

Otwieranie portów sieciowych

Jak wspomniano w lekcji 1 tego modułu, usługa Azure Database for PostgreSQL to chroniona usługa, która działa za zaporą. Klienci nie mogą nawiązać połączenia, chyba że ich adres IP zostanie rozpoznany przez usługę. Należy dodać adresy IP lub zakresy bloków adresów dla klientów z uruchomionymi aplikacjami, które muszą łączyć się z bazami danych.

Testowanie i weryfikowanie aplikacji

Przed przełączenie aplikacji i użytkowników do nowej bazy danych ważne jest, aby upewnić się, że wszystko zostało poprawnie skonfigurowane.

Zacznij od "wyschnięcia" aplikacji i połącz każdą rolę, aby upewnić się, że dostępna jest poprawna funkcjonalność.

Następnie wykonaj "testy moczenia", aby naśladować typową liczbę użytkowników, którzy jednocześnie uruchamiają reprezentatywne obciążenia przez pewien czas. Monitoruj system i sprawdź, czy przydzielono wystarczające zasoby do usługi Azure Database for PostgreSQL.

W tym momencie można zacząć wdrażać system dla użytkowników. Korzystne może być zaimplementowanie jakiejś formy "testowania kanarowego", w której mały podzbiór użytkowników jest przenoszony do systemu nieświadomego. Daje to niezachętną opinię co do tego, czy użytkownicy mają takie same, lepsze, czy gorsze doświadczenie z nową bazą danych.