配置以实现高可用性

本页介绍如何通过启用可读辅助实例来配置 Lakebase 数据库实例以实现高可用性。

重要

此功能在以下区域中为公共预览版westuswestus2eastuseastus2centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindiasoutheastasiauksouth

若要启用高可用性,请将其他节点指定为数据库实例的一部分。 如果主计算运行不正常或不可用,则利用高可用性节点执行故障转移,并将辅助节点提升为主节点。

还可以启用可读辅助节点,此时高可用性节点可通过独立 DNS 终结点(instance-ro-{uuid},而非 instance-{uuid})来处理只读工作负载。

启用数据库实例以实现高可用性

如果将高可用性节点数设置为一个,则禁用高可用性和可读副本。 否则,你有一个主节点,其余节点是高可用性节点。 每个数据库实例的最大高可用性节点数为 3 个。

创建数据库实例时指定高可用性节点数。 请参阅 “创建数据库实例”。

执行以下步骤,使用 UI 或 API 修改数据库实例。

UI

  1. 在工作区边栏中单击 “计算 ”。
  2. 单击“ 数据库实例 ”选项卡。
  3. 选择要更新的数据库实例。
  4. 单击右上角的 “编辑 ”。
  5. 输入 HA 池节点大小(包括主节点)的值。
  6. 开启“启用可读辅助节点”。
  7. 单击“ 保存”。

curl

curl -s -X PATCH --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances/my-instance -d '{ “node_count”: 3, “enable_readable_secondaries” : true}'

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.database import DatabaseInstance

# Initialize the Workspace client
w = WorkspaceClient()

# Create a database instance with high availability
instance = w.database.create_database_instance(
    DatabaseInstance(
        name="my-database-instance",
        capacity="CU_1",
        node_count=3,  # Set the number of high availability nodes (including primary)
    )
)

print(f"Created database instance: {instance.name}")
print(f"Connection endpoint: {instance.read_write_dns}")

CLI

# Create a database instance
databricks database create-database-instance my-database-instance \
  --capacity CU_1 \
  --node-count 3

计算复原能力

配置高可用性节点后,数据库实例的主节点受高可用性保护。 如果主节点不可用,则数据库实例会自动向某一辅助节点进行故障转移,将这个辅助节点提升为新的主节点。 由于计算节点是无状态的,因此故障不会影响数据,并且连接字符串保持不变。 不可用状态在几秒到几分钟内解决,具体取决于故障类型。 在故障转移期间,活动连接会被断开,因此应将应用程序配置为处理这些短暂的断开连接并自动重新连接。

当出现问题时,数据库实例中的辅助节点也会在几分钟内自动恢复。 如果启用可读副本,Databricks 建议至少有三个高可用性节点,以防止主节点故障转移影响到只读连接。 应用程序仍然需要重新连接机制来处理短暂的停机时间。

局限性

性能需要一段时间才能恢复。 由于新主节点既没有特定于会话的数据,也没有经常访问数据的本地缓存,因此最初运行查询时可能会更慢。

  • 不支持跨区域复制。 发生区域范围的服务中断时,可用性取决于云提供商将服务还原到受影响的区域。