如何在Databricks Unity Catalog中将元存储迁移至新存储账户?
Azure Databricks元存储迁移至新存储账户方案解析
官方推荐的迁移步骤
由于同一Azure区域仅允许创建一个元存储,且已创建的元存储无法编辑存储位置,需按以下步骤完成迁移:
- 导出元数据:使用Databricks CLI执行命令
databricks metastore export --destination <dbfs路径或外部存储路径>,导出元存储包含的所有数据库、表、权限、分区等元数据。 - 准备新存储资源:创建目标存储账户及容器,通过Azure IAM为Databricks账户授予该容器的
Blob存储参与者权限。 - 解除工作区关联并删除原元存储:先将所有关联到原元存储的工作区解除绑定,之后在账户控制台删除原元存储。
- 创建新元存储:在同一区域创建新元存储,指定新存储账户/容器作为根存储位置。
- 导入元数据:执行命令
databricks metastore import --source <之前导出的路径>,将备份的元数据导入新元存储。 - 重新关联工作区:将工作区重新绑定到新元存储,验证数据访问正常。
Az Copy直接复制容器方案的可行性分析
此方案不可行,核心问题如下:
- 元存储的正常运行依赖元数据(表结构、事务日志、权限等)和存储数据文件的双向一致性,单纯用Az Copy复制容器文件,无法同步元数据层的关键信息。
- 删除原元存储后,所有元数据会被彻底清除,重新创建的元存储无法识别复制过来的数据文件结构,导致表无法加载、数据无法访问。
- 若复制过程中有业务读写操作,会出现数据版本不一致的问题,引发数据损坏。

内容的提问来源于stack exchange,提问作者Arnold Souza
相关产品推荐
相关产品推荐

