Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden speciale overwegingen beschreven voor het gebruik van bepaalde extensies of modules in Azure Database for PostgreSQL flexibele server.
Algemene overwegingen voor extensies
Als u een extensie in Azure Database for PostgreSQL flexibele server wilt gebruiken, moet u het volgende doen:
-
Extensie toestaan. Als u de extensie niet toestaat, mislukt een poging om de extensie uit te voeren
CREATE EXTENSION,ALTER EXTENSIONDROP EXTENSIONofCOMMENT ON EXTENSIONmislukt met een fout die aangeeft dat de bedoelde extensie niet is toegestaan. - Als de extensie een gedeelde binaire bibliotheek implementeert waarvoor gedeeld geheugen moet worden toegewezen en geopend en moet worden geladen wanneer de server wordt gestart, volgt u de instructies in de laadbibliotheken.
- Maak een extensie in de databases waarin u de extensie wilt implementeren van de SQL-objecten die met die extensie zijn gedistribueerd.
- Verwijder de extensie. Wanneer u alle SQL-objecten die door die extensie worden gedistribueerd uit de database wilt verwijderen.
- Werk extensies bij om bij te werken naar de nieuwste versie van alle SQL-artefacten die zijn geïmplementeerd door een extensie die al is geïnstalleerd.
- Geïnstalleerde extensies en de bijbehorende versies weergeven.
Als er een fout optreedt tijdens het uitvoeren van de CREATE EXTENSION, ALTER EXTENSIONof DROP EXTENSIONCOMMENT ON EXTENSIONopdrachten op uw Azure Database for PostgreSQL flexibele server, raadpleegt u de lijst met mogelijke fouten en wat de oorzaak van elke fout kan zijn.
Algemene overwegingen voor modules
Als u een module in Azure Database for PostgreSQL flexibele server wilt gebruiken, voegt u deze toe aan de shared_preload_libraries parameter zoals beschreven in laadbibliotheken.
Modules hoeven niet te worden toegestaan. Dat is een exclusieve vereiste voor extensies.
Extensies met specifieke overwegingen
In de volgende lijst worden alle ondersteunde extensies opgesomd waarvoor specifieke overwegingen nodig zijn bij gebruik in Azure Database for PostgreSQL flexibele server:
AGEdblinkpg_buffercachepg_cronpg_hint_planpg_repackpg_stat_statementspgcryptopostgres_fdwpgstattupletimescaledb
AGE
De Apache AGE-extensie is een grafiekextensie voor PostgreSQL die wordt ondersteund door Azure Database for PostgreSQL. Het biedt functies voor grafiekdatabases, open ondersteuning voor cypher-query's en de mogelijkheid om complexe query's uit te voeren op grafiekgegevens die zijn opgeslagen in PostgreSQL. Apache AGE is een opensource-project dat is uitgebracht onder de Apache License 2.0.
AGE installeren
Als u AGE wilt gebruiken, moet u ervoor zorgen dat u de extensie toestaat , de bibliotheek laadt en de extensie installeert in de database waarin u de functionaliteit ervan wilt gebruiken.
dblink
Met de dblink extensie kunt u vanaf de ene Azure Database for PostgreSQL flexibele server verbinding maken met een andere of een andere database op dezelfde server. Azure Database for PostgreSQL ondersteunt zowel binnenkomende als uitgaande verbindingen met elke PostgreSQL-server. De verzendende server moet uitgaande verbindingen met de ontvangende server toestaan. Op dezelfde manier moet de ontvangende server verbindingen van de verzendende server toestaan.
Als u van plan bent deze extensie te gebruiken, implementeert u uw servers met integratie van virtuele netwerken. Integratie van virtuele netwerken staat standaard verbindingen toe tussen servers in het virtuele netwerk. U kunt er ook voor kiezen om netwerkbeveiligingsgroepen te gebruiken om de toegang aan te passen.
pg_buffercache
Gebruik de pg_buffercache extensie om de inhoud van shared_buffers te onderzoeken. Met deze extensie kunt u bepalen of een specifieke relatie in de cache wordt opgeslagen shared_buffers. Deze extensie kan u helpen bij het oplossen van prestatieproblemen met betrekking tot caching.
Deze extensie maakt deel uit van de kerninstallatie van PostgreSQL en is eenvoudig te installeren.
CREATE EXTENSION pg_buffercache;
pg_cron
De pg_cron extensie is een eenvoudige, cron-gebaseerde taakplanner voor PostgreSQL die als extensie in de database wordt uitgevoerd. De pg_cron extensie kan geplande onderhoudstaken uitvoeren in een PostgreSQL-database. U kunt bijvoorbeeld een periodiek vacuüm van een tabel uitvoeren of oude gegevenstaken verwijderen.
De pg_cron extensie kan meerdere taken parallel uitvoeren, maar wordt maximaal één exemplaar van een taak tegelijk uitgevoerd. Als een tweede uitvoering moet beginnen voordat de eerste is voltooid, wordt de tweede uitvoering in de wachtrij geplaatst en gestart zodra de eerste uitvoering is voltooid. Op een dergelijke manier zorgt het ervoor dat taken precies zo vaak worden uitgevoerd als gepland en niet gelijktijdig met zichzelf worden uitgevoerd.
Zorg ervoor dat de waarde waarop shared_preload_libraries is ingesteld, bevat pg_cron. Deze extensie ondersteunt niet het laden van de bibliotheek als gevolg van het uitvoeren van CREATE EXTENSION. Elke poging om CREATE EXTENSION uit te voeren als de extensie niet is toegevoegd aan shared_preload_libraries, of de server niet opnieuw is opgestart nadat deze is toegevoegd, resulteert in een fout waarvan de tekst zegt pg_cron can only be loaded via shared_preload_librariesen waarvan de hint is Add pg_cron to the shared_preload_libraries configuration variable in postgresql.conf.
Als u deze wilt gebruiken pg_cron, moet u ervoor zorgen dat u de gedeelde bibliotheek laadt bij het starten van de server, wordt deze op de acceptatielijst geplaatst en geïnstalleerd in elke database waaruit u wilt communiceren met de functionaliteit ervan, met behulp van de SQL-artefacten die worden gemaakt.
Examples
Oude gegevens op zaterdag om 3:30 uur (GMT) verwijderen.
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);Om de stofzuiger elke dag om 10:00 uur (GMT) in de standaarddatabase
postgresuit te voeren.SELECT cron.schedule('0 10 * * *', 'VACUUM');Om alle taken van
pg_cronte annuleren.SELECT cron.unschedule(jobid) FROM cron.job;Als u alle opdrachten wilt zien die momenteel zijn gepland met
pg_cron.SELECT * FROM cron.job;Als u de vacuüm elke dag om 10:00 uur (GMT) in de
testcrondatabase wilt uitvoeren.SELECT cron.schedule_in_database('VACUUM','0 10 * * *', 'VACUUM', 'testcron', null, TRUE);
Meer voorbeelden
pg_cron Vanaf versie 1.4 kunt u de cron.schedule_in_database en cron.alter_job functies gebruiken om uw taak in een specifieke database te plannen en een bestaand schema bij te werken.
De cron_schedule_in_database functie staat de gebruikersnaam toe als een optionele parameter. Voor het instellen van de gebruikersnaam op een niet-null-waarde zijn postgreSQL-superuserbevoegdheden vereist en wordt deze niet ondersteund in Azure Database for PostgreSQL flexibele server. In voorgaande voorbeelden ziet u hoe u deze functie uitvoert met een optionele gebruikersnaamparameter die is weggelaten of ingesteld op null, waarmee de taak wordt uitgevoerd in de context van de gebruiker die de taak plant, die rolbevoegdheden moet hebben azure_pg_admin .
Oude gegevens verwijderen op zaterdag om 3:30 uur (GMT) op database DBName.
SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');De databasenaam voor bestaande schema bijwerken of wijzigen
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_hint_plan
Met de pg_hint_plan extensie kunt u PostgreSQL-uitvoeringsplannen aanpassen met behulp van 'hints' in SQL-opmerkingen, zoals:
/*+ SeqScan(a) */
De pg_hint_plan extensie leest aanwijzingen in een opmerking van de speciale vorm die is opgegeven met de doel-SQL-instructie. Het specifieke formulier begint met de tekenreeks /*+ en eindigt met */. Hintzinnen bestaan uit hintnamen en de volgende parameters tussen haakjes en gescheiden door spaties. Nieuwe regels voor leesbaarheid kunnen elke hintzin scheiden.
Example:
/*+
HashJoin(a b)
SeqScan(a)
*/
SELECT *
FROM pgbench_branches b
JOIN pgbench_accounts a ON b.bid = a.bid
ORDER BY a.aid;
Het vorige voorbeeld zorgt ervoor dat de planner de resultaten van een seqscan op tabel a gebruikt om deze met tabel b te combineren als een hashjoin.
Als u de pg_hint_plan extensie wilt gebruiken, moet u ervoor zorgen dat u de extensie toestaat , de bibliotheek laadt en de extensie installeert in de database waarin u de functionaliteit ervan wilt gebruiken.
pg_repack
Nieuwe gebruikers van de extensie pg_repack stellen vaak de volgende vraag: Is pg_repack een extensie of een client-side uitvoerbaar bestand, zoals psql of pg_dump?
pg_repack is eigenlijk beide.
pg_repack/lib heeft de code voor de extensie, met inbegrip van het schema en SQL-artefacten dat wordt gemaakt, en de C-bibliotheek die de code van verschillende van deze functies implementeert.
Aan de andere kant heeft pg_repack/bin de code voor de clienttoepassing, die weet hoe moet worden gecommuniceerd met de programmeerbaarheidselementen die in de extensie zijn geïmplementeerd. Deze clienttoepassing is erop gericht om de complexiteit van interactie met de verschillende interfaces die worden weergegeven door de extensie aan de serverzijde te vereenvoudigen. Het biedt de gebruiker een aantal opdrachtregelopties die gemakkelijker te begrijpen zijn. De clienttoepassing is nutteloos zonder de extensie die is gemaakt in de database waarnaar deze verwijst. De extensie aan de serverzijde is volledig functioneel, maar vereist dat de gebruiker een gecompliceerd interactiepatroon begrijpt. Dat patroon bestaat uit het uitvoeren van query's om gegevens op te halen die worden gebruikt als invoer voor functies die door de extensie zijn geïmplementeerd, enzovoort.
Machtiging geweigerd voor het opnieuw verpakken van schema's
Momenteel kunt u, omdat de extensie machtigingen verleent aan het repack-schema, de functionaliteit van pg_repack alleen uitvoeren in de context van azure_pg_admin.
Mogelijk ziet u dat als de eigenaar van een tabel, die niet azure_pg_adminis, probeert uit te voeren pg_repack, de volgende fout krijgt:
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()
Om die fout te voorkomen, voert u pg_repack uit vanuit de context van azure_pg_admin.
pg_stat_statements
De pg_stat_statements-extensie geeft u een overzicht van alle query's die in uw database worden uitgevoerd. Deze informatie is handig om inzicht te krijgen in de prestaties van uw queryworkloads in een productiesysteem.
De pg_stat_statements-extensie wordt vooraf geladen shared_preload_libraries op elke Azure Database for PostgreSQL flexibele server om een middel te bieden voor het bijhouden van uitvoeringsstatistieken van SQL-instructies.
Om veiligheidsredenen moet u de pg_stat_statements-extensietoestaan en installeren met behulp van de opdracht CREATE EXTENSION.
De instelling pg_stat_statements.track, waarmee wordt bepaald welke instructies door de extensie worden bijgehouden, is standaard top ingesteld, wat betekent dat alle instructies die rechtstreeks door clients worden uitgegeven, worden bijgehouden. De twee andere traceringsniveaus zijn none en all. U kunt deze instelling configureren als een parameter.
Er is een afweging tussen de informatie over query-uitvoering die de pg_stat_statements-extensie biedt en de serverprestaties, omdat elke SQL-instructie wordt gelogd. Als u de pg_stat_statements-extensie niet actief gebruikt, stelt u pg_stat_statements.track in op none. Sommige bewakingsservices van derden kunnen afhankelijk zijn van pg_stat_statements het leveren van inzichten in queryprestaties, dus controleer of dit het geval is voor u.
pgcrypto
Azure Database for PostgreSQL ondersteunt versleuteling op toepassingsniveau, op kolomniveau via de pgcrypto PostgreSQL-extensie. Met de pgcrypto-extensie kunnen toepassingen expliciet cryptografische functies aanroepen in PostgreSQL SQL-instructies voor het versleutelen of hashen van kolomwaarden met behulp van cryptografische algoritmen die worden geleverd door de onderliggende OpenSSL-bibliotheek.
Vanaf Azure Linux 3.0 gebruikt het besturingssysteem OpenSSL 3.0, waarmee verschillende oudere en zwakkere cryptografische algoritmen en API's op laag niveau worden verplaatst naar een afzonderlijke verouderde provider die niet standaard wordt geladen. Deze wijziging moedigt het gebruik van moderne, veiligere cryptografische algoritmen en de OpenSSL EVP-API's (Envelop) op hoog niveau aan.
Als gevolg hiervan zijn cryptografische algoritmen die OpenSSL 3.0 classificeert als verouderd, niet standaard beschikbaar voor gebruik door pgcrypto op Azure Database for PostgreSQL servers met Azure Linux 3.0.
Verouderde cryptografische algoritmen
De volgende verouderde cryptografische algoritmen bevinden zich in de verouderde OpenSSL 3.0-provider en zijn niet standaard beschikbaar op Azure Database for PostgreSQL servers met Azure Linux 3.0. Eerdere platformversies hebben pgcrypto mogelijk toegestaan om deze algoritmen te gebruiken, maar Azure Linux 3.0 ondersteunt ze niet meer.
Symmetrische versleutelingsalgoritmen (coderingen):
- Blowfish (BF-CBC)
- CAST
- DES (één DES; niet 3DES)
- IDEE
- RC2
- RC4
- RC5
- ZAAD
Algoritmen voor berichtsamenvating en hash:
- MD2
- MD4
- MDC2
- RIPEMD-160
- SHA-1 (afgeschaft voor digitale handtekeningen, maar is mogelijk nog steeds toegestaan voor specifieke HMAC-scenario's, afhankelijk van de configuratie)
- Whirlpool
Azure Database for PostgreSQL upgrades naar Azure Linux 3.0 maken deel uit van doorlopende platformverbeteringen. Toepassingen die afhankelijk zijn van pgcrypto moeten ervoor zorgen dat ze moderne, ondersteunde cryptografische algoritmen gebruiken bij het uitvoeren van versleuteling op toepassingsniveau, kolomniveau.
postgres_fdw
Met de postgres_fdw extensie kunt u vanaf de ene Azure Database for PostgreSQL flexibele server verbinding maken met een andere server of met een andere database op dezelfde server. Azure Database for PostgreSQL ondersteunt zowel binnenkomende als uitgaande verbindingen met elke PostgreSQL-server. De verzendende server moet uitgaande verbindingen met de ontvangende server toestaan. Op dezelfde manier moet de ontvangende server verbindingen van de verzendende server toestaan.
Als u van plan bent deze extensie te gebruiken, implementeert u uw servers met integratie van virtuele netwerken. Integratie van virtuele netwerken staat standaard verbindingen toe tussen servers in het virtuele netwerk. U kunt er ook voor kiezen om netwerkbeveiligingsgroepen te gebruiken om de toegang aan te passen.
pgstattuple
Wanneer u de pgstattuple extensie gebruikt om tuple-statistieken te verkrijgen van objecten die in het pg_toast schema in PostgreSQL-versie 11 tot en met 13 worden bewaard, ontvangt u de foutmelding 'machtiging geweigerd voor schema-pg_toast'.
Machtiging geweigerd voor schema-pg_toast
Klanten die PostgreSQL-versies 11 tot en met 13 op Azure Database for PostgreSQL flexibele server gebruiken, kunnen de pgstattuple extensie niet gebruiken voor objecten binnen het pg_toast schema.
In PostgreSQL 16 en 17 wordt de pg_read_all_data rol automatisch verleend aan azure_pg_admin, waardoor deze correct kan pgstattuple functioneren. In PostgreSQL 14 en 15 kunnen klanten de rol pg_read_all_data handmatig verlenen aan azure_pg_admin om hetzelfde resultaat te bereiken. In PostgreSQL 11 tot en met 13 bestaat de pg_read_all_data rol echter niet.
Klanten kunnen de benodigde machtigingen niet rechtstreeks verlenen. Als u wilt uitvoeren pgstattuple voor toegang tot objecten onder het pg_toast schema, gaat u verder met het maken van een ondersteuning voor Azure aanvraag.
timescaledb
De timescaledb extensie is een tijdreeksdatabase die is verpakt als een extensie voor PostgreSQL. Het biedt tijdgeoriënteerde analytische functies en optimalisaties en schaalt PostgreSQL voor tijdreeksworkloads.
Meer informatie over TimescaleDB, een gedeponeerd handelsmerk van Timescale, Inc. Azure Database for PostgreSQL biedt de Editie TimescaleDB Apache-2.
TimescaleDB installeren
Als u deze wilt gebruiken timescaledb, moet u ervoor zorgen dat u de extensie toestaat , de bibliotheek laadt en de extensie installeert in de database waarop u de functionaliteit wilt gebruiken.
U kunt nu een volledig nieuwe TimescaleDB-hypertabel maken of bestaande tijdreeksgegevens migreren in PostgreSQL.
Zie voor meer informatie over het herstellen van een Timescale-database met behulp van pg_dump en pg_restore, de documentatie van Timescale.
Een Timescale-database herstellen met timescaledb-backup
Tijdens het uitvoeren van de SELECT timescaledb_post_restore() procedure worden mogelijk machtigingen geweigerd bij het bijwerken van de timescaledb.restoring vlag. Deze fout treedt op vanwege de beperkte ALTER DATABASE machtiging in PaaS-databaseservices in de cloud. In dit geval kunt u een alternatieve methode uitvoeren met behulp van het timescaledb-backup hulpprogramma om een back-up te maken van de Timescale-database en deze te herstellen. Timescaledb-backup is een programma dat dumpen en herstellen van een TimescaleDB-database eenvoudiger, minder foutgevoelig en beter presteert.
Dit doet u als volgt:
Installeer de hulpprogramma's zoals beschreven in Timescaledb-backup installeren.
Maak een Azure Database for PostgreSQL-doelflexibele server en database.
Schakel de timescale-extensie in.
Verdeel de
azure_pg_adminrol aan de gebruiker die wordt gebruikt door ts-restore.Voer ts-restore uit om de database te herstellen.
Zie timescaledb-backup voor meer informatie over deze hulpprogramma's.
Extensies en upgrade naar een nieuwe hoofdversie
Azure Database for PostgreSQL biedt een in-place functie voor het upgraden van primaire versies die een in-place upgrade van de Azure Database for PostgreSQL flexibele server uitvoert, met slechts een eenvoudige interactie van de gebruiker. In-place primaire versie-upgrade vereenvoudigt het upgradeproces van Azure Database for PostgreSQL, waardoor de onderbreking voor gebruikers en toepassingen die toegang hebben tot de server, wordt geminimaliseerd. In-place primaire versie-upgrades bieden geen ondersteuning voor specifieke extensies en er zijn enkele beperkingen voor het upgraden van bepaalde extensies.
De extensiesanon, Apache AGE, dblink, , orafceen postgres_fdwtimescaledb worden niet ondersteund voor alle Azure Database for PostgreSQL flexibele serverversies wanneer u de in-place functie voor update van primaire versies gebruikt.
Modules met specifieke overwegingen
In de volgende lijst worden alle ondersteunde modules opgesomd waarvoor specifieke overwegingen nodig zijn bij gebruik in een Azure Database for PostgreSQL flexibele server:
pg_failover_slots
pg_failover_slots
De pg_failover_slots module verbetert Azure Database for PostgreSQL bij gebruik met zowel logische replicatie als servers met hoge beschikbaarheid. Het lost effectief de uitdaging op met de standaard PostgreSQL-engine die na een failover geen logische replicatieslots behoudt. Het onderhouden van deze sites is essentieel om te voorkomen dat replicatie wordt onderbroken of gegevens niet overeenkomen tijdens wijzigingen in de primaire serverfunctie, waardoor operationele continuïteit en gegevensintegriteit worden gewaarborgd.
De extensie stroomlijnt het failoverproces door de benodigde overdracht, opschoning en synchronisatie van replicatieslots te beheren, waardoor een naadloze overgang wordt geboden tijdens wijzigingen in de serverrol.
Meer informatie en instructies over het gebruik van de module vindt u op de pg_failover_slotsGitHub-pagina.
Als u de pg_failover_slots module wilt gebruiken, moet u ervoor zorgen dat de bibliotheek wordt geladen wanneer de server wordt gestart.