本页介绍如何通过启用可读辅助实例来配置 Lakebase 数据库实例以实现高可用性。
重要
此功能在以下区域中为公共预览版:westus、westus2、eastus、eastus2、centralus、southcentralus、northeurope、westeurope、australiaeast、brazilsouth、canadacentral、centralindia、southeastasia、uksouth。
若要启用高可用性,请将其他节点指定为数据库实例的一部分。 如果主计算运行不正常或不可用,则利用高可用性节点执行故障转移,并将辅助节点提升为主节点。
还可以启用可读辅助节点,此时高可用性节点可通过独立 DNS 终结点(instance-ro-{uuid},而非 instance-{uuid})来处理只读工作负载。
启用数据库实例以实现高可用性
如果将高可用性节点数设置为一个,则禁用高可用性和可读副本。 否则,你有一个主节点,其余节点是高可用性节点。 每个数据库实例的最大高可用性节点数为 3 个。
创建数据库实例时指定高可用性节点数。 请参阅 “创建数据库实例”。
执行以下步骤,使用 UI 或 API 修改数据库实例。
UI
- 在工作区边栏中单击 “计算 ”。
- 单击“ 数据库实例 ”选项卡。
- 选择要更新的数据库实例。
- 单击右上角的 “编辑 ”。
- 输入 HA 池节点大小(包括主节点)的值。
- 开启“启用可读辅助节点”。
- 单击“ 保存”。
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 建议至少有三个高可用性节点,以防止主节点故障转移影响到只读连接。 应用程序仍然需要重新连接机制来处理短暂的停机时间。
局限性
性能需要一段时间才能恢复。 由于新主节点既没有特定于会话的数据,也没有经常访问数据的本地缓存,因此最初运行查询时可能会更慢。
- 不支持跨区域复制。 发生区域范围的服务中断时,可用性取决于云提供商将服务还原到受影响的区域。