找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 107|回复: 0

[MBH] [MBH]_Hive_移动目录修复文档(不能用于多租户)

[复制链接]

11

主题

0

回帖

123

积分

注册会员

积分
123
发表于 2023-4-10 19:14:13 | 显示全部楼层 |阅读模式
本帖最后由 李晓波 于 2023-4-11 15:44 编辑

背景:修复由于移动目录导致的目录结构混乱。修复会统一把有问题的目录和素材按日期放到一个新建的目录下面。开始修复前,需要先停止业务。
一、nebula上建一个文件夹
修复会把有问题的目录和素材统一移动到一个新的目录下面, 所以修复前需要先在nebula里面创建一个目录。
注意:根据实际目录使用情况来建目录

2、进入服务页面

3、点击左边菜单中的通用数据对象

5、切换到“配置数据”的tab页面
6、点击上图的中按钮
7、鼠标移动到第一行的右边,会自动出现修改按钮和添加子节点按钮,点击添加子节点按钮(文件的位置,请根据实际需求新建, 截图只是参考)
8、输入文件夹的名字,点击保存按钮,完成文件夹的新建
9、点击xx文件夹后面的原始数据按钮(新建完需要刷新一下才能看到code和id)
10、记录id和code的值,后面会使用
二、备份mongoDB中相关的表
1、用mongodb客户端工具(Studio 3T for MongoDB)连接mongodb, 并找到hivedb数据库
2、备份hivedb里面的SH_D_ENTITYDATA和SH_TREE_GENERALDATA
三、检测问题目录
1、用mongodb客户端工具(Studio 3T for MongoDB)连接mongodb, 并找到hivedb数据库
2、打开Open IntelliShell,执行如下的命令(执行所需时间根据现场的数据而定):
// 创建索引
db.SH_TREE_GENERALDATA.createIndex({"reId":1, "parentId":1, "site":1}, {name:"reId_parentId_site"});
db.SH_TREE_GENERALDATA.createIndex({"dataId":1, "code":1}, {name:"dataId_code"});


// 创建集合
db.createCollection("UN_RELATION_TREE");
db.UN_RELATION_TREE.createIndex({"createTime":1});
db.createCollection("CODE_NOT_EXIST_TREE");
db.CODE_NOT_EXIST_TREE.createIndex({"createTime":1});


// 检测问题目录
db.SH_TREE_GENERALDATA.find({ "reId": "424179c9fa0149a687046d9e66eccdf5", "parentId": { $ne: "0" }, "site": "S1" }).forEach(function(item) {
        if (typeof(item.code) == "undefined") {
    // code不存在
          db.CODE_NOT_EXIST_TREE.insert(item);
        } else {
                   var parentCode = item.code.substring(0,item.code.length-3);
                var count = db.SH_TREE_GENERALDATA.count({"dataId": item.parentId, "code": parentCode});
                if(count == 0) {
      // 关联错误
                   db.UN_RELATION_TREE.insert(item);
                }
        }
});
四、修复数据
工具的sobeypan地址如下:
\\pan.sobey.com\软件版本\产品版本\产品模块\Hive\tools\TreeMoveRepair
1、从上面的地址下载工具,再上传工具TreeMoveRepair.rar到能访问数据库的Windows机器上
2、解压工具TreeMoveRepair,进入目录TreeMoveRepair中,编辑application.yml
3、修改对应的数据库ip和数据库名,保存,双击run.bat,启动工具
4、如上图显示,表示启动完成
5、浏览器中输入:http://工具所在的windows的ip/swagger-ui.html
若不能访问,看下服务启动的端口号,加上端口号再试,如下:

6、点击repair-rest-service,找到createFolder接口
7、输入之前nebula上建的文件夹的id和code,点击“Try it out!”
8、如上图,表示接口调通, 并且在工具目录下回生成一个create_folder.js的脚本
9、打开repair接口,直接点“Try it out!”
10、如下图所示,表示接口执行完毕, 并且会生成一个repair.js的脚本
11、查看目录TreeMoveRepair下是否有repair.js和create_folder.js文件产生,没有说明有问题执行可能有问题, 请联系hivecore团队.
12、打开execute-cmd接口,直接点“Try it out!”
返回200表示已经自动执行脚本,并修复数据库中的数据

五、执行完成后重建索引
1、记录entity_S1的总数
2、打开repair.js文件,搜索关键字“delete”
3、如果没有关键字“delete”或者只有少量delete关键字再或者现场因为特殊原因不能删除索引,可以不删除索引,即entity_S1重建索引(不勾选清除数据)
4、如果有关键字“delete”,entity_S1重建索引(勾选清除数据)
注意:清除数据方式重建索引,是把entity_S1的索引数据全部删除,然后重建,重建过程中还没有建出来的素材将无法检索,如果有remove信息但是又不勾选清除数据,那么可能导致索引里面垃圾数据产生,请根据实际情况选择
5、重建完成之后,核对之前记录的总数是否基本一致
6、重建完成后在终端上确认是否已经正确

                                                                                                                                                                            -------本文转自HIVE组



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Sobey-IBG-BBS

GMT+8, 2025-12-6 13:46 , Processed in 0.021568 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表