用户数据删除工具
|
收藏
1. 概述
该工具 提供 如下功能:
- 删除用户表用户数据。
- 删除用户关联关系( IDMapping )数据。
用户数据删除是不可逆操作,请严格审查执行参数,并谨慎执行。
2. 用户数据删除
2.1. 操作指令
horizonadmin profile_delete_op execute
2.2. 参数列表
# | 参数名 | 必传(Y/N) | 取值举例 | 含义 | 注意 |
---|---|---|---|---|---|
1 | -p | Y | "default" | 项目英文名称 | 用户数据删除的对应 项目的英文名。 |
2 | -f | Y | ~/user_id_list.txt | 需要删除的 id 列表文件 | 各 id 使用换行符分隔,批量进行删除时使用。 |
3 | -m | N | all / identity / record | 删除模式 | all – 用户关联数据以及用户表数据均删除 identity – 仅用户关联数据 record – 仅用户表中数据 默认为all |
2.3. 输出示例
正常情况下会打印执行日志,没有异常信息抛出。若发生异常时会将错误打印在控制台。
日志目录: $SENSORS_DATA_HORIZON_HOME/logs/admintools
日志文件: $SENSORS_DATA_HORIZON_HOME/logs/admintools/profile_delete_tool.log
2.4. 指令样例
# 删除 default 项目 导出为 user_id_list.txt 文件的 用户数据+ 关联关系
horizonadmin profile_delete_op execute -p default -f ~/user_id_list.txt
# 删除 default 项目 导出为 user_id_list.txt 文件的 用户关联关系,不删除用户数据
horizonadmin profile_delete_op execute -p default -f ~/user_id_list.txt -m identity
# 删除 default 项目 导出为 user_id_list.txt 文件的 用户数据,不删除关联关系
horizonadmin profile_delete_op execute -p default -f ~/user_id_list.txt -m record
3. 注意事项
3.1. 仅支持使用用户 id 进行删除
- 仅支持使用用户 id 进行删除,不支持使用用户的其他属性(如 $identity_login_id) 。
3.2. 文件形式指定待删除列表
仅支持传递文件的形式删除用户id 列表,请先导出需要删除的用户id列表到文件中。
用户id在文件中,通过换行符进行分隔,下面是一个文件内容的例子。
[dev (v.v) sa_cluster@hybrid01 ~]$ cat user_ids.txt
-7728141872922209600
-7660638567722139504
-7352492845935040512
-7106740156496285907
-5786169409694690518
-5742451790944212950
-5737899435956369341
-5670215097386421597
-4955909436253670063
-4902763608074261158
3.3. 执行模式
该工具提供三种删除模式,通过 -m 参数指定:
- 删除用户关联和用户信息(users 表中的用户记录)。
- 仅删除用户关联信息。
- 仅删除用户信息(users 表中的用户记录)。
默认行为是删除用户关联和用户信息(users 表中的用户记录)。
3.4. 执行幂等
该命令执行是幂等的,即对同一个待删除的 用户id 列表,执行多次,输出日志都会一致,具体原理:
- 1500条用户id,第一次执行命令删除了1000条。
- 第二次继续执行时,仍然会去尝试删除前1000条,发现已被删除会进行跳过,继续删除后面500条。
- 第三次执行,因为1500条都已执行完成,程序也会返回删除成功1500条,但实际上都进行跳过了。
4. 最佳实践
4.1. 切换到 sa_cluster 用户
su - sa_cluster
4.2. 开启一个 screen 窗口
开启 screen 窗口可以避免因为与远程服务器断开连接、突然没有网络等情况,导致操作失败。
screen -S profile_delete
4.3. 统计用户表数据量
先查询用户表当前用户数量,注意下面的项目表需要进行修改。
select count(*) from horizon_default_1.users
4.4. 导出需要删除的用户 id 列表
明确需要删除的 id,可通过一定的条件查询用户表获取到这个 id 然后导入到指定文件, 如:user_id_list.txt。
select id from horizon_default_1.users where xxx in (xxx) limit 100000
4.5. 执行命令删除
指定上一步导出的 id 列表的文件名,执行命令进行删除。注意根据需求选择 -m 指定具体删除内容,包括用户表数据和用户关联数据。
horizonadmin profile_delete_op execute -p default -e user -f user_id_list.txt
注意
执行命令后,执行删除操作逻辑在当前进程内允许,请注意不要中断该进程。
该命令是幂等的,如遇执行失败可重新执行。
执行完毕查询用户表总行数:
select count(*) horizon_default_1.users
通过以上步骤就可以成功删除指定的用户id 数据。
注:本文档内容为神策产品使用和技术细节说明文档,不包含适销类条款;具体企业采购产品和技术服务内容,以商业采购合同为准。