Skip to content

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 via GET /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/extensions fortfarande den begärda versionen (extensionRevision) utan några nya poster. Poster per tillägg — namn, status enabled, removed eller failed, samt valfri detail och updatedAt — 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äggPostgreSQL-versionerKräver omstart
timescaledb16, 17, 18Ja
pg_stat_statements14, 15, 16, 17, 18Ja
pg_trgm14–18Nej
pgcrypto14–18Nej

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:

json
{
  "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.