PostgreSQL-tillägg
Tillägg är paket som tillför funktioner till en PostgreSQL-server — extra datatyper och operatorer, kryptografiska funktioner, frågestatistik med mera. På Frostmolns hanterade databaser är tillägg ett PostgreSQL-erbjudande som levereras från plattformens egen tilläggskatalog. MySQL-instanser har inga.
Så fungerar det
- Namnen är katalogvärden, inte fria strängar. Endast namn som plattformens tilläggskatalog annonserar kan aktiveras på en instans. Ett okänt namn ger ett typat HTTP 400 som namnger det —
unknown extension: <name>— och ett namn som katalogen känner till men inte erbjuder för instansens PostgreSQL-version avvisas också. Varje autentiserad tenant kan läsa katalogen viaGET /api/v1/databases/extensions(som läsningarna av typer/versioner/ smaker); fliken Tillägg i portalen erbjuder en katalogväljare, och Terraform-providern kontrollerar namnen mot den aktuella katalogen vid planeringstillfället. - En åtgärd åt gången per instans. Medan en åtgärd pågår avvisas ytterligare en tilläggsåtgärd med HTTP 409:
another operation is already running on this instance; extensions can be applied only while no backup, restore or other operation is in flight — please retry once it completes. Tillägg avvisas också medan en säkerhetskopiering eller återställning pågår. - Plattformen registrerar utfallen en gång, i slutet. Medan en åtgärd pågår visar
GET /api/v1/tenants/:tenant_id/databases/:id/extensionsfortfarande den begärda versionen (extensionRevision) utan några nya poster. Poster per tillägg — namn, statusenabled,removedellerfailed, samt valfridetailochupdatedAt— dyker upp först när åtgärden har avslutats, och ett misslyckat utfall registreras med plattformens förklaring. Det finns ingen uppdelad bevakning per tillägg medan åtgärden pågår.
Katalogen
Uppsättningen som katalogens v1 startade med:
| Tillägg | PostgreSQL-versioner | Kräver omstart |
|---|---|---|
timescaledb | 16, 17, 18 | Ja |
pg_stat_statements | 14, 15, 16, 17, 18 | Ja |
pg_trgm | 14–18 | Nej |
pgcrypto | 14–18 | Nej |
timescaledb och pg_stat_statements kräver shared_preload_libraries, vilket börjar gälla vid uppstart — att aktivera någon av dem startar alltså om instansen. Katalogen växer när fler validerade katalogvärden läggs till i plattformen.
Tillgänglighet och åtkomst
- Öppet för alla tenants. Det registrerade tilläggstillståndet är synligt för vem som helst som ser instansen, och varje tenant kan aktivera eller avaktivera tillägg på sina egna instanser.
- Instanser med hög tillgänglighet hoppas över tills vidare. Begäran avvisas med HTTP 409:
extensions are not yet available for highly available instances; coordinated node sequencing is not built yet - Instanser som skapades innan tillägg lanserades kan inte aktivera dem. Delarna i gästen som åtgärden behöver fastställs vid skapandet, och plattformen avvisar inte begäran i förväg: en aktivering på en sådan instans accepteras och registreras sedan som misslyckade poster i registret. Lösningen är att bygga om — skapa en ny instans och migrera dina data (sidan Hanterade databaser beskriver skapandet och migreringen).
Så använder du tilläggen
Slutpunkten är POST /api/v1/tenants/:tenant_id/databases/:id/extensions. Brödtexten bär riktningen — "op" är "install" för att aktivera och "remove" för att avaktivera — och listan med tilläggsnamn, högst 8 per åtgärd:
{
"op": "install",
"extensions": ["timescaledb"]
}Ett 202 kommer tillbaka med ett operationId, statusen applying_extensions och den extensionRevision begäran satte. Tills åtgärden avslutas visar registret exakt den versionen utan några nya poster för den; när den avslutas dyker posterna upp (se ovan). Två kontroller plattformen gör på direkten: instansen måste vara igång — alla andra lägen avvisas med 409 — och att avaktivera ett tillägg som instansen inte har avvisas med 400.
CLI:n talar om att aktivera och avaktivera och väntar åt dig: fm database postgres instance extensions enable|disable väntar in åtgärden och kontrollerar det registrerade utfallet mot den (--no-wait återkommer så fort begäran har accepterats), och ... extensions list visar registret när du frågar.
I Terraform deklarerar du uppsättningen extensions på resursen frostmoln_postgres_instance — den genererade referensen postgres_instance dokumenterar attributet.
Begränsningarna på ett ställe
- Tillägg finns endast för PostgreSQL — MySQL-instanser har inga.
- Åtgärder accepteras bara medan instansen är igång.
- En åtgärd åt gången per instans.
- Högst 8 namn per åtgärd.