Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje zvláštní aspekty používání určitých rozšíření nebo modulů na Azure Database for PostgreSQL flexibilním serveru.
Obecné aspekty rozšíření
Pokud chcete použít rozšíření na Azure Database for PostgreSQL flexibilním serveru, musíte:
-
Povolit rozšíření Pokud rozšíření nepovolíte, jakýkoli pokus o spuštění
CREATE EXTENSION,ALTER EXTENSIONDROP EXTENSION, neboCOMMENT ON EXTENSIONselže s chybou označující, že odkazující rozšíření není povolené. - Pokud rozšíření nasadí sdílenou binární knihovnu, která vyžaduje přidělení sdílené paměti a přístup ke sdílené paměti a musí být načtena při spuštění serveru, postupujte podle pokynů uvedených v knihovnách načítání.
- Vytvořte rozšíření v databázích, ve kterých chcete rozšíření nasadit objekty SQL distribuované s tímto rozšířením.
- Rozšíření přetažení. Pokud chcete odebrat z databáze všechny objekty SQL distribuované tímto rozšířením.
- Aktualizujte rozšíření, aby byly všechny artefakty SQL nasazené rozšířením, které je již nainstalované, aktualizovány na nejnovější verzi.
- Zobrazení nainstalovaných rozšíření a jejich odpovídajících verzí
Pokud se při provádění CREATE EXTENSIONpříkazu , , ALTER EXTENSIONDROP EXTENSIONnebo COMMENT ON EXTENSION příkazů na flexibilním serveru Azure Database for PostgreSQL zobrazí jakákoli chyba, prohlédněte si seznam možných chyb a co může být příčinou každé chyby.
Obecné aspekty modulů
Chcete-li použít modul ve flexibilním serveru Azure Database for PostgreSQL, přidejte ho do parametru shared_preload_libraries, jak je popsáno v části načítání knihoven.
Moduly nemusí být na seznamu povolených. To je výhradní požadavek na rozšíření.
Rozšíření s konkrétními úvahami
Následující seznam obsahuje výčet všech podporovaných rozšíření, která vyžadují konkrétní aspekty při použití na Azure Database for PostgreSQL flexibilním serveru:
AGEdblinkpg_buffercachepg_cronpg_hint_planpg_repackpg_stat_statementspgcryptopostgres_fdwpgstattupletimescaledb
AGE
Rozšíření Apache AGE je rozšíření grafu pro PostgreSQL podporované službou Azure Database for PostgreSQL. Poskytuje funkce grafové databáze, otevřenou podporu dotazů cypher a schopnost spouštět složité dotazy na grafová data uložená v PostgreSQL. Apache AGE je opensourcový projekt vydaný v rámci licence Apache License 2.0.
Instalace AGE
Pokud chcete použít AGE, ujistěte se, že rozšíření povolíte , načtete její knihovnu a nainstalujete rozšíření do databáze, kde plánujete používat její funkce.
dblink
Rozšíření dblink umožňuje připojení z jednoho Azure Database for PostgreSQL flexibilního serveru k jiné nebo jiné databázi na stejném serveru. Azure Database for PostgreSQL podporuje příchozí i odchozí připojení k libovolnému serveru PostgreSQL. Odesílající server musí povolit odchozí připojení k přijímajícímu serveru. Podobně přijímající server musí povolit připojení z odesílajícího serveru.
Pokud chcete toto rozšíření použít, nasaďte servery s integrací virtuální sítě. Integrace virtuální sítě ve výchozím nastavení umožňuje připojení mezi servery ve virtuální síti. K přizpůsobení přístupu můžete také použít skupiny zabezpečení sítě .
pg_buffercache
Pomocí rozšíření pg_buffercache zkontrolujte obsah shared_buffers. Pomocí tohoto rozšíření můžete určit, zda je určitý vztah uložen v shared_buffersmezipaměti . Toto rozšíření vám může pomoct vyřešit problémy s výkonem souvisejícími s ukládáním do mezipaměti.
Toto rozšíření je součástí základní instalace PostgreSQL a snadno se instaluje.
CREATE EXTENSION pg_buffercache;
pg_cron
Toto pg_cron rozšíření je jednoduchý plánovač úloh založený na cron pro PostgreSQL, který běží uvnitř databáze jako rozšíření. Rozšíření pg_cron může spouštět úlohy plánované údržby v databázi PostgreSQL. Můžete například spustit pravidelné vakuum tabulky nebo odebrat staré datové úlohy.
Rozšíření pg_cron může paralelně spouštět více úloh, ale současně spouští maximálně jednu instanci úlohy. Pokud se má spustit druhé spuštění před dokončením prvního, druhé spuštění se zařadí do fronty a spustí se hned po jeho dokončení. Tímto způsobem zajišťuje, aby úlohy běžely přesně tolikrát, kolikrát jsou naplánované, a neběžely souběžně samy se sebou.
Ujistěte se, že hodnota, na kterou je shared_preload_libraries nastavena, zahrnuje pg_cron. Toto rozšíření nepodporuje načítání knihovny jako efekt spuštění příkazu CREATE EXTENSION. Jakýkoli pokus o spuštění CREATE EXTENSION, pokud rozšíření nebylo přidáno do shared_preload_libraries, nebo server nebyl restartován po jeho přidání, má za následek chybu, jejíž text říká pg_cron can only be loaded via shared_preload_libraries, a jejíž tip je Add pg_cron to the shared_preload_libraries configuration variable in postgresql.conf.
Pokud chcete použít pg_cron, ujistěte se, že načítáte jeho sdílenou knihovnu při spuštění serveru, je na seznamu povolených a je nainstalovaná v jakékoli databázi, ze které chcete pracovat s jeho funkcemi, pomocí artefaktů SQL, které vytvoří.
Examples
Chcete-li odstranit stará data v sobotu v 3:30 (GMT).
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);Spusťte vakuum každý den v 10:00 (GMT) ve výchozí databázi
postgres.SELECT cron.schedule('0 10 * * *', 'VACUUM');Chcete-li zrušit naplánování všech úkolů z
pg_cron.SELECT cron.unschedule(jobid) FROM cron.job;Chcete-li zobrazit všechny úlohy, které jsou aktuálně naplánovány pomocí
pg_cron.SELECT * FROM cron.job;Pokud chcete v databázi spustit úklid každý den v 10:00 (GMT).
testcronSELECT cron.schedule_in_database('VACUUM','0 10 * * *', 'VACUUM', 'testcron', null, TRUE);
Další příklady
pg_cron Počínaje verzí 1.4 můžete pomocí funkcí cron.schedule_in_database a cron.alter_job naplánovat úlohu v konkrétní databázi a aktualizovat stávající plán.
Funkce cron_schedule_in_database umožňuje uživatelské jméno jako volitelný parametr. Nastavení uživatelského jména na hodnotu bez hodnoty null vyžaduje oprávnění superuživatele PostgreSQL a není podporováno na flexibilním serveru Azure Database for PostgreSQL. Předchozí příklady ukazují spuštění této funkce s nepovinným parametrem uživatelského jména vynechaným nebo nastaveným na hodnotu null, který spouští úlohu v kontextu uživatele plánujícího úlohu, která by měla mít azure_pg_admin oprávnění role.
Chcete-li odstranit stará data v sobotu v 3:30 (GMT) v databázi DBName.
SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');Aktualizace nebo změna názvu databáze pro existující plán
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_hint_plan
Rozšíření pg_hint_plan umožňuje upravit plány spouštění PostgreSQL pomocí "tipů" v komentářích SQL, například:
/*+ SeqScan(a) */
Rozšíření pg_hint_plan čte narážkové fráze v komentáři speciálního formátu daného cílovým příkazem SQL. Konkrétní formulář začíná sekvencí /*+ znaků a končí znakem */. Fráze nápovědy se skládají z názvů nápovědy a následujících parametrů uzavřených závorky a oddělené mezerami. Nové řádky pro čitelnost mohou oddělovat každou frázi nápovědy.
Example:
/*+
HashJoin(a b)
SeqScan(a)
*/
SELECT *
FROM pgbench_branches b
JOIN pgbench_accounts a ON b.bid = a.bid
ORDER BY a.aid;
Předchozí příklad způsobuje, že plánovač použije výsledky operace seqscan nad tabulkou a ke spojení s tabulkou b ve formě hashjoin.
Pokud chcete rozšíření použít pg_hint_plan , ujistěte se, že rozšíření povolíte , načtete její knihovnu a nainstalujete rozšíření do databáze, kde plánujete používat její funkce.
pg_repack
První uživatelé pg_repack rozšíření se obvykle ptají na následující otázku: Jedná se pg_repack o rozšíření nebo spustitelný soubor na straně klienta?psqlpg_dump
pg_repack je vlastně obojí.
pg_repack/lib obsahuje kód pro rozšíření, včetně schématu a artefaktů SQL, které vytvoří, a knihovna jazyka C implementuje kód několika těchto funkcí.
Na druhé straně má pg_repack/bin kód klientské aplikace, který ví, jak pracovat s elementy programovatelnosti implementované v rozšíření. Cílem této klientské aplikace je usnadnit složitost interakce s různými rozhraními, která se zobrazí rozšířením na straně serveru. Nabízí uživateli některé možnosti příkazového řádku, které jsou srozumitelnější. Klientská aplikace je nepoužitá bez rozšíření vytvořeného v databázi, na kterou odkazuje. Rozšíření na straně serveru je samostatně plně funkční, ale vyžaduje, aby uživatel porozuměl složitému vzoru interakce. Tento model se skládá z provádění dotazů pro načtení dat, která se používají jako vstup do funkcí implementovaných rozšířením atd.
Oprávnění odepřeno pro opětovné zabalení schématu
V současné době, protože rozšíření uděluje oprávnění schématu repack, lze funkcionalitu pg_repack spouštět pouze z kontextu azure_pg_admin.
Můžete si všimnout, že pokud se vlastník tabulky, který není azure_pg_admin, pokusí spustit pg_repack, zobrazí následující chybu:
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()
Chcete-li se této chybě vyhnout, spusťte pg_repack z kontextu azure_pg_admin.
pg_stat_statements
Rozšíření pg_stat_statements vám poskytne přehled o všech dotazech, které běží ve vaší databázi. Tyto informace jsou užitečné pro pochopení výkonu úloh dotazů v produkčním systému.
Rozšíření pg_stat_statements je v shared_preload_libraries předem načítáno na každém serveru Azure Database for PostgreSQL flexible server, aby umožnilo sledovat statistiky spouštění příkazů SQL.
Z bezpečnostních důvodů musíte povolit rozšířenípg_stat_statements a nainstalovat ho pomocí příkazu CREATE EXTENSION .
Nastavení pg_stat_statements.track, které určuje, jaké příkazy rozšíření sleduje, má ve výchozím nastavení top, což znamená, že všechny příkazy vydané přímo klienty jsou sledovány. Dvě další úrovně sledování jsou none a all. Toto nastavení můžete nakonfigurovat jako parametr.
Existuje kompromis mezi informacemi o provádění dotazů, které poskytuje rozšíření pg_stat_statements, a výkonem serveru, protože zaznamenává každý příkaz SQL. Pokud rozšíření pg_stat_statements aktivně nepoužíváte, nastavte pg_stat_statements.track na hodnotu none. Některé monitorovací služby třetích stran se můžou spoléhat na pg_stat_statements, aby poskytly přehledy výkonu dotazů, takže ověřte, jestli je to tento případ i pro vás.
pgcrypto
Azure Database for PostgreSQL podporuje šifrování na úrovni aplikace na úrovni sloupců prostřednictvím rozšíření pgcrypto PostgreSQL. Rozšíření pgcrypto umožňuje aplikacím explicitně vyvolat kryptografické funkce v příkazech Sql PostgreSQL za účelem šifrování nebo hash hodnot sloupců pomocí kryptografických algoritmů poskytovaných podkladovou knihovnou OpenSSL.
Počínaje Azure Linuxem 3.0 používá operační systém OpenSSL 3.0, který přesouvá několik starších a slabších kryptografických algoritmů a rozhraní API nízké úrovně do samostatného staršího poskytovatele, který se ve výchozím nastavení nenačítá. Tato změna podporuje používání moderních, bezpečnějších kryptografických algoritmů a vysokoúrovňových rozhraní API OpenSSL EVP (Envelope).
V důsledku toho kryptografické algoritmy, které OpenSSL 3.0 klasifikují jako starší verze, nejsou ve výchozím nastavení k dispozici pro použití pgcrypto na Azure Database for PostgreSQL serverech se systémem Azure Linux 3.0.
Zastaralé kryptografické algoritmy
Následující starší kryptografické algoritmy jsou ve starší verzi zprostředkovatele OpenSSL 3.0 a nejsou ve výchozím nastavení dostupné na Azure Database for PostgreSQL serverech se systémem Azure Linux 3.0. Starší verze platformy mohly povolit pgcrypto používat tyto algoritmy, ale Azure Linux 3.0 je už nepodporuje.
Symetrické šifrovací algoritmy (šifry):
- Výsek (BF-CBC)
- CAST
- DES (jeden DES, ne 3DES)
- IDE
- RC2
- RC4
- RC5
- SEED
Algoritmy hash a hash zpráv:
- MD2
- MD4
- MDC2
- RIPEMD-160
- SHA-1 (zastaralé pro digitální podpisy, ale může být stále povolené pro konkrétní scénáře HMAC v závislosti na konfiguraci)
- Whirlpool
Azure Database for PostgreSQL se aktualizuje na Azure Linux 3.0 jako součást neustálých vylepšení platformy. Aplikace, které spoléhají na pgcrypto, by měly zajistit, aby při provádění šifrování na úrovni aplikace a na úrovni sloupců používaly moderní a podporované kryptografické algoritmy.
postgres_fdw
Rozšíření postgres_fdw umožňuje připojení z jednoho Azure Database for PostgreSQL flexibilního serveru k jinému serveru nebo k jiné databázi na stejném serveru. Azure Database for PostgreSQL podporuje příchozí i odchozí připojení k libovolnému serveru PostgreSQL. Odesílající server musí povolit odchozí připojení k přijímajícímu serveru. Podobně přijímající server musí povolit připojení z odesílajícího serveru.
Pokud chcete toto rozšíření použít, nasaďte servery s integrací virtuální sítě. Integrace virtuální sítě ve výchozím nastavení umožňuje připojení mezi servery ve virtuální síti. K přizpůsobení přístupu můžete také použít skupiny zabezpečení sítě .
pgstattuple
Když použijete rozšíření k pokusu pgstattuple o získání statistiky řazené kolekce členů z objektů uložených ve schématu pg_toast v PostgreSQL verze 11 až 13, zobrazí se chyba "Oprávnění odepřeno pro schéma pg_toast".
Oprávnění odepřeno pro schéma pg_toast
Zákazníci používající PostgreSQL verze 11 až 13 na flexibilním serveru Azure Database for PostgreSQL nemůžou pgstattuple rozšíření použít u objektů v rámci schématupg_toast.
V PostgreSQL 16 a 17 je role pg_read_all_data automaticky přiřazena k azure_pg_admin, což umožňuje, aby pgstattuple fungovalo správně. V PostgreSQL 14 a 15 mohou zákazníci ručně udělit roli pg_read_all_data pro azure_pg_admin, aby dosáhli stejného výsledku. V PostgreSQL 11 až 13 však pg_read_all_data role neexistuje.
Zákazníci nemůžou přímo udělit potřebná oprávnění. Pokud potřebujete spustit pgstattuple, abyste získali přístup k objektům ve schématu pg_toast, přejděte na vytvoření žádosti o podporu Azure.
TimescaleDB
Rozšíření timescaledb je databáze časových řad zabalená jako rozšíření pro PostgreSQL. Poskytuje časově orientované analytické funkce a optimalizace a škáluje PostgreSQL pro úlohy časových řad.
Přečtěte si další informace o timescaleDB, registrované ochranné známce timescale, Inc. Azure Database for PostgreSQL poskytuje edici TimescaleDB Apache-2.
Instalujte TimescaleDB
Chcete-li použít timescaledb, ujistěte se, že jste rozšíření povolili , načtěte její knihovnu a nainstalujte rozšíření do databáze, na kterou plánujete používat jeho funkce.
Teď můžete vytvořit hypertable timescaleDB úplně od začátku nebo migrovat stávající data časových řad v PostgreSQL.
Další informace o obnovení databáze časové osy pomocí pg_dump a pg_restorenaleznete v dokumentaci časové osy.
Obnovení databáze časové osy pomocí zálohy timescaledb
Při spuštění SELECT timescaledb_post_restore() tohoto postupu můžete při aktualizaci příznaku timescaledb.restoring získat oprávnění odepřená. K této chybě dochází kvůli omezenému ALTER DATABASE oprávnění v cloudových databázových službách PaaS. V takovém případě můžete provést alternativní metodu pomocí nástroje timescaledb-backup k zálohování a obnovení Timescale databáze. Timescaledb-backup je program, který usnadňuje dumping a obnovování databáze TimescaleDB, méně náchylné k chybám a výkonnější.
Postup je následující:
Nainstalujte nástroje, jak je popsáno v části Instalace zálohy timescaledb.
Vytvořte cílový flexibilní server Azure Database for PostgreSQL a databázi.
Povolte rozšíření časové osy.
azure_pg_adminUdělte uživateli roli, kterou používá ts-restore.Spuštěním příkazu ts-restore obnovte databázi.
Další informace o těchto nástroji najdete v tématu timescaledb-backup.
Rozšíření a upgrade hlavní verze
Azure Database for PostgreSQL nabízí funkci místního upgradu hlavní verze, která provádí místní upgrade Azure Database for PostgreSQL flexibilního serveru s jednoduchou interakcí od uživatele. Místní upgrade hlavní verze zjednodušuje proces upgradu služby Azure Database for PostgreSQL a minimalizuje přerušení přístupu uživatelů a aplikací k serveru. Místní upgrady hlavní verze nepodporují konkrétní rozšíření a pro upgrade určitých rozšíření existují určitá omezení.
Rozšíření anon, Apache AGE, dblink, orafce, postgres_fdw a timescaledb nejsou podporována pro všechny verze flexibilního serveru Azure Database for PostgreSQL při použití funkce místní aktualizace hlavní verze.
Moduly se specifickými úvahami
Následující seznam obsahuje výčet všech podporovaných modulů, které vyžadují konkrétní aspekty při použití na flexibilním serveru Azure Database for PostgreSQL:
pg_failover_slots
pg_failover_slots
Modul pg_failover_slots vylepšuje Azure Database for PostgreSQL při provozu na serverech, které mají povolenou jak logickou replikaci, tak vysokou dostupnost. Efektivně řeší problém ve standardním engine PostgreSQL, který po failoveru neudržuje sloty logické replikace. Udržování těchto slotů je důležité, aby se zabránilo pozastavení replikace nebo neshodě dat během změn role primárního serveru, což zajišťuje provozní kontinuitu a integritu dat.
Rozšíření zjednodušuje proces převzetí služeb při selhání tím, že spravuje potřebné přenosy, vyčištění a synchronizaci slotů replikace, a tím zajišťuje bezproblémový přechod během změn role serveru.
Další informace a pokyny k použití pg_failover_slots modulu najdete na stránce GitHubu.
Pokud chcete modul použít pg_failover_slots , ujistěte se, že se jeho knihovna načte při spuštění serveru.