元数据及元数据备份、迁移详解
1. 元数据核心概念
1.1 元数据定义
元数据(Metadata) 是描述数据的数据 ,用于定义、说明、管理数据的属性、结构、存储位置、关联关系、权限、生命周期等信息,不存储业务实际数据,是整个数据体系的目录、索引与说明书。
1.2 元数据核心特征
- 非业务数据:不承载业务内容,仅描述数据规则
- 全局依赖:数据存储、查询、计算、调度均依赖元数据
- 轻量关键:体积小,但损坏会导致整个数据服务不可用
- 可管理:支持定义、查询、修改、备份、迁移
1.3 元数据分类
- 技术元数据
- 描述数据存储结构、格式、位置
- 例:表名、字段名、字段类型、分区规则、存储路径、索引、Region信息
- 业务元数据
- 描述数据业务含义、口径、归属
- 例:表中文名、字段含义、业务线、数据负责人、统计口径
- 管理元数据
- 描述数据权限、生命周期、运维信息
- 例:创建时间、修改记录、备份策略、访问权限、冷热数据标识
2. 元数据核心作用
- 数据定位:快速找到数据存储位置与结构
- 服务依赖:数据库、数仓、大数据平台正常运行的基础
- 数据治理:数据血缘、质量、权限、口径统一管理
- 运维保障:故障恢复、扩容迁移、数据修复的核心依据
3. 元数据备份详解
3.1 元数据备份重要性
- 元数据损坏/丢失会导致数据无法访问、表丢失、集群不可用
- 元数据是分布式系统(Hyperbase、HBase、Hive)的核心中枢
- 备份体积小、恢复速度快,是最高优先级的运维保障手段
3.2 备份基本原则
- 先备份,后操作:变更、升级、迁移前必须全量备份
- 多副本存储:备份文件不与原数据存同一节点/磁盘
- 定时自动化:生产环境配置定时任务,避免人工遗漏
- 可校验可恢复:备份后验证完整性,定期演练恢复
3.3 通用备份策略
- 全量备份:完整备份所有元数据,适用于变更前、每周/每月
- 增量备份:仅备份变更部分,适用于每日定时备份
- 冷备份:服务停止后备份,一致性最高
- 热备份:服务运行中备份,不影响业务
3.4 典型场景元数据备份
3.4.1 Hyperbase / HBase 元数据备份
元数据存储位置:
- HBase Meta表:存储Region、RowKey区间、RegionServer路由
- Zookeeper:存储集群状态、Region分配、表结构
备份命令:
bash
# 1. 备份ZooKeeper元数据(核心)
zkBackup.sh /hyperbase /hbase /zookeeper
# 2. 导出Meta表数据
hbase org.apache.hadoop.hbase.mapreduce.Export hbase:meta ./meta_backup_$(date +%Y%m%d)
# 3. 手动备份ZK快照
zkServer.sh snapshot
3.4.2 Hive 数仓元数据备份
Hive元数据存储在MySQL/PostgreSQL,直接备份数据库:
bash
# 全量备份Hive元数据库
mysqldump -uroot -p hive_meta > hive_meta_backup_$(date +%Y%m%d).sql
# 仅备份表结构(不含数据)
mysqldump -uroot -p -d hive_meta > hive_meta_schema.sql
3.4.4 关系型数据库元数据备份
bash
# MySQL元数据(库表结构)
mysqldump -uroot -p --no-data test_db > test_db_metadata.sql
4. 元数据迁移详解
4.1 元数据迁移适用场景
- 集群升级、版本更替
- 机房迁移、跨地域迁移
- 集群扩容、架构重构
- 元数据损坏后的重建恢复
4.2 迁移基本原则
- 一致性:迁移前后元数据完全一致,无丢失、无错乱
- 连续性:业务低中断或零中断
- 可回滚:迁移失败可快速恢复原环境
- 先校验,后切流:验证无误再对外提供服务
4.3 标准迁移流程
- 迁移前准备:停写/低峰期、全量元数据备份
- 环境检查:目标集群版本、权限、存储兼容
- 元数据导出:从原集群导出元数据
- 元数据导入:导入目标集群
- 数据校验:核对表数、字段、分区、权限、路由
- 服务切换:业务指向新集群
- 观察回滚:稳定后下线旧元数据
4.4 常见迁移方式
- 冷迁移:停止服务→备份→迁移→恢复,适合非核心业务
- 热迁移:服务运行中双写/同步元数据,最后切流,适合生产核心
- 工具迁移:使用平台自带迁移工具,安全高效
- SQL/脚本迁移:关系型元数据直接导入导出
4.5 典型场景元数据迁移
4.5.1 Hyperbase / HBase 元数据迁移
bash
# 1. 原集群备份Meta表
hbase org.apache.hadoop.hbase.mapreduce.Export hbase:meta ./meta_backup
# 2. 拷贝到目标集群
hadoop distcp ./meta_backup hdfs://target_cluster/meta_backup
# 3. 目标集群导入Meta表
hbase org.apache.hadoop.hbase.mapreduce.Import hbase:meta hdfs://target_cluster/meta_backup
# 4. 同步ZK元数据
zkCopy.sh source_zk:2181 target_zk:2181 /hyperbase
4.5.2 Hive 元数据迁移
bash
# 原集群导出
mysqldump -uroot -p hive_meta > hive_meta.sql
# 目标集群导入
mysql -uroot -p hive_meta < hive_meta.sql
# 更新Hive metastore地址、存储路径配置
vi hive-site.xml
4.6 迁移校验核心项
- 表数量、表结构、字段类型、分区信息
- 索引、权限、owner、存储路径
- Hyperbase/HBase:Region分配、StartKey、EndKey、路由
- 服务可用性:查询、写入、调度是否正常
5. 元数据运维注意事项
- 禁止直接修改底层元数据(ZK、Meta表、元数据库)
- 任何元数据操作前必须备份
- 迁移/恢复后必须做完整性校验
- 生产环境配置元数据监控,异常实时告警
- 定期清理废弃元数据,避免膨胀影响性能