Migrering av program

Slutförd

När du har migrerat databasen från en lokal plats till Azure måste du uppdatera dina befintliga program så att de kan komma åt PostgreSQL på den nya platsen.

Din ursprungliga lokala server och databas innehåller roller som definierar de behörigheter som är associerade med användare, vilka åtgärder de kan utföra och de objekt som de utför dessa åtgärder över. Azure Database for PostgreSQL använder samma autentiserings- och auktoriseringsmekanismer som PostgreSQL som körs lokalt.

I den här lektionen utforskar du de uppdateringar du behöver göra för dina program för att ansluta till din nyligen migrerade Azure Database for PostgreSQL.

Skapa användarrollerna manuellt

När du överför en PostgreSQL-databas till Azure Database for PostgreSQL med Azure Database Migration Service kopieras inte rollerna och rolltilldelningarna. Du måste återskapa nödvändiga roller och användarkonton manuellt för administratören och användarna av tabellerna i måldatabasen. Du använder psql- eller pgAdmin-verktygen för att utföra dessa uppgifter. Kör kommandot CREATE ROLE. Du använder GRANT kommandot för att tilldela nödvändiga privilegier till en roll. Till exempel:

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

Kommentar

Du använder createuser också kommandot från bash-prompten för att skapa PostgreSQL-roller.

Om du vill visa befintliga roller i den lokala databasen kör du följande SQL-instruktion:

SELECT rolname
FROM pg_roles;

Du kan använda kommandot \du i psql-verktyget för att visa de privilegier som tilldelats roller.

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

Kommentar

Observera att Azure Database for PostgreSQL lägger till några egna roller. De här rollerna omfattar azure_pg_admin, azure_superuseroch den administratörsanvändare som du angav när du skapade tjänsten. Du loggar in med dina administrativa konton, men de andra två rollerna är reserverade för användning av Azure – du bör inte försöka använda dem.

Konfigurera om program

Att konfigurera om ett program för att ansluta till Azure Database for PostgreSQL är en enkel process. Det är dock viktigare att fastställa en strategi för migreringsprogram.

Överväganden vid omkonfiguration av PostgreSQL-program

I en företagsmiljö kan du ha många program som körs mot samma PostgreSQL-databaser. Det kan finnas ett stort antal användare som kör dessa program. Du vill vara säker på att när du byter från det befintliga systemet till Azure Database for PostgreSQL kommer dina system fortfarande att fungera, användarna kan fortsätta att utföra sina jobb och dina affärskritiska åtgärder fortsätter att fungera. Modul 1, lektion 2, Överväganden för migrering, diskuterade många av problemen i allmänna termer. När du migrerar en PostgreSQL-databas till Azure finns det några detaljer att tänka på:

  • Om du utför en offlinemigrering kan data i den ursprungliga PostgreSQL-databasen och de nya databaserna som körs i Azure börja avvika snabbt om den gamla databasen fortfarande används. En offlinemigrering är lämplig när du tar ett system ur drift helt under en kort stund och sedan växlar alla program till det nya systemet innan du startar igen. Den här metoden kanske inte är möjlig för ett affärskritiskt system. Om du migrerar till PostgreSQL som körs på en virtuell Azure-dator konfigurerar du PostgreSQL-replikering mellan ditt lokala system och det som körs i Azure. Intern PostgreSQL-replikering fungerar endast i en riktning, men lösningar från tredje part är tillgängliga som stöder dubbelriktad replikering mellan PostgreSQL-servrar (dessa lösningar fungerar inte med Azure Database for PostgreSQL).
  • Om du utför en onlinemigrering konfigurerar Azure Database for PostgreSQL-tjänsten replikering från den lokala databasen till databasen som körs i Azure. Efter den första dataöverföringen säkerställer replikeringen att alla ändringar som görs i den lokala databasen kopieras till databasen i Azure, men inte tvärtom.

I båda fallen bör du se till att du inte förlorar livedata genom en oavsiktlig överskrivning. I onlinescenariot kan till exempel ett program som är anslutet till databasen som körs i Azure Database for PostgreSQL få sina ändringar blint överskrivna av ett program som fortfarande använder den lokala databasen. Med detta i åtanke bör du överväga följande metoder:

  • Migrera program baserat på deras arbetsbelastningstyp. Ett program som endast har åtkomst till data för läsning kan flytta säkert till databasen som körs i Azure Database for PostgreSQL och ser alla ändringar som görs av program som fortfarande använder den lokala databasen. Du kan också använda den omvända strategin om skrivskyddade program inte kräver helt uppdaterade data.
  • Migrera användare baserat på deras arbetsbelastningstyp. Den här strategin liknar den tidigare, förutom att du kanske har användare som bara genererar rapporter medan andra ändrar data. Du kan ha samma program konfigurerat för att ansluta till lämplig databas enligt användarkraven.
  • Migrera program baserat på de datauppsättningar som de använder. Om olika program använder olika delmängder av data kanske du kan migrera dessa program oberoende av varandra.

Konfigurera om ett program

Om du vill konfigurera om ett program pekar du det på den nya databasen. De flesta välskrivna program isolerar anslutningslogik, och detta bör vara den enda delen av koden som kräver ändring. I många fall kan anslutningsinformationen lagras som konfigurationsinformation – du behöver bara uppdatera den informationen.

Du hittar anslutningsinformationen för din Azure Database for PostgreSQL-tjänst i Azure-portalen på sidan Anslut ionssträngar för din tjänst. Azure tillhandahåller information för många vanliga programmeringsspråk och ramverk.

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

Öppna nätverksportar

Som vi nämnde i lektion 1 i den här modulen är Azure Database for PostgreSQL en skyddad tjänst som körs bakom en brandvägg. Klienter kan inte ansluta om inte deras IP-adress identifieras av tjänsten. Du måste lägga till IP-adresser eller adressblockintervall för klienter som kör program som behöver ansluta till dina databaser.

Testa och verifiera program

Innan du byter program och användare till den nya databasen är det viktigt att se till att du har konfigurerat allt korrekt.

Börja med "torrkörande" program och anslut varje roll för att säkerställa att rätt funktioner är tillgängliga.

Utför sedan "blöta tester" för att efterlikna det typiska antalet användare som kör representativa arbetsbelastningar samtidigt under en tidsperiod. Övervaka systemet och kontrollera att du har allokerat tillräckligt med resurser till din Azure Database for PostgreSQL-tjänst.

Nu kan du börja distribuera systemet till användare. Det kan vara fördelaktigt att implementera någon form av "kanarietestning", där en liten delmängd användare överförs till systemet omedvetet. Detta ger dig en opartisk uppfattning om huruvida användarna har samma, bättre eller sämre upplevelse med den nya databasen.