Rozšíření PostgreSQL na flexibilním serveru Azure Database for PostgreSQL
PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL
Flexibilní server Azure Database for PostgreSQL umožňuje rozšířit funkce databáze pomocí rozšíření. Rozšíření sbalí několik souvisejících objektů SQL v jednom balíčku, který lze načíst nebo odebrat z databáze pomocí příkazu. Po načtení do databáze fungují rozšíření jako integrované funkce.
Jak používat rozšíření PostgreSQL
Před instalací rozšíření na flexibilním serveru Azure Database for PostgreSQL je potřeba tato rozšíření povolit pro použití.
Pomocí webu Azure Portal:
- Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
Pomocí Azure CLI:
Rozšíření seznamu povolených můžete povolit pomocí příkazu sady parametrů rozhraní příkazového řádku.
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>
Použití šablony ARM: Následující příklad povolených rozšíření dblink
, dict_xsyn
, pg_buffercache
na serveru, jehož název je postgres-test-server
:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"flexibleServers_name": {
"defaultValue": "postgres-test-server",
"type": "String"
},
"azure_extensions_set_value": {
"defaultValue": " dblink,dict_xsyn,pg_buffercache",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
"apiVersion": "2021-06-01",
"name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
"properties": {
"value": "[parameters('azure_extensions_set_value')]",
"source": "user-override"
}
}
]
}
shared_preload_libraries
je parametr konfigurace serveru, který určuje, které knihovny se musí načíst při spuštění flexibilního serveru Azure Database for PostgreSQL. Všechny knihovny, které používají sdílenou paměť, musí být načteny prostřednictvím tohoto parametru. Pokud je potřeba rozšíření přidat do sdílených knihoven předběžného načtení, postupujte takto:
Pomocí webu Azure Portal:
- Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
- V nabídce prostředků v části Nastavení vyberte Parametry serveru.
- Vyhledejte
shared_preload_libraries
parametr. - Vyberte knihovny, které chcete přidat.
:::image type="content" source="./media/concepts-extensions/shared-libraries.png" alt-text="Screenshot showing Azure Database for PostgreSQL -setting shared preload libraries parameter setting for extensions installation." lightbox="./media/concepts-extensions/shared-libraries.png":::
```Using [Azure CLI](/cli/azure/):
You can set `shared_preload_libraries` via CLI [parameter set](/cli/azure/postgres/flexible-server/parameter?view=azure-cli-latest&preserve-view=true) command.
```azurecli
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>
Vytvoření rozšíření
Po povolení a načtení rozšíření je nutné je nainstalovat do každé databáze, ve které je plánujete použít.
- Aby uživatel vytvořil rozšíření, musí být členem
azure_pg_admin
role. Členazure_pg_admin
role může ostatním uživatelům udělit oprávnění k vytváření rozšíření. - Pokud chcete nainstalovat konkrétní rozšíření, měli byste spustit příkaz CREATE EXTENSION . Tento příkaz načte zabalené objekty do databáze.
Poznámka:
Rozšíření třetích stran nabízená na flexibilním serveru Azure Database for PostgreSQL jsou opensourcový licencovaný kód. V současné době nenabízíme žádná rozšíření třetích stran ani verze rozšíření s prémiovými nebo proprietárními licenčními modely.
Flexibilní instance serveru Azure Database for PostgreSQL podporuje podmnožinu klíčových rozšíření PostgreSQL, jak je uvedeno v následující tabulce. Tyto informace jsou k dispozici také spuštěním SHOW azure.extensions;
příkazu . Rozšíření, která nejsou uvedená v tomto dokumentu, nejsou na flexibilním serveru Azure Database for PostgreSQL podporovaná. Na flexibilním serveru Azure Database for PostgreSQL nemůžete vytvořit ani načíst vlastní rozšíření.
Verze rozšíření
Flexibilní server Azure Database for PostgreSQL nabízí následující rozšíření:
Poznámka:
Rozšíření v následující tabulce se značkou ✔️ vyžadují povolení odpovídajících knihoven v parametru shared_preload_libraries
serveru.
Název rozšíření | Popis | PostgreSQL 17 | PostgreSQL 16 | PostgreSQL 15 | PostgreSQL 14 | PostgreSQL 13 | PostgreSQL 12 | PostgreSQL 11 |
---|---|---|---|---|---|---|---|---|
address_standardizer | Používá se k analýze adresy do základních prvků. Obecně se používá k podpoře kroku normalizace geokódování adres. | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
address_standardizer_data_us | Příklad datové sady Standardizer v USA | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
age (Preview) | Poskytuje možnosti grafové databáze. | – | 1.5.0 ✔️ | 1.5.0 ✔️ | 1.5.0 ✔️ | 1.5.0 ✔️ | – | N/A |
amcheck | Funkce pro ověřování integrity relací | 1.4 | 1.3 | 1.3 | 1.3 | 1.2 | 1.2 | 1,1 |
anon (Preview) | Nástroje pro anonymizaci dat | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ |
azure_ai | Integrace Azure AI a ML Services pro PostgreSQL | – | 1.1.0 | 1.1.0 | 1.1.0 | 1.1.0 | 1.1.0 | – |
azure_storage | Integrace Azure pro PostgreSQL | – | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ | – |
kvést | Přístupová metoda Bloomu – index založený na souboru podpisu | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
btree_gin | Podpora indexování běžných datových typů v GIN | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
btree_gist | Podpora indexování běžných datových typů v GiST | 1,7 | 1,7 | 1,7 | 1.6 | 1.5 | 1.5 | 1.5 |
citext | Datový typ pro řetězce znaků bez rozlišování malých a velkých písmen | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 |
krychle | Datový typ pro multidimenzionální datové krychle | 1.5 | 1.5 | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 |
dblink | Připojení k jiným databázím PostgreSQL z databáze | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
dict_int | Šablona slovníku pro vyhledávání textu pro celá čísla | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
dict_xsyn | Šablona slovníku vyhledávání textu pro rozšířené zpracování synonym | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
zemitost | Výpočet vzdáleností velkého kruhu na povrchu Země | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 |
fuzzystrmatch | Určení podobností a vzdálenosti mezi řetězci | 1.2 | 1.2 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 |
hstore | Datový typ pro ukládání sad párů klíčů (klíč, hodnota) | 1.8 | 1.8 | 1.8 | 1.8 | 1,7 | 1.6 | 1.5 |
hypopg | Hypotetické indexy pro PostgreSQL | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 |
Intagg | Agregátor integer a enumerátor (zastaralé) | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 |
intarray | Podpora funkcí, operátorů a indexů pro 1D pole celých čísel | 1.5 | 1.5 | 1.5 | 1.5 | 1.3 | 1.2 | 1.2 |
Datové typy pro mezinárodní standardy číslování výrobků | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | |
hle | Údržba velkých objektů | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 |
login_hook | Login_hook – spuštění login_hook.login() při přihlášení | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 |
Ltree | Datový typ pro hierarchické stromové struktury | 1.3 | 1.2 | 1.2 | 1.2 | 1.2 | 1,1 | 1,1 |
oracle_fdw | Obálka cizích dat pro databáze Oracle | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | – |
orafce | Funkce a operátory, které emulují podmnožinu funkcí a balíčků z Oracle RDBMS | 4,9 | 4.4 | 3.24 | 3.18 | 3.18 | 3.18 | 3.7 |
pageinspect | Kontrola obsahu databázových stránek na nízké úrovni | 1.12 | 1.12 | 1.11 | 1,9 | 1.8 | 1,7 | 1,7 |
pgaudit | Poskytuje funkce auditování. | 16,0 ✔️ | 16,0 ✔️ | 1.7 ✔️ | 1.6.2 ✔️ | 1,5 ✔️ | 1.4.3 ✔️ | 1.3.2 ✔️ |
pg_buffercache | Prozkoumání mezipaměti sdílené vyrovnávací paměti | 1.5 | 1.4 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_cron | Plánovač úloh pro PostgreSQL | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.4-1 ✔️ |
pgcrypto | Kryptografické funkce | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_freespacemap | Prozkoumání mapy volného místa (FSM) | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_hint_plan | Umožňuje upravit plány provádění PostgreSQL pomocí takzvaných tipů v komentářích SQL. | 1.7.0 ✔️ | 1.6.0 ✔️ | 1,5 ✔️ | 1.4 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ |
pglogical | Logická replikace PostgreSQL | 2.4.5 ✔️ | 2.4.4 ✔️ | 2.4.2 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ |
pg_partman | Rozšíření pro správu dělených tabulek podle času nebo ID | 5.0.1 ✔️ | 5.0.1 ✔️ | 4.7.1 ✔️ | 4.6.1 ✔️ | 4.5.0 ✔️ | 4.5.0 ✔️ | 4.5.0 ✔️ |
pg_prewarm | Předzřetěná data relačních dat | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ |
pg_repack | Změna uspořádání tabulek v databázích PostgreSQL s minimálními zámky | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 |
pgrouting | Rozšíření PgRouting | – | N/A | 3.5.0 | 3.3.0 | 3.3.0 | 3.3.0 | 3.3.0 |
pgrowlocks | Zobrazení informací o uzamčení na úrovni řádků | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_squeeze | Nástroj pro odebrání nevyužitého místa z relace. | 1.7 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ |
pg_stat_statements | Sledování statistik provádění všech spuštěných příkazů SQL | 1.11 ✔️ | 1.10 ✔️ | 1.10 ✔️ | 1,9 ✔️ | 1,8 ✔️ | 1.7 ✔️ | 1.6 ✔️ |
pgstattuple | Zobrazení statistiky na úrovni řazené kolekce členů | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 |
pg_trgm | Měření podobnosti textu a vyhledávání indexů na základě trigramů | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 | 1.4 | 1.4 |
pg_visibility | Prozkoumání mapy viditelnosti (virtuálního počítače) a informací o viditelnosti na úrovni stránky | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
plpgsql | Procedurální jazyk PL/pgSQL | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
plv8 | Důvěryhodný procedurální jazyk PL/JavaScript (v8) | 3.1.7 | 3.1.7 | 3.1.7 | 3.0.0 | 3.0.0 | 3.0.0 | 3.0.0 |
postgis | Geometrie PostGIS a geografické prostorové typy a funkce | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_raster | Rasterové typy a funkce PostGIS | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_sfcgal | Funkce PostGIS SFCGAL | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_tiger_geocoder | PostGIS tiger geocoder a reverzní geokódér | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_topology | Prostorové typy a funkce topologie PostGIS | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgres_fdw | Obálka cizích dat pro vzdálené servery PostgreSQL | 1,1 | 1,1 | 1,1 | 1,1 | 1.0 | 1.0 | 1.0 |
postgres_protobuf | Vyrovnávací paměti protokolu pro PostgreSQL | 0,2 | 0,2 | 0,2 | 0,2 | 0,2 | 0,2 | – |
semver | Datový typ sémantické verze | 0.32.1 | 0.32.1 | 0.32.0 | 0.32.0 | 0.32.0 | 0.32.0 | 0.32.0 |
session_variable | Session_variable – registrace a manipulace s proměnnými relace a konstantami | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 |
sslinfo | Informace o certifikátech SSL | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
tablefunc | Funkce, které manipulují s celými tabulkami, včetně křížové tabulky | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tds_fdw | Obálka cizích dat pro dotazování databáze TDS (Sybase nebo Microsoft SQL Server) | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 |
timescaledb | Umožňuje škálovatelné vkládání a složité dotazy pro data časových řad. | – | 2.13.0 ✔️ | 2.10.0 ✔️ | 2.10.0 ✔️ | 2.10.0 ✔️ | 2.10.0 ✔️ | 1.7.4 ✔️ |
tsm_system_rows | Metoda TABLESAMPLE, která přijímá počet řádků jako limit | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tsm_system_time | Metoda TABLESAMPLE, která jako limit přijímá čas v milisekundách | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
unaccent | Slovník pro vyhledávání textu, který odebere zvýraznění | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 |
uuid-ossp | Generování univerzálních jedinečných identifikátorů (UUID) | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 | 1,1 |
vektor | Vektorový datový typ a metody přístupu ivfflat a hnsw | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.5.1 |
Upgrade rozšíření PostgreSQL
Místní upgrady rozšíření databáze jsou povoleny jednoduchým příkazem. Tato funkce umožňuje zákazníkům automaticky aktualizovat rozšíření třetích stran na nejnovější verze a udržovat aktuální a zabezpečené systémy bez ručního úsilí.
Aktualizace rozšíření
Pokud chcete aktualizovat nainstalované rozšíření na nejnovější dostupnou verzi podporovanou v Azure, použijte následující příkaz SQL:
ALTER EXTENSION <extension_name> UPDATE;
Tento příkaz zjednodušuje správu rozšíření databáze tím, že uživatelům umožňuje ruční upgrade na nejnovější verzi schválenou Azure, což zvyšuje kompatibilitu i zabezpečení.
Omezení
Aktualizace rozšíření je sice jednoduchá, ale existují určitá omezení:
- Výběr konkrétní verze: Příkaz nepodporuje aktualizaci na zprostředkující verze rozšíření. Vždy se aktualizuje na nejnovější dostupnou verzi.
- Downgrading: Nepodporuje downgradování rozšíření na předchozí verzi. Pokud je potřeba downgrade, může vyžadovat pomoc s podporou a závisí na dostupnosti předchozí verze.
Nainstalovaná rozšíření
Pokud chcete zobrazit seznam rozšíření aktuálně nainstalovaných v databázi, použijte následující příkaz SQL:
SELECT * FROM pg_extension;
Dostupná rozšíření a jejich verze
Pokud chcete zkontrolovat, které verze rozšíření jsou k dispozici pro aktuální instalaci databáze, zadejte dotaz na pg_available_extensions
zobrazení katalogu systému. Pokud chcete například určit verzi dostupnou azure_ai
pro rozšíření, spusťte:
SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';
Tyto příkazy poskytují nezbytné přehledy o konfiguracích rozšíření databáze a pomáhají efektivně a bezpečně udržovat vaše systémy. Díky zajištění jednoduchých aktualizací nejnovějších verzí rozšíření podporuje Azure Database for PostgreSQL robustní, zabezpečenou a efektivní správu databázových aplikací.
Důležité informace týkající se flexibilního serveru Azure Database for PostgreSQL
Následuje seznam podporovaných rozšíření, která vyžadují určité konkrétní aspekty při použití ve službě flexibilního serveru Azure Database for PostgreSQL. Seznam je abecedně seřazený.
dblink
Dblink umožňuje připojit se z jedné instance flexibilního serveru Azure Database for PostgreSQL k jiné nebo k jiné databázi na stejném serveru. Flexibilní server 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 plánujete použít toto rozšíření, doporučujeme nasadit 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ě virtuální sítě.
pg_buffercache
pg_buffercache
lze použít ke studiu obsahu shared_buffers. Pomocí tohoto rozšíření můžete zjistit, jestli je konkrétní relace uložena do mezipaměti (v shared_buffers
). Toto rozšíření vám může pomoct při řešení potíží s výkonem (problémy související s výkonem související s ukládáním do mezipaměti).
Toto rozšíření je integrované s základní instalací PostgreSQL a snadno se instaluje.
CREATE EXTENSION pg_buffercache;
pg_cron
pg_cron je jednoduchý plánovač úloh založený na cron pro PostgreSQL, který běží uvnitř databáze jako rozšíření. Rozšíření pg_cron
lze použít ke spouštění naplánovaných úloh údržby v databázi PostgreSQL. Můžete například spustit pravidelné vakuum tabulky nebo odebrat staré datové úlohy.
pg_cron
může paralelně spouštět více úloh, ale současně běží nejvýše jednu instanci úlohy. Pokud se má spustit druhé spuštění před dokončením prvního spuštění, druhé spuštění se zařadí do fronty a spustí se hned po dokončení prvního spuštění. Tímto způsobem je zajištěno, že úlohy běží přesně tolikrát, kolikrát je naplánováno, a nespustí se souběžně s sebou.
Některé příklady:
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'$$);
Chcete-li spustit úklid 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ů od 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;
Chcete-li spustit úklid každý den v 10:00 (GMT) v databázi "testcron" pod azure_pg_admin účet role.
SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);
Poznámka:
pg_cron rozšíření se předem načte shared_preload_libraries
pro každou instanci flexibilního serveru Azure Database for PostgreSQL uvnitř databáze postgres, abyste měli možnost plánovat spouštění úloh v jiných databázích v rámci instance flexibilního serveru Azure Database for PostgreSQL bez ohrožení zabezpečení. Z bezpečnostních důvodů ale stále musíte povolit rozšíření seznamu pg_cron
povolených a nainstalovat ho pomocí příkazu CREATE EXTENSION .
pg_cron
Počínaje verzí 1.4 můžete pomocí cron.schedule_in_database
funkcí cron.alter_job
naplánovat úlohu v konkrétní databázi a aktualizovat existující plán.
Některé příklady:
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');
Poznámka:
cron_schedule_in_database
funkce umožňuje uživatelské jméno jako volitelný parametr. Nastavení uživatelského jména na nenulovou hodnotu vyžaduje oprávnění superuživatele PostgreSQL a na flexibilním serveru Azure Database for PostgreSQL se nepodporuje. Předchozí příklady ukazují spuštění této funkce s volitelným parametrem uživatelského jména vynechaným nebo nastaveným na hodnotu null, která spouští úlohu v kontextu plánování úlohy uživatele, která by měla mít azure_pg_admin oprávnění role.
Aktualizace nebo změna názvu databáze pro existující plán
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_failover_slots
Rozšíření slotů převzetí služeb při selhání PG vylepšuje flexibilní server Azure Database for PostgreSQL při provozu s logickou replikací i servery s povolenou vysokou dostupností. Efektivně řeší výzvu v rámci standardního modulu PostgreSQL, který po převzetí služeb při selhání nezachovává 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. Rozšíření je podporované pro PostgreSQL verze 11 až 16.
Další informace a způsob použití rozšíření PG Failover Slots najdete na stránce GitHubu.
Povolení pg_failover_slots
Pokud chcete povolit rozšíření slotů převzetí služeb při selhání PG pro instanci flexibilního serveru Azure Database for PostgreSQL, musíte upravit konfiguraci serveru zahrnutím rozšíření do sdílených knihoven předběžného načtení serveru a úpravou konkrétního parametru serveru. Postup je následující:
- Přidejte
pg_failover_slots
do sdílených knihoven předběžného načtení serveru aktualizací parametrushared_preload_libraries
. - Změňte parametr
hot_standby_feedback
serveru naon
.
Všechny změny parametru shared_preload_libraries
vyžadují, aby se projevilo restartování serveru.
Pomocí webu Azure Portal:
- Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
- V nabídce prostředků v části Nastavení vyberte Parametry serveru.
- Vyhledejte
shared_preload_libraries
parametr a upravte jeho hodnotu tak, aby zahrnovalapg_failover_slots
. - Vyhledejte
hot_standby_feedback
parametr a nastavte jeho hodnotu naon
. - Výběrem možnosti Uložit zachováte provedené změny. Teď máte možnost Uložit a restartovat. Tuto možnost zvolte, pokud chcete zajistit, aby se změny projevily, protože úpravy
shared_preload_libraries
vyžadují restartování serveru.
Výběrem možnosti Uložit a restartovat se server automaticky restartuje a použije právě provedené změny. Jakmile je server opět online, rozšíření slotů převzetí služeb při selhání pg je povolené a funkční na vaší primární instanci flexibilního serveru Azure Database for PostgreSQL připravené ke zpracování slotů logické replikace během převzetí služeb při selhání.
pg_hint_plan
pg_hint_plan
umožňuje v komentářích SQL upravit plány provádění PostgreSQL pomocí tzv. "hints", například:
/*+ SeqScan(a) */
pg_hint_plan
čte nápovědu frází v komentáři speciálního tvaru zadaného pomocí cílového příkazu SQL. Speciální formulář začíná sekvencí znaků /*+a končí znakem "*/". Fráze nápovědy se skládají z názvu nápovědy a následujících parametrů uzavřených závorky a oddělené mezerami. Nové řádky pro čitelnost můžou každou nápovědu oddělovat.
Příklad:
/*+
HashJoin(a b)
SeqScan(a)
*/
SELECT *
FROM pgbench_branches b
JOIN pgbench_accounts an ON b.bid = a.bid
ORDER BY a.aid;
Předchozí příklad způsobí, že plánovač použije výsledky seq scan
tabulky, která se zkombinuje s tabulkou b jako a hash join
.
Pokud chcete nainstalovat pg_hint_plan navíc, abyste ho mohli zahrnout do seznamu povolených, jak je znázorněno v tom, jak používat rozšíření PostgreSQL, musíte ho zahrnout do sdílených knihoven předběžného načtení serveru. Změna parametru shared_preload_libraries
Postgres vyžaduje , aby se projevilo restartování serveru. Parametry můžete změnit pomocí webu Azure Portal nebo Azure CLI.
Pomocí webu Azure Portal:
- Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
- V nabídce prostředků v části Nastavení vyberte Parametry serveru.
- Vyhledejte
shared_preload_libraries
parametr a upravte jeho hodnotu tak, aby zahrnovalapg_hint_plan
. - Výběrem možnosti Uložit zachováte provedené změny. Teď máte možnost Uložit a restartovat. Tuto možnost zvolte, pokud chcete zajistit, aby se změny projevily, protože úpravy
shared_preload_libraries
vyžadují restartování serveru. Teď můžete povolit pg_hint_plan flexibilní serverovou databázi Azure Database for PostgreSQL. Připojte se k databázi a zadejte následující příkaz:
CREATE EXTENSION pg_hint_plan;
pg_prewarm
Rozšíření pg_prewarm
načte relační data do mezipaměti. Předběžné sestavení mezipamětí znamená, že vaše dotazy mají lepší dobu odezvy při prvním spuštění po restartování. Funkce automatického předwarmu v současné době není dostupná na flexibilním serveru Azure Database for PostgreSQL.
pg_repack
Typická otázka, kterou se lidé ptají, když se poprvé pokusí použít toto rozšíření: Je pg_repack rozšíření nebo spustitelný soubor na straně klienta, jako je psql nebo pg_dump?
Odpověď na to je, že je to ve skutečnosti 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 druhou stranu pg_repack/bin uchovává kód klientské aplikace, který ví, jak pracovat s artefakty programovatelnosti vytvořené rozšířením. 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, tím, že uživateli nabízí některé možnosti příkazového řádku, které jsou snadněji pochopitelné. Klientská aplikace bez rozšíření vytvořeného v databázi, na kterou odkazuje, je zbytečná. Rozšíření na straně serveru by samo o sobě bylo plně funkční, ale vyžadovalo by, aby uživatel porozuměl složitému vzoru interakce, který 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.
Oprávnění odepřeno pro opětovné zabalení schématu
Od této chvíle je vzhledem k tomu, jakým způsobem udělujeme oprávnění ke schématu opětovného balení vytvořenému tímto rozšířením, je podporováno pouze spouštění pg_repack funkcí 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, skončí s chybou, jako je následující:
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, ujistěte se, že spouštíte pg_repack z kontextu azure_pg_admin
.
pg_stat_statements
Rozšíření pg_stat_statements poskytuje zobrazení všech dotazů, které jsou spuštěné ve vaší databázi. To je užitečné k pochopení toho, jak výkon úloh dotazů vypadá v produkčním systému.
Rozšíření pg_stat_statements se předem načte na shared_preload_libraries
každou instanci flexibilního serveru Azure Database for PostgreSQL, která vám poskytne způsob sledování statistik provádění příkazů SQL.
Z bezpečnostních důvodů ale stále musíte povolit rozšíření pg_stat_statements seznamupovolených a nainstalovat ho pomocí příkazu CREATE EXTENSION.
Nastavení pg_stat_statements.track
, které řídí, jaké příkazy jsou počítány rozšířením, výchozí nastavení , což znamená, že všechny příkazy top
vydané přímo klienty jsou sledovány. Dvě další úrovně sledování jsou none
a all
. Toto nastavení je konfigurovatelné jako parametr serveru.
Je potřeba najít kompromis mezi informacemi o spouštění dotazů, které poskytuje rozšíření pg_stat_statements
, a dopadem na výkon serveru při protokolování jednotlivých příkazů SQL. Pokud rozšíření aktivně nepoužíváte pg_stat_statements
, doporučujeme nastavit pg_stat_statements.track
možnost none
. Některé monitorovací služby třetích stran se můžou spoléhat na pg_stat_statements
poskytování přehledů výkonu dotazů, takže ověřte, jestli se jedná o případ za vás, nebo ne.
postgres_fdw
postgres_fdw umožňuje připojení z jedné instance flexibilního serveru Azure Database for PostgreSQL k jiné nebo k jiné databázi na stejném serveru. Flexibilní server 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 plánujete použít toto rozšíření, doporučujeme nasadit 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ě virtuální sítě.
pgstattuple
Při použití rozšíření pgstattuple k pokusu o získání statistiky řazené kolekce členů z objektů uložených ve pg_toast
schématu ve verzích Postgres 11 až 13 se zobrazí chyba "oprávnění odepřeno pro schéma pg_toast".
Oprávnění odepřena pro pg_toast schématu
Zákazníci používající PostgreSQL verze 11 až 13 ve službě Azure Database for Flexible Server nemůžou pgstattuple
rozšíření použít u objektů v rámci schématu pg_toast
.
V PostgreSQL 16 a 17 pg_read_all_data
se role automaticky udělí azure_pg_admin
, což umožňuje pgstattuple
správné fungování. V PostgreSQL 14 a 15 můžou zákazníci roli udělit pg_read_all_data
ručně, aby azure_pg_admin
dosáhli stejného výsledku. V PostgreSQL 11 až 13 však pg_read_all_data
role neexistuje.
Zákazníci nemohou přímo udělit potřebná oprávnění. Pokud potřebujete mít možnost spustit pgstattuple
přístup k objektům v rámci schématupg_toast
, pokračujte vytvořením požadavku podpora Azure.
TimescaleDB
TimescaleDB je databáze časových řad, která je zabalená jako rozšíření pro PostgreSQL. TimescaleDB poskytuje časově orientované analytické funkce, optimalizace a škálování Postgres pro úlohy časových řad. Přečtěte si další informace o sadě TimescaleDB, registrovanou ochrannou známku flexibilního serveru Timescale, Inc. Azure Database for PostgreSQL poskytuje edici TimescaleDB Apache-2.
Instalace timescaleDB
Pokud chcete kromě toho nainstalovat timescaleDB, aby bylo možné ji uvést, jak je znázorněno výše, musíte ji zahrnout do sdílených knihoven předběžného načtení serveru. Změna parametru shared_preload_libraries
Postgres vyžaduje , aby se projevilo restartování serveru. Parametry můžete změnit pomocí webu Azure Portal nebo Azure CLI.
Pomocí webu Azure Portal:
- Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
- V nabídce prostředků v části Nastavení vyberte Parametry serveru.
- Vyhledejte
shared_preload_libraries
parametr a upravte jeho hodnotu tak, aby zahrnovalaTimescaleDB
. - Výběrem možnosti Uložit zachováte provedené změny. Teď máte možnost Uložit a restartovat. Tuto možnost zvolte, pokud chcete zajistit, aby se změny projevily, protože úpravy
shared_preload_libraries
vyžadují restartování serveru. Ve své flexibilní serverové databázi Azure Database for PostgreSQL teď můžete povolit timescaleDB. Připojte se k databázi a zadejte následující příkaz:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
Tip
Pokud se zobrazí chyba, po uložení shared_preload_libraries potvrďte, že jste server restartovali.
Teď můžete vytvořit hypertable timescaleDB úplně od začátku nebo migrovat stávající data časových řad v PostgreSQL.
Obnovení databáze časové osy pomocí pg_dump a pg_restore
Chcete-li obnovit databázi časové osy pomocí pg_dump a pg_restore, musíte v cílové databázi spustit dva pomocné postupy: timescaledb_pre_restore()
a timescaledb_post restore()
.
Nejprve připravte cílovou databázi:
--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();
Teď můžete spustit pg_dump v původní databázi a pak provést pg_restore. Po obnovení nezapomeňte v obnovené databázi spustit následující příkaz:
SELECT timescaledb_post_restore();
Další podrobnosti o metodě obnovení s databází s povolenou časovou osou najdete v dokumentaci k časovému měřítku.
Obnovení databáze časové osy pomocí zálohy timescaledb
Při spuštění SELECT timescaledb_post_restore()
výše uvedeného postupu se může zobrazit chyba odepření oprávnění při aktualizaci příznaku timescaledb.restoring. Důvodem je omezené oprávnění ALTER DATABASE v databázových službách Cloud PaaS. V takovém případě můžete pomocí nástroje provést alternativní metodu timescaledb-backup
zálohování a obnovení databáze časové osy. Timescaledb-backup je program pro jednodušší dumping a obnovení databáze TimescaleDB, méně náchylné k chybám a výkonnější.
Pokud to chcete udělat, měli byste postupovat následovně:
- Tady najdete podrobné informace o instalaci nástrojů.
- Vytvoření cílové instance a databáze flexibilního serveru Azure Database for PostgreSQL
- Povolení rozšíření časové osy, jak je znázorněno výše
- Udělení
azure_pg_admin
role uživateli, který bude používat ts-restore - Spuštění příkazu ts-restore pro obnovení databáze
Další podrobnosti o těchto nástrojích najdete tady.
Upgrade rozšíření a hlavní verze
Flexibilní server Azure Database for PostgreSQL zavedl funkci místního upgradu hlavní verze, která provádí místní upgrade instance flexibilního serveru Azure Database for PostgreSQL jediným kliknutím. Místní upgrade hlavní verze zjednodušuje proces upgradu flexibilního serveru Azure Database for PostgreSQL a minimalizuje přerušení přístupu uživatelů a aplikací k serveru. Místní upgrade hlavní verze nepodporuje konkrétní rozšíření a pro upgrade určitých rozšíření existují určitá omezení. Rozšíření anon, Apache AGE, dblink, orafce, pgaudit, postgres_fdw a Timescaledb nejsou podporovány pro všechny verze flexibilních serverů Azure Database for PostgreSQL při použití funkce místní aktualizace hlavní verze.