跨账号迁移时如何清理Azure Databricks工作区
Azure Databricks跨账号迁移工作区标准化清理流程
以下流程适配跨账号迁移时全量刷新notebooks、用户/用户组、集群、数据库及表的场景,全程操作优先在目标工作区执行,源工作区全程保持只读状态做兜底。
前置准备
- 提前申请目标工作区临时全局管理员权限,同时给源工作区账号配置只读权限,避免迁移过程中误改源端资产
- 导出源端全量资产清单做基准:
- 用Databricks CLI执行
databricks workspace export_dir / ./source_workspace_backup -o导出全量notebook - 执行
databricks groups list、databricks users list导出用户、用户组配置 - 执行
databricks clusters list、databricks jobs list导出集群、作业配置 - 遍历所有库执行
SHOW DATABASES、SHOW TABLES IN <库名>导出全量表清单,统一存档
- 用Databricks CLI执行
- 关停目标工作区所有运行中资源:执行
databricks clusters list --state RUNNING、databricks jobs list --state RUNNING拿到运行中的集群、作业后逐一终止,避免清理过程中有任务写入脏数据。
分模块清理操作
身份体系(用户、用户组、服务主体)清理
- 保留平台默认的admins、users内置用户组,删除所有自定义创建的用户组;清空内置组内除当前迁移操作管理员之外的所有成员
- 对比源端导出的身份清单,删除目标侧存在但源端不存在的冗余用户、服务主体,注意不要误删当前操作的管理员账号
- 清理完成后先导入源端用户组配置,再将对应用户、服务主体绑定到组,顺序不要反,避免权限映射错乱。
计算资源(集群、SQL仓库、集群策略)清理
- 删除目标侧所有用户自建的通用集群、作业关联集群、SQL仓库,避免旧配置和后续导入的源端资源重名、参数冲突
- 删除所有非平台默认的自定义集群策略、全局初始化脚本,同时清理工作区存储中残留的旧版自定义依赖包、初始化脚本文件,避免新集群启动时拉取到旧版本依赖
- 清理所有残留的旧作业配置、任务调度规则,避免后续导入新作业时出现重名冲突。
工作区内容(Notebooks、仓库、资产)清理
- 保留/Users、/Shared、/Repos系统根目录,清空根目录下所有用户自建的子目录、文件、Repos仓库内容
- 清理所有残留的旧Dashboard、SQL查询、告警规则,这部分资产很容易被漏删,后续导入新资产时会出现重复项
- 清理完成后直接从之前导出的源端notebook备份包全量导入即可,导入后先核对根目录结构和源端完全一致。
数据库、表资产清理
- 保留default系统库,删除所有用户自建的数据库,执行
DROP DATABASE IF EXISTS <数据库名> CASCADE级联删除库下所有表、视图、函数;进入default库删除所有用户自建的表、视图、函数,不要删系统生成的表 - 如果使用ADLS Gen2挂载存储的外部表场景,不要删除存储底层的实际数据,仅清理元数据即可,后续导入源端表元数据后直接指向原有存储路径即可正常访问;如果是托管表场景,确认数据已经同步到目标存储后再清理旧的托管表存储路径
- 删除所有旧的存储挂载点、表级权限配置,按源端配置重新完成存储挂载后再导入库表元数据。
清理后校验
- 对照之前导出的源端资产清单逐一核对:用户/用户组数量、集群配置参数、notebook目录结构、库表数量,确保没有旧资产残留,也没有资产漏迁
- 抽取3个以上不同权限层级的普通用户账号登录测试,验证notebook访问、集群启动、表查询、作业查看权限符合预期
- 跑1-2个核心生产作业做冒烟测试,确认全链路运行正常后再开放工作区给全体用户使用
操作提示:全程开启工作区审计日志,每批次清理操作做好记录,出现问题可以快速回溯定位。
内容的提问来源于stack exchange,提问作者Aquib Javeed
相关产品推荐
相关产品推荐

