Dela via


Tilläggsöverväganden som är specifika för Azure Database for PostgreSQL – flexibel server

Den här artikeln beskriver några särskilda överväganden som du måste känna till när du använder vissa tillägg i en instans av en flexibel Azure Database for PostgreSQL-server.

Förutsättningar

Läs artikeln om hur du använder PostgreSQL-tillägg för Azure Database for PostgreSQL för att lära dig hur du:

  • Tillåtlistetillägg i Azure Database for PostgreSQL – flexibel server
  • Läs in biblioteken för tillägg som distribuerar binära bibliotek, vilket kräver allokering och åtkomst till delat minne och måste läsas in när servern startar.
  • Installera tillägg i vissa databaser, så att DE SQL-objekt som paketerats i tillägget distribueras i databasen och kan nås i dess kontext.
  • Ta bort tillägg från vissa databaser så att SQL-objekten som paketeras i tillägget tas bort från databasen.
  • Uppdatera SQL-artefakterna som distribueras av ett tillägg som redan är installerat.
  • Visa vilka tillägg som är installerade och deras motsvarande versioner.
  • Lär dig vilka möjliga fel du kan få när du hanterar tillägg i Azure Database for PostgreSQL – flexibel server och vad som kan vara orsaken till var och en av dem.

Tillägg

I följande lista räknas alla tillägg som stöds upp som kräver specifika överväganden när de används i azure database for PostgreSQL– flexibel servertjänst:

  • dblink
  • pg_buffercache
  • pg_cron
  • pg_failover_slots
  • pg_hint_plan
  • pg_prewarm
  • pg_repack
  • pg_stat_statements
  • postgres_fdw
  • pgstattuple

Med dblink tillägget kan du ansluta från en flexibel Azure Database for PostgreSQL-serverinstans till en annan eller en annan databas på samma server. Azure Database for PostgreSQL – flexibel server stöder både inkommande och utgående anslutningar till valfri PostgreSQL-server. Den sändande servern måste tillåta utgående anslutningar till den mottagande servern. På samma sätt måste den mottagande servern tillåta anslutningar från den sändande servern.

Om du planerar att använda det här tillägget rekommenderar vi att du distribuerar dina servrar med integrering av virtuella nätverk. Som standard tillåter integrering av virtuella nätverk anslutningar mellan servrar i det virtuella nätverket. Du kan också välja att använda säkerhetsgrupper för virtuella nätverk för att anpassa åtkomsten.

pg_buffercache

Tillägget pg_buffercache kan användas för att studera innehållet i shared_buffers. Med det här tillägget kan du se om en viss relation cachelagras (i shared_buffers). Det här tillägget kan hjälpa dig att felsöka prestandaproblem (cachelagringsrelaterade prestandaproblem).

Det här tillägget är integrerat med kärninstallationen av PostgreSQL, och det är enkelt att installera.

CREATE EXTENSION pg_buffercache;

pg_cron

Tillägget pg_cron är en enkel, cron-baserad jobbschemaläggare för PostgreSQL som körs i databasen som ett tillägg. Tillägget pg_cron kan köra schemalagda underhållsaktiviteter i en PostgreSQL-databas. Du kan till exempel köra ett periodiskt vakuum av en tabell eller ta bort gamla datajobb.

Tillägget pg_cron kan köra flera jobb parallellt, men det körs högst en instans av ett jobb i taget. Om en andra körning ska starta innan den första slutförs placeras den andra körningen i kö och startas så snart den första körningen är klar. På ett sådant sätt säkerställer det att jobb körs exakt lika många gånger som schemalagt och inte körs samtidigt med sig själva.

Kontrollera att värdet som shared_preload_libraries har angetts innehåller pg_cron. Det här tillägget stöder inte inläsning av biblioteket som effekten av att köra CREATE-TILLÄGGET. Alla försök att köra CREATE EXTENSION om tillägget inte lades till shared_preload_librariesi , eller om servern inte startades om efter att det lades till, resulterar i ett fel vars text säger pg_cron can only be loaded via shared_preload_libraries, och vars tips är Add pg_cron to the shared_preload_libraries configuration variable in postgresql.conf.

Om du vill använda pg_cronkontrollerar du att dess bibliotek läggs till för att läsas in vid serverstart, att det är tillåtet och att det är installerat i alla databaser som du vill interagera med dess funktioner från, med hjälp av de SQL-artefakter som skapas.

Exempel

  1. Ta bort gamla data på lördag klockan 03:30 (GMT).

    SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
    
  2. Så här kör du vakuumet varje dag klockan 10:00 (GMT) i standarddatabasen postgres.

    SELECT cron.schedule('0 10 * * *', 'VACUUM');
    
  3. Så här avbokar du alla aktiviteter från pg_cron.

    SELECT cron.unschedule(jobid) FROM cron.job;
    
  4. Om du vill se alla jobb som för närvarande är schemalagda med pg_cron.

    SELECT * FROM cron.job;
    
  5. För att köra vakuumet varje dag klockan 10:00 (GMT) i databasen test cron under azure_pg_admin rollkontot.

    SELECT cron.schedule_in_database('VACUUM',' 0 10 * * * ', 'VACUUM', 'testcron',null,TRUE);
    

Fler exempel

Från och med pg_cron version 1.4 kan du använda cron.schedule_in_database funktionerna och cron.alter_job för att schemalägga jobbet i en specifik databas och uppdatera ett befintligt schema.

Funktionen cron_schedule_in_database tillåter användarnamnet som en valfri parameter. Om du ställer in användarnamnet på ett värde som inte är null krävs postgreSQL-superanvändarbehörighet och stöds inte i Azure Database for PostgreSQL – flexibel server. Föregående exempel visar körning av den här funktionen med en valfri användarnamnsparameter utelämnad eller inställd på null, som kör jobbet i kontexten för användaren som schemalägger jobbet, som ska ha azure_pg_admin rollbehörigheter.

  1. Ta bort gamla data på lördag klockan 03:30 (GMT) på databasen DBName.

    SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');
    
  2. För att uppdatera eller ändra databasnamnet för det befintliga schemat

    SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
    

pg_failover_slots

Tillägget pg_failover_slots förbättrar Azure Database for PostgreSQL– flexibel server när du arbetar med både logisk replikering och servrar med hög tillgänglighet. Den hanterar effektivt utmaningen i PostgreSQL-standardmotorn som inte bevarar logiska replikeringsplatser efter en redundansväxling. Att underhålla dessa platser är viktigt för att förhindra replikeringspauser eller datamatchningar under ändringar av primär serverrollen, vilket säkerställer driftkontinuitet och dataintegritet.

Tillägget effektiviserar redundansväxlingen genom att hantera nödvändig överföring, rensning och synkronisering av replikeringsplatser, vilket ger en sömlös övergång under ändringar i serverrollen.

Du hittar mer information och instruktioner om hur du använder pg_failover_slots tillägget på github-sidan.

Om du vill använda pg_failover_slots tillägget kontrollerar du att dess bibliotek lästes in när servern startade.

pg_hint_plan

Tillägget pg_hint_plan gör det möjligt att justera PostgreSQL-körningsplaner med hjälp av så kallade "tips" i SQL-kommentarer, till exempel:

/*+ SeqScan(a) */

Tillägget pg_hint_plan läser tipsfraser i en kommentar av det särskilda formulär som ges med SQL-mål-instruktionen. Det specifika formuläret börjar med teckensekvensen "/*+" och slutar med "*/". Tipsfraser består av tipsnamn och följande parametrar som omges av parenteser och avgränsas av blanksteg. Nya rader för läsbarhet kan avgränsa varje tipsfras.

Exempel:

/*+
 HashJoin(a b)
 SeqScan(a)
 */
    SELECT *
    FROM pgbench_branches b
    JOIN pgbench_accounts an ON b.bid = a.bid
    ORDER BY a.aid;

Det föregående exemplet gör att planeraren använder resultatet av en seqscan på-tabell a för att kombinera med tabellen b som en hashjoin.

Om du vill använda pg_hint_plan tillägget kontrollerar du att du tillåterlistning av tillägget, läser in dess bibliotek och installerar tillägget i databasen där du planerar att använda dess funktioner.

pg_prewarm

Tillägget pg_prewarm läser in relationsdata i cacheminnet. Att förvärma dina cacheminnen innebär att dina frågor har bättre svarstider vid den första körningen efter en omstart. Funktionen autoprewarm för den flexibla PostgreSQL-servern är för närvarande inte tillgänglig i Azure Database.

pg_repack

Första gången användare av pg_repack tillägget vanligtvis ställer följande fråga: Kan pg_repack ett tillägg eller en körbar klientsida som psql eller pg_dump?

pg_repack är faktiskt både och. pg_repack/lib har koden för tillägget, inklusive schemat och SQL-artefakterna som skapas, och C-biblioteket som implementerar koden för flera av dessa funktioner.

Å andra sidan har pg_repack/bin koden för klientprogrammet, som vet hur man interagerar med programmeringselementen som implementeras i tillägget. Det här klientprogrammet syftar till att underlätta komplexiteten i att interagera med de olika gränssnitten som visas av tillägget på serversidan. Det ger användaren vissa kommandoradsalternativ som är lättare att förstå. Klientprogrammet är värdelöst utan tillägget som skapas i databasen som det pekar på. Tillägget på serversidan är helt funktionellt, men kräver att användaren förstår ett komplicerat interaktionsmönster. Det mönstret skulle bestå av att köra frågor för att hämta data som används som indata till funktioner som implementeras av tillägget osv.

Behörighet nekad för schemaompaketering

Eftersom vi beviljar behörigheter till det ompaketeringsschema som skapats av det här tillägget stöder vi för närvarande endast körningsfunktioner pg_repack azure_pg_adminfrån kontexten för .

Du kanske märker att om ägaren till en tabell, som inte azure_pg_adminär , försöker köra pg_repackfår de ett felmeddelande som liknar följande:

NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR:  permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()

Undvik det felet genom att köra pg_repack från kontexten azure_pg_adminför .

pg_stat_statements

Tillägget pg_stat_statements ger dig en vy över alla frågor som körs i databasen. Detta är användbart för att förstå frågearbetsbelastningens prestanda i ett produktionssystem.

Tillägget pg_stat_statements är förinläst på shared_preload_libraries varje flexibel Azure Database for PostgreSQL-serverinstans för att tillhandahålla ett sätt att spåra SQL-instruktionens körningsstatistik.

Av säkerhetsskäl måste du tillåtalistning av pg_stat_statements-tillägget och installera det med kommandot CREATE EXTENSION .

Inställningen pg_stat_statements.track, som styr vilka instruktioner som spåras av tillägget, är standardvärdet , vilket innebär att topalla instruktioner som utfärdas direkt av klienter spåras. De två andra spårningsnivåerna är none och all. Den här inställningen kan konfigureras som en serverparameter.

Det finns en kompromiss mellan frågekörningsinformationen som pg_stat_statements tillägget tillhandahåller på serverns prestanda när varje SQL-instruktion loggas. Om du inte aktivt använder pg_stat_statements tillägget rekommenderar vi att du anger pg_stat_statements.track till none. Vissa övervakningstjänster från tredje part kan förlita sig på pg_stat_statements att leverera insikter om frågeprestanda, så bekräfta om så är fallet för dig.

postgres_fdw

Med postgres_fdw tillägget kan du ansluta från en flexibel Azure Database for PostgreSQL-serverinstans till en annan eller en annan databas på samma server. Azure Database for PostgreSQL – flexibel server stöder både inkommande och utgående anslutningar till valfri PostgreSQL-server. Den sändande servern måste tillåta utgående anslutningar till den mottagande servern. På samma sätt måste den mottagande servern tillåta anslutningar från den sändande servern.

Om du planerar att använda det här tillägget rekommenderar vi att du distribuerar dina servrar med integrering av virtuella nätverk. Som standard tillåter integrering av virtuella nätverk anslutningar mellan servrar i det virtuella nätverket. Du kan också välja att använda säkerhetsgrupper för virtuella nätverk för att anpassa åtkomsten.

pgstattuple

När du använder pgstattuple tillägget för att försöka hämta tuppelns statistik från objekt som lagras i pg_toast schemat i versioner av Postgres 11 till 13 får du felet "behörighet nekad för schema pg_toast".

Behörighet nekad för schema pg_toast

Kunder som använder PostgreSQL version 11 till 13 på Azure Database for Flexible Server kan inte använda pgstattuple tillägget på objekt i pg_toast schemat.

I PostgreSQL 16 och 17 beviljas rollen automatiskt till azure_pg_admin, vilket gör pgstattuple att den pg_read_all_data kan fungera korrekt. I PostgreSQL 14 och 15 kan kunderna manuellt ge pg_read_all_data rollen för att azure_pg_admin uppnå samma resultat. Men i PostgreSQL 11 till 13 pg_read_all_data finns inte rollen.

Kunder kan inte bevilja nödvändiga behörigheter direkt. Om du behöver kunna köra för att komma pgstattuple åt objekt under pg_toast schemat fortsätter du med att skapa en Azure Support begäran.

timescaleDB

Tillägget timescaleDB är en tidsseriedatabas som paketeras som ett tillägg för PostgreSQL. Den tillhandahåller tidsorienterade analysfunktioner och optimeringar och skalar Postgres för tidsseriearbetsbelastningar. Läs mer om TimescaleDB, ett registrerat varumärke som tillhör Timescale, Inc. Azure Database for PostgreSQL – flexibel server tillhandahåller TimescaleDB Apache-2-utgåvan.

Installera TimescaleDB

Om du vill använda timescaleDBkontrollerar du att du tillåterlistning av tillägget, läser in dess bibliotek och installerar tillägget i databasen där du planerar att använda dess funktioner.

Nu kan du skapa en TimescaleDB-hypertabell från grunden eller migrera befintliga tidsseriedata i PostgreSQL.

Återställa en tidsskala-databas med hjälp av pg_dump och pg_restore

Om du vill återställa en tidsskala-databas med hjälp av pg_dump och pg_restoremåste du köra två hjälpprocedurer i måldatabasen: timescaledb_pre_restore() och timescaledb_post restore().

Förbered först måldatabasen:

--create the new database where you want to perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Nu kan du köra pg_dump på den ursprungliga databasen och sedan göra pg_restore. Efter återställningen ska du köra följande kommando i den återställda databasen:

SELECT timescaledb_post_restore();

Mer information om återställningsmetoden med timescale-aktiverad databas finns i Dokumentation om tidsskala.

Återställa en tidsskala-databas med hjälp av tidsberäknadb-säkerhetskopiering

När du kör proceduren SELECT timescaledb_post_restore() kan du få behörigheter som nekas när du uppdaterar flaggan timescaledb.restoring. Detta beror på begränsad ALTER DATABASE-behörighet i Cloud PaaS-databastjänster. I det här fallet kan du utföra en alternativ metod med hjälp av timescaledb-backup verktyget för att säkerhetskopiera och återställa databasen Tidsskala. Timescaledb-backup är ett program som gör dumpning och återställning av en TimescaleDB-databas enklare, mindre felbenägen och mer högpresterande.

Följ stegen nedan:

  1. Installera verktyg enligt beskrivningen här.

  2. Skapa en Azure Database for PostgreSQL-målinstans och databas för flexibel server.

  3. Aktivera tidsskaletillägg.

  4. azure_pg_admin Bevilja rollen till den användare som används av ts-restore.

  5. Kör ts-restore för att återställa databasen.

Mer information om dessa verktyg finns här.

Tillägg och högre versionsuppgradering

Azure Database for PostgreSQL – flexibel server erbjuder en huvudversionsuppgraderingsfunktion på plats som utför en uppgradering på plats av Azure Database for PostgreSQL flexibel serverinstans med bara en enkel interaktion från användaren. Uppgradering av större versioner på plats förenklar uppgraderingsprocessen för Azure Database for PostgreSQL– flexibel server, vilket minimerar störningarna för användare och program som kommer åt servern. Huvudversionsuppgraderingar på plats stöder inte specifika tillägg, och det finns vissa begränsningar för att uppgradera vissa tillägg.

Tilläggen anon, Apache AGE, dblink, orafce, pgaudit, postgres_fdwoch timescaledb stöds inte för alla azure database for PostgreSQL flexibla serverversioner när du använder huvudversionsuppdateringsfunktionen på plats.