Gérer la haute disponibilité
Ce guide couvre l'activation et la gestion de la haute disponibilité pour vos Endpoints Lakebase. Pour en savoir plus sur le fonctionnement de la haute disponibilité et sur la différence entre les instances de compute secondaires et les réplicas en lecture autonomes, consultez Haute disponibilité.
Activer la haute disponibilité
Pour activer la haute disponibilité, définissez le type de compute et la configuration HA dans l'interface utilisateur ou configurez l'EndpointGroupSpec de l'Endpoint via l'API.
Prérequis
- Monter en charge à zéro doit être désactivé. Dans l'interface utilisateur, définissez Mise à l'échelle jusqu'à zéro sur Désactivé dans le panneau de modification du compute. Via l'API, définissez
no_suspension: truedans la spécification d'Endpoint (utilisezspec.suspensioncomme masque de mise à jour).
- UI
- Python SDK
- CLI
- curl
Après la création d'un projet, cliquez sur le link de compute principal du tableau de bord du projet pour ouvrir le tiroir de modification du compute.

Définissez le **type de compute** sur **Haute disponibilité**, puis choisissez une **Configuration** sous **Haute disponibilité** :
- 2 (1 primaire, 1 secondaire),
- 3 (1 principal, 2 secondaires),
- ou 4 (1 primaire, 3 secondaires) instances de compute au total.

Lakebase provisionne des instances de compute secondaires dans différentes zones de disponibilité. Une fois que toutes les instances de calcul sont actives, l'Endpoint dispose d'un basculement automatique.
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}")
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 -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
Configurez l'accès en lecture seule aux instances de compute secondaires.
Autoriser l'accès aux instances de compute en lecture seule contrôle si les instances de compute secondaires traitent le trafic en lecture via la chaîne de connexion -ro.
- UI
- Python SDK
- CLI
- curl
- Sur l'tab **Computes**, cliquez sur **Modifier** sur le compute principal.
- Sous **Haute disponibilité**, cochez ou décochez **Autoriser l'accès aux instances compute en lecture seule**.
- Cliquez sur Enregistrer .
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()
# 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
}
}
}'
# 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
Avec une seule instance de compute secondaire et l'accès en lecture activé, tout le trafic de lecture sur la -ro chaîne de connexion est interrompu pendant un basculement jusqu'à ce qu'un remplacement soit ajouté. Pour un accès en lecture résilient, configurez deux instances de compute secondaires ou plus avec l'accès en lecture activé.
Modifier le nombre d’instances de compute secondaires
- UI
- Python SDK
- CLI
- curl
- Sur l'tab **Computes**, cliquez sur **Modifier** sur le compute principal.
- Sous **Haute disponibilité**, choisissez une nouvelle **Configuration de calcul** dans le menu déroulant (**2**, **3** ou **4** instances de calcul au total).
- Cliquez sur Enregistrer .
Pour désactiver la haute disponibilité, définissez à nouveau **Type de compute** sur **Compute unique**. Cela supprime toutes les instances de compute secondaires et votre Endpoint revient à une configuration de compute à instance unique.
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()
# 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 -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
Afficher l'état et les rôles de haute disponibilité
Le tab **Computes** affiche chaque instance de compute dans votre configuration de haute disponibilité avec son rôle actuel, son statut et son niveau d'accès.

Colonne | Valeurs |
|---|---|
Rôle | Principal, Secondaire |
Statut | Démarrage, Actif |
Accès | Lecture/Écriture (primaire), Lecture seule (instance de compute secondaire avec accès activé), Désactivé (instance de compute secondaire sans accès en lecture) |
L'en-tête de calcul principal affiche également l'ID d'Endpoint, la plage de dimensionnement automatique et le nombre secondaire (par exemple 8 ↔ 16 CU · 3 secondaries).
Obtenir les chaînes de connexion
- UI
- Python SDK
- CLI
- curl
Cliquez sur Connect sur le compute principal pour ouvrir la boîte de dialogue des détails de connexion. Le menu déroulant Compute liste les deux options de connexion pour votre endpoint à haute disponibilité.

Option de compute | Chaîne de connexion | Utiliser pour |
|---|---|---|
|
| Toutes les écritures et connexions en lecture/lecture-écriture |
|
| Décharger les lectures vers les instances de compute secondaires |
La chaîne de connexion -ro n'est disponible que lorsque Autoriser l'accès aux instances de compute en lecture seule est activée.
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}")
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 -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}'
Pour une référence complète de la chaîne de connexion, consultez Chaînes de connexion.
Ressources supplémentaires
- Haute disponibilité — concepts, comportement de basculement et bonnes pratiques
- Réplicas en lecture — réplicas en lecture autonomes pour une capacité de lecture supplémentaire sans haute disponibilité
- Chaînes de connexion