Hantera hög tillgänglighet

Viktigt!

Lakebase Autoscaling är den senaste versionen av Lakebase, med automatisk skalningsberäkning, skalning till noll, förgrening och omedelbar återställning. Information om regioner som stöds finns i Regiontillgänglighet. Om du är en Lakebase Provisioned-användare kan du läsa Lakebase Provisioned.

Den här guiden beskriver hur du aktiverar och hanterar hög tillgänglighet för dina Lakebase-slutpunkter. För att få bakgrundsinformation om hur hög tillgänglighet fungerar och hur sekundära beräkningsinstanser skiljer sig från fristående läsrepliker, se Hög tillgänglighet.

Aktivera hög tillgänglighet

Om du vill aktivera hög tillgänglighet anger du beräkningstypen och HA-konfigurationen i användargränssnittet eller konfigurerar slutpunktens EndpointGroupSpec via API:et.

Förutsättningar

  • Skala till noll måste inaktiveras. I användargränssnittet anger du Skala till noll till Av i redigeringspanelen för beräkningar. Via API:et anger du no_suspension: true i slutpunktsspecifikationen (använd spec.suspension som uppdateringsmask).

Användargränssnitt (UI)

När du har skapat ett projekt klickar du på den primära beräkningslänken från projektinstrumentpanelen för att öppna redigera beräkningslådan.

Projektinstrumentpanelen som visar produktionsgrenen med dess huvudsakliga beräkningslänk

Ange Beräkningstyp till Hög tillgänglighet och välj sedan en Konfiguration under Hög tillgänglighet:

  • 2 (1 primär, 1 sekundär),
  • 3 (1 primär, 2 sekundär),
  • eller 4 (1 primär, 3 sekundär) totala beräkningsinstanser.

Redigera beräkningslådan med växlingsknappen Beräkningstyp inställd på Hög tillgänglighet och listrutan Konfiguration med alternativ för totalt 2, 3 eller 4 beräkningsinstanser

Lakebase etablerar sekundära beräkningsinstanser i olika tillgänglighetszoner. När alla beräkningsinstanser är aktiva har slutpunkten automatisk redundansväxling.

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
    Endpoint, EndpointSpec, EndpointType, EndpointGroupSpec, FieldMask
)

w = WorkspaceClient()

endpoint_name = "projects/my-project/branches/production/endpoints/my-endpoint"

result = w.postgres.update_endpoint(
    name=endpoint_name,
    endpoint=Endpoint(
        name=endpoint_name,
        spec=EndpointSpec(
            endpoint_type=EndpointType.ENDPOINT_TYPE_READ_WRITE,
            group=EndpointGroupSpec(
                min=2,
                max=2,
                enable_readable_secondaries=True
            )
        )
    ),
    update_mask=FieldMask(field_mask=["spec.group"])
).wait()

print(f"Group size: {result.status.group.max}")
print(f"Host: {result.status.hosts.host}")
print(f"Read-only host: {result.status.hosts.read_only_host}")

CLI

databricks postgres update-endpoint \
  projects/my-project/branches/production/endpoints/my-endpoint \
  "spec.group" \
  --json '{
    "spec": {
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }'

lockig

curl -X PATCH "$DATABRICKS_HOST/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-endpoint?update_mask=spec.group" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-endpoint",
    "spec": {
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }' | jq

Konfigurera skrivskyddad åtkomst till sekundära beräkningsinstanser

Tillåt åtkomst till skrivskyddade beräkningsinstanser styr om sekundära beräkningsinstanser hanterar lästrafik via -ro connection string.

Användargränssnitt (UI)

  1. På fliken Beräkning klickar du på Redigera på den primära beräkningen.
  2. Under Hög tillgänglighet kontrollerar eller avmarkerar du Tillåt åtkomst till skrivskyddade beräkningsinstanser.
  3. Klicka på Spara.

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
    Endpoint, EndpointSpec, EndpointType, EndpointGroupSpec, FieldMask
)

w = WorkspaceClient()

endpoint_name = "projects/my-project/branches/production/endpoints/my-endpoint"

# Get current group size first
current = w.postgres.get_endpoint(name=endpoint_name)
current_size = current.status.group.max

w.postgres.update_endpoint(
    name=endpoint_name,
    endpoint=Endpoint(
        name=endpoint_name,
        spec=EndpointSpec(
            endpoint_type=EndpointType.ENDPOINT_TYPE_READ_WRITE,
            group=EndpointGroupSpec(
                min=current_size,
                max=current_size,
                enable_readable_secondaries=True  # set False to disable
            )
        )
    ),
    update_mask=FieldMask(field_mask=["spec.group.enable_readable_secondaries"])
).wait()

CLI

# Replace 2 with your current group size
databricks postgres update-endpoint \
  projects/my-project/branches/production/endpoints/my-endpoint \
  "spec.group.enable_readable_secondaries" \
  --json '{
    "spec": {
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }'

lockig

# Replace 2 with your current group size
curl -X PATCH "$DATABRICKS_HOST/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-endpoint?update_mask=spec.group.enable_readable_secondaries" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-endpoint",
    "spec": {
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }' | jq

Varning

Med endast one sekundär beräkningsinstans och läsåtkomst aktiverad avbryts all lästrafik på -ro connection string under en redundansväxling tills en ersättning har lagts till. För elastisk läsåtkomst konfigurerar du två eller flera sekundära beräkningsinstanser med läsåtkomst aktiverad.

Ändra antalet sekundära beräkningsinstanser

Användargränssnitt (UI)

  1. På fliken Beräkning klickar du på Redigera på den primära beräkningen.
  2. Under Hög tillgänglighet väljer du en ny Beräkningskonfiguration från listrutan (2, 3 eller 4 totala beräkningsinstanser).
  3. Klicka på Spara.

Anmärkning

Om du vill inaktivera hög tillgänglighet anger du Beräkningstyp tillbaka till Enskild beräkning. Detta tar bort alla sekundära beräkningsinstanser och slutpunkten återgår till en enda beräkningskonfiguration.

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
    Endpoint, EndpointSpec, EndpointType, EndpointGroupSpec, FieldMask
)

w = WorkspaceClient()

endpoint_name = "projects/my-project/branches/production/endpoints/my-endpoint"

# Scale to 3 compute instances (1 primary + 2 secondaries)
w.postgres.update_endpoint(
    name=endpoint_name,
    endpoint=Endpoint(
        name=endpoint_name,
        spec=EndpointSpec(
            endpoint_type=EndpointType.ENDPOINT_TYPE_READ_WRITE,
            group=EndpointGroupSpec(min=3, max=3)
        )
    ),
    update_mask=FieldMask(field_mask=["spec.group.min", "spec.group.max"])
).wait()

CLI

# Scale to 3 compute instances (1 primary + 2 secondaries)
databricks postgres update-endpoint \
  projects/my-project/branches/production/endpoints/my-endpoint \
  "spec.group.min,spec.group.max" \
  --json '{
    "spec": {
      "group": { "min": 3, "max": 3 }
    }
  }'

lockig

curl -X PATCH "$DATABRICKS_HOST/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-endpoint?update_mask=spec.group.min,spec.group.max" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-endpoint",
    "spec": {
      "group": { "min": 3, "max": 3 }
    }
  }' | jq

Visa status och roller för hög tillgänglighet

Fliken Beräkning visar varje beräkningsinstans i konfigurationen för hög tillgänglighet med dess aktuella roll, status och åtkomstnivå.

Fliken Beräkning som visar en primär beräkningsinstans med läs-/skrivåtkomst och tre sekundära beräkningsinstanser med skrivskyddad åtkomst, alla ACTIVE

Kolumn Värden
Befattning Primär, sekundär
Status Startar, Aktiv
Access Läs/skriv (primär), Skrivskyddad (sekundär beräkningsinstans med åtkomst aktiverad), Inaktiverad (sekundär beräkningsinstans utan läsåtkomst)

Det primära beräkningshuvudet visar också slutpunkts-ID, autoskalningsintervall och sekundärt antal (t.ex. 8 ↔ 16 CU · 3 secondaries).

Hämta anslutningssträngar

Användargränssnitt (UI)

Klicka på Anslut på den primära beräkningen för att öppna dialogrutan med anslutningsinformation. Listrutan Compute visar båda anslutningsalternativen för slutpunkten för hög tillgänglighet.

Dialogrutan för anslutningsinformation visar listrutan för Beräkning öppen med alternativ för Primär och Sekundär skrivskyddad (RO) och den skrivskyddade anslutningssträngen visas

Beräkningsalternativ Anslutningssträng Använd för
Primary (name) ● Active {endpoint-id}.database.{region}.databricks.com Alla skriv- och läs-/skrivanslutningar
Secondary (name) ● Active RO {endpoint-id}-ro.database.{region}.databricks.com Läsa av till sekundära beräkningsinstanser

-ro connection string är bara tillgängligt när Tillåt åtkomst till skrivskyddade beräkningsinstanser är aktiverat.

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

endpoint = w.postgres.get_endpoint(
    name="projects/my-project/branches/production/endpoints/my-endpoint"
)

print(f"Read/write host: {endpoint.status.hosts.host}")
print(f"Read-only host:  {endpoint.status.hosts.read_only_host}")

CLI

databricks postgres get-endpoint \
  projects/my-project/branches/production/endpoints/my-endpoint \
  -o json | jq '{rw_host: .status.hosts.host, ro_host: .status.hosts.read_only_host}'

lockig

curl -X GET "$DATABRICKS_HOST/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-endpoint" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  | jq '{rw_host: .status.hosts.host, ro_host: .status.hosts.read_only_host}'

För fullständig referens av anslutningssträngar, se Anslutningssträngar.

Nästa steg