Verwalten der Hochverfügbarkeit

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. Stellen Sie in der Benutzeroberfläche Skalieren auf Null im Drawer „Compute bearbeiten” auf Aus. 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 den Drawer „Compute bearbeiten” 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.

In Compute bearbeiten wird die Umschaltfläche „Computetyp” als „Hohe Verfügbarkeit” eingestellt angezeigt, und die Konfigurations-Dropdownliste mit den Optionen für insgesamt 2, 3 oder 4 Compute-Instanzen

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,
            no_suspension=True,
            group=EndpointGroupSpec(
                min=2,
                max=2,
                enable_readable_secondaries=True
            )
        )
    ),
    update_mask=FieldMask(field_mask=["spec.group", "spec.suspension"])
).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,spec.suspension" \
  --json '{
    "spec": {
      "no_suspension": true,
      "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,spec.suspension" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-endpoint",
    "spec": {
      "no_suspension": true,
      "group": {
        "min": 2,
        "max": 2,
        "enable_readable_secondaries": true
      }
    }
  }' | jq

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

Zugriff auf schreibgeschützte Compute-Instanzen erlauben steuert, ob sekundäre Compute-Instanzen 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 Compute-Instanzen erlauben.
  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 Compute-Dropdown-Menü, das die Optionen

Rechenoption Verbindungszeichenfolge Verwendung für
Primary (name) ● Active {endpoint-id}.database.{region}.databricks.com Alle Schreibvorgänge 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.

Weitere Ressourcen