更新时间:2024-11-29 GMT+08:00
恢复Kafka元数据
操作场景
在用户意外修改、删除或需要找回数据时,系统管理员对ZooKeeper进行重大操作(如升级、重大数据调整等)后,系统数据出现异常或未达到预期结果,导致Kafka组件全部故障无法使用,或者迁移数据到新集群的场景中,需要对Kafka元数据进行恢复数据操作。
系统管理员可以通过FusionInsight Manager创建恢复Kafka任务。只支持创建任务手动恢复数据。
- 只支持进行数据备份时的系统版本与当前系统版本一致时的数据恢复。
- 当业务正常时需要恢复Kafka元数据,建议手动备份最新Kafka元数据后,再执行恢复操作。否则会丢失从备份时刻到恢复时刻之间的Kafka元数据信息。
- 当前章节仅适用于恢复Kafka元数据,不涉及恢复业务数据。
对系统的影响
- 元数据恢复后,会丢失从备份时刻到恢复时刻之间的数据。
- 元数据恢复后,Kafka的消费者在ZooKeeper上保存的offset信息将会回退,可能导致重复消费。
前提条件
- 如果需要从远端HDFS恢复数据,需要准备备集群。如果主集群部署为安全模式,且主备集群不是由同一个FusionInsight Manager管理,则必须配置系统互信,请参见配置跨Manager集群互信。如果主集群部署为普通模式,则不需要配置互信。
操作步骤
- 在FusionInsight Manager,选择 “运维 > 备份恢复 > 备份管理”。
- 在任务列表指定任务的“操作”列,选择“更多 > 查询历史”,打开备份任务执行历史记录。
在弹出的窗口中,在指定一次执行成功记录的“备份路径”列,单击“查看”,打开此次任务执行的备份路径信息,查找以下信息:
- 在FusionInsight Manager,选择 。
- 单击“创建”。
- 在“任务名称”填写恢复任务的名称。
- 在“恢复对象”选择待操作的集群。
- 在“恢复配置”,勾选“Kafka”。
若安装了多个Kafka服务,请勾选需要恢复的Kafka服务名称。
- 在“Kafka”的“路径类型”,选择一个备份目录的类型。
选择不同的备份目录时,对应设置如下:
- “LocalDir”:表示备份文件保存在主管理节点的本地磁盘上。
- “LocalHDFS”:表示备份文件保存在当前集群的HDFS目录。
- “RemoteHDFS”:表示备份文件保存在备集群的HDFS目录。
选择此参数值,还需要配置以下参数:
- “源端NameService名称”:填写备份数据集群的NameService名称。可以输入集群内置的远端集群的NameService名称:haclusterX,haclusterX1,haclusterX2,haclusterX3,haclusterX4;也可输入其他已配置的远端集群NameService名称。
- “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。
- “源端NameNode IP地址”:填写备集群NameNode业务平面IP地址,支持主节点或备节点。
- “源端路径”:填写备集群保存备份数据的完整HDFS路径。例如,“备份路径/备份任务名_数据源_任务创建时间/版本号_数据源_任务执行时间.tar.gz”。
- “队列名称”:填写备份任务执行时使用的YARN队列的名称。需和集群中已存在且状态正常的队列名称相同。
- “NFS”:表示备份文件通过NFS协议保存在NAS中。
- “CIFS”:表示备份文件通过CIFS协议保存在NAS中。
- “OBS”:表示将备份文件保存在OBS中。
- “源端路径”:填写备份文件在OBS中保存的完整路径。例如,“备份路径/备份任务名_数据源_任务创建时间/版本号_数据源_任务执行时间.tar.gz”。
- 单击“确定”保存。
- 在恢复任务列表已创建任务的“操作”列,单击“执行”,开始执行恢复任务。
- 恢复成功后进度显示为绿色。
- 恢复成功后此恢复任务不支持再次执行。
- 如果恢复任务在第一次执行时由于某些原因未执行成功,在排除错误原因后单击“重试”,重试恢复任务。
- 如果备份完成后重装Kafka服务并恢复元数据,或元数据迁移到新集群,启动Kafka服务Broker无法启动,查看“/var/log/Bigdata/kafka/broker/server.log”日志中包含错误,错误样例如下:
ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)kafka.common.InconsistentClusterIdException: The Cluster ID kVSgfurUQFGGpHMTBqBPiw doesn't match stored clusterId Some(0Qftv9yBTAmf2iDPSlIk7g) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong. at kafka.server.KafkaServer.startup(KafkaServer.scala:220) at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44) at kafka.Kafka$.main(Kafka.scala:84) at kafka.Kafka.main(Kafka.scala)
请查看Kafka Broker配置文件“${BIGDATA_HOME}/FusionInsight_Current/*Broker/etc/server.properties中的log.dirs”配置值,此值为kafka数据目录。进入kafka数据目录,将“meta.properties”中的“cluster.id”的值“0Qftv9yBTAmf2iDPSlIk7g”修改为上述错误日志里的最新值“kVSgfurUQFGGpHMTBqBPiw”。
- 每一个Broker所在节点都需做上述修改,修改完成后重启Kafka服务。
- 如果备份完成后重装Kafka服务并恢复元数据,或元数据迁移到新集群,启动Kafka服务Broker无法启动,查看“/var/log/Bigdata/kafka/broker/server.log”日志中包含错误,错误样例如下:
父主题: 恢复数据