6.12. 基于kafka数据误删数据的恢复
一般设置kafka数据保留七天 ,假如删除了七天之内的数据,可以通过如下方法进行数据恢复
6.12.1. 数据误删
- 表分区情况
- 误删数据前的数据分布情况
- 数据被删除
6.12.2. 数据恢复步骤
- 停掉lsql
[root@mini3 sbin]# sh /opt/software/lsql/sbin/stop.sh
- 基于当前时间点为lsql在hdfs上的目录做快照,以免误操作,将数据删除。
[root@mini3 sbin]# sh /opt/software/hgs/lsql/sbin/snapshot.sh /data-pr 3
下面是快照分布情况:
- 修改lsql的hdfs目录
修改文件 lsql/config/site/lsql-env.sh
export CL_HDFS_PATH=/data-pr 修改为 export CL_HDFS_PATH=/data-recover
修改kafka消费, 修改其消费的组名,文件为lsql/config/site/lsql-site.properties
原始配置:
只修改group名称:
看蓝色笔圈起来的部分 如果有多个配置就修改多个
- 创建需要的目录文件
手动在hdfs上建目录,‘hdfs’命令请根据具体目录来拼写命令路径
/opt/software/hadoop/hadoop/bin/hdfs dfs -mkdir /data-recover
如果有ssd的配置请根据需要 建立ssd目录。
以本例为主 /data-pr/ssdindex是ssd的配置,则改变目录后需要手动建立 /data-recover/ssdindex 并将该目录设置为One_SSD。
- 启动lsql
现在启动lsql将数据恢复到/data-recover下面
[root@mini3 site]# sh /opt/software/hgs/lsql/sbin/start.sh
- 等待kafka的消费进度到100%
以下为刚开始是的消费进度
等待消费进度为100%,如图:
- 停止lsql
sh /opt/software/hgs/lsql/sbin/stop.sh
数据恢复
(1) 由于删除的数据是20200115分区
故只需将该分区的数据拷贝到原lsql目录下 /data-pr
将 /data-pr/index/person/index/20200115、/data-pr/ssdindex/person/index/20200115移动到一个备用目录
sh hdfs dfs -mkdir /data-pr/old-data #创建临时目录#将普通磁盘 ssd磁盘的数据移动到/data-pr/old-data下
sh hdfs dfs -mv /data-pr/index/person/index/20200115 /data-pr/old-data
sh hdfs dfs -mv /data-pr/ssdindex/person/index/20200115 /data-pr/old-data/ssd-20200115
(2) 将重新生成的数据移动到/data-pr下
将/data-recover/index/person/index/20200115、/data-recover/ssdindex/person/index/20200115分别
移动到/data-pr/person/index、/data-pr/ssdindex/person/index
sh hdfs dfs -mv /data-recover/index/person/index/20200115 /data-pr/index/person/index#一下蓝色字体为一句命令
sh hdfs dfs -mv /data-recover/ssdindex/person/index/20200115 /data-pr/ssdindex/person/index
(3) 切换lsql的hdfs目录为原来的目录 即/data-pr,修改文件lsql/config/site/lsql-env.sh
export CL_HDFS_PATH=/data-recover 改为原来目录export CL_HDFS_PATH=/data-pr
(4) 启动lsql
查询数据结果:
数据已恢复。