Freigeben über


Verwalten der Hochverfügbarkeit

Von Bedeutung

Lakebase Autoscaling ist die neueste Version von Lakebase mit automatischer Berechnung, Skalierung bis Null, Verzweigung und sofortiger Wiederherstellung. Unterstützte Regionen finden Sie unter "Verfügbarkeit der Region". Wenn Sie ein Lakebase Provisioned-Benutzer sind, lesen Sie Lakebase Provisioned.

In diesem Handbuch wird beschrieben, wie Sie hohe Verfügbarkeit für Ihre Lakebase-Endpunkte aktivieren und verwalten können. Hintergrundinformationen dazu, wie hochverfügbarkeit funktioniert und wie sich sekundäre Computeinstanzen von eigenständigen Lesereplikaten unterscheiden, finden Sie unter "Hohe Verfügbarkeit".

Hohe Verfügbarkeit aktivieren

Um hohe Verfügbarkeit zu ermöglichen, legen Sie den Computetyp und die HA-Konfiguration in der Benutzeroberfläche fest, oder konfigurieren Sie den Endpunkt EndpointGroupSpec über die API-Schnittstelle.

Voraussetzungen

  • Die Skalierung auf Null muss deaktiviert sein. In der Benutzeroberfläche Skalieren auf 0 in der Schublade für Berechnungsänderungen auf Aus festlegen. Legen Sie über die API in der Endpunktspezifikation fest no_suspension: true (als Updatemaske verwenden spec.suspension ).

Benutzeroberfläche

Klicken Sie nach dem Erstellen eines Projekts auf den primären Compute-Link aus dem Projektdashboard, um die Compute-Bearbeitungsschublade zu öffnen.

Projektdashboard, das den Produktionszweig mit seiner primären Computeverbindung zeigt

Legen Sie den Computetyp auf "Hohe Verfügbarkeit" fest, und wählen Sie dann unter "Hohe Verfügbarkeit" eine Konfiguration aus:

  • 2 (1 primär, 1 sekundär),
  • 3 (1 primär, 2 sekundär)
  • oder 4 (1 primäre Instanz, 3 sekundäre Instanzen) Recheninstanzen insgesamt.

Bearbeiten der Computerschublade mit der Umschaltfläche

Lakebase stellt sekundäre Compute-Instanzen in verschiedenen Verfügbarkeitszonen bereit. Sobald alle Computeinstanzen aktiv sind, verfügt der Endpunkt über ein automatisches Failover.

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
      }
    }
  }'

cURL

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

Konfigurieren des schreibgeschützten Zugriffs auf sekundäre Compute-Instanzen

Erlauben Sie den Zugriff auf schreibgeschützte Computeinstanzen steuert, ob sekundäre Computeinstanzen Lesedatenverkehr über die -ro Verbindungszeichenfolge bedienen.

Benutzeroberfläche

  1. Klicken Sie auf der Registerkarte "Computes " auf " Bearbeiten " auf der primären Berechnung.
  2. Aktivieren oder deaktivieren Sie unter "Hohe Verfügbarkeit" die Option "Zugriff auf schreibgeschützte Computeinstanzen zulassen".
  3. Klicke auf Speichern.

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
      }
    }
  }'

cURL

# 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

Warnung

Wenn nur eine sekundäre Computeinstanz vorhanden ist und Lesezugriff aktiviert ist, wird der gesamte Lesedatenverkehr in der -ro Verbindungszeichenfolge während eines Failovers unterbrochen, bis ein Ersatz hinzugefügt wird. Konfigurieren Sie für einen robusten Lesezugriff zwei oder mehr sekundäre Computeinstanzen mit aktiviertem Lesezugriff.

Ändern der Anzahl der sekundären Computeinstanzen

Benutzeroberfläche

  1. Klicken Sie auf der Registerkarte "Computes " auf " Bearbeiten " auf der primären Berechnung.
  2. Wählen Sie unter "Hohe Verfügbarkeit" eine neue Computekonfiguration aus der Dropdownliste aus (2, 3 oder 4 Computeinstanzen insgesamt).
  3. Klicke auf Speichern.

Hinweis

Um die hohe Verfügbarkeit zu deaktivieren, legen Sie den Computetyp auf single compute zurück. Dadurch werden alle sekundären Computeinstanzen entfernt, und Ihr Endpunkt kehrt zu einer Konfiguration mit einer einzelnen Berechnung zurück.

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 }
    }
  }'

cURL

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

Status und Rollen der hohen Verfügbarkeit anzeigen

Auf der Registerkarte "Computes" wird jede Computeinstanz in Ihrer Hochverfügbarkeitskonfiguration mit der aktuellen Rolle, dem Status und der Zugriffsebene angezeigt.

Registerkarte

Kolumne Werte
Rolle Primär, sekundär
Status Start, Aktiv
Access Lese-/Schreibzugriff (primär), Nur-Lesezugriff (sekundäre Instanz für Computing mit aktiviertem Zugriff), Deaktiviert (sekundäre Instanz für Computing ohne Lesezugriff)

Der primäre Computeheader zeigt auch die Endpunkt-ID, den automatischen Skalierungsbereich und die sekundäre Anzahl an (z. B. 8 ↔ 16 CU · 3 secondaries).

Abrufen von Verbindungszeichenfolgen

Benutzeroberfläche

Klicken Sie auf "Verbinden" auf dem primären Rechner, um das Dialogfeld "Verbindungsdetails" zu öffnen. Die Compute-Dropdownliste listet beide Verbindungsoptionen für Ihren Endpunkt mit hoher Verfügbarkeit auf.

Dialogfeld für Verbindungsdetails mit geöffnetem

Rechenoption Verbindungszeichenfolge Verwendung für
Primary (name) ● Active {endpoint-id}.database.{region}.databricks.com Alle Schreibverbindungen und Lese-/Schreibverbindungen
Secondary (name) ● Active RO {endpoint-id}-ro.database.{region}.databricks.com Auslagern des Lesens auf sekundäre Compute-Instanzen

Die -ro Verbindungszeichenfolge ist nur verfügbar, wenn Zugriff auf schreibgeschützte Compute-Instanzen erlauben aktiviert ist.

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}'

cURL

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}'

Vollständige Verbindungszeichenfolge Referenz finden Sie unter Connection strings.

Nächste Schritte