Files
integral-shop/docs/com-bybsy80-data-imgration-del.md

218 lines
5.8 KiB
Markdown
Raw Normal View History

# 公司名称:宝应博森元
## mysql数据库配置信息
host ip: 123.56.214.80
datasource:
name: yangtangyoupin
username: yangtangyoupin
password: 5Fn8eWrbYFtAhCZw
---
## 数据删除任务
- **用户id数据范围**
93257
93255
93247
93246
93245
93244
93243
93242
93240
93237
93236
93235
93234
93232
93231
93230
93229
93227
93226
93225
93224
93223
93222
93221
93220
93219
93215
93210
93209
93208
93206
93205
93204
93203
93202
93201
93199
93198
93197
93196
93195
93191
93188
93181
93180
93178
93176
93175
93174
93173
93172
93165
93162
93158
93154
93151
93149
93141
93099
93098
93096
93095
93079
93076
93063
93041
93003
93001
92959
92951
92885
92884
92880
92850
92792
92754
92671
91757
---
## 需求目标
删除数据库中“用户id数据范围”内用户在所有相关表中的业务数据保留不在该范围内的其他用户及其业务数据。
本文件可作为后续同类“按用户范围删除数据”需求的标准处理方案文档。执行时只需替换公司信息、数据库连接信息和用户 ID 范围。
## 执行边界
- **删除方向**:删除用户 ID 范围内的数据,保留范围外数据。
- **表范围**:不只处理显式列出的表,需要扫描目标库所有表结构,找出用户关联字段后统一处理。
- **字段范围**:重点处理以下用户关联字段:
- `uid`
- `user_id`
- `seller_id`
- `buyer_id`
- `out_user_id`
- `bargain_user_id`
- `pay_uid`
- 其他明确表示用户 ID 的字段
- **核心用户表**
- `wa_users.id`
- `eb_user.uid`
- **特殊字段边界**
- `eb_user.spread_uid` 表示“当前用户的推荐人”。
-`spread_uid` 命中待删除用户 ID 时,不删除这些范围外用户,也不默认清空该字段。
- `spread_uid` 仅作为预检报告项,除非需求另行明确要求处理。
## 预检要求
执行删除前必须先做只读预检:
1. 确认连接的数据库为目标库 `yangtangyoupin`
2. 扫描 `INFORMATION_SCHEMA.COLUMNS`,找出所有用户关联字段。
3. 对每个命中的表字段统计目标用户 ID 的命中行数。
4. 单独报告 `eb_user.spread_uid` 命中数量,但不纳入删除范围。
5. 输出清理前基线统计,作为最终删除数量核对依据。
参考字段扫描范围:
```sql
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND (
COLUMN_NAME IN (
'uid',
'user_id',
'seller_id',
'buyer_id',
'out_user_id',
'bargain_user_id',
'pay_uid',
'spread_uid'
)
OR COLUMN_NAME LIKE '%user%'
OR COLUMN_NAME LIKE '%uid%'
OR COLUMN_NAME LIKE '%seller%'
OR COLUMN_NAME LIKE '%buyer%'
)
ORDER BY TABLE_NAME, COLUMN_NAME;
```
## 删除规则
### `wa_*` 相关表
删除用户 ID 范围内的相关记录:
- `wa_users`:删除 `id` 在用户 ID 范围内的记录。
- `wa_order`:删除 `seller_id``buyer_id` 在用户 ID 范围内的订单。同一订单只删除一次。
- `wa_merchandise`:删除 `user_id` 在用户 ID 范围内的寄售商品。
- `wa_selfbonus_log`:删除 `user_id` 在用户 ID 范围内的记录。
- `wa_sharebonus_log`:删除 `user_id` 在用户 ID 范围内的记录。
- `wa_coupon_log`:删除 `user_id` 在用户 ID 范围内的记录。
- `wa_address``wa_alipay``wa_bank``wa_money_log``wa_withdraw` 等存在 `user_id` 字段的表:删除 `user_id` 在用户 ID 范围内的记录。
### `eb_*` 相关表
删除用户 ID 范围内的相关记录:
- `eb_user`:删除 `uid` 在用户 ID 范围内的记录。
- `eb_user_integral_record`:删除 `uid` 在用户 ID 范围内的记录。
- `eb_user_address``eb_user_bill``eb_user_brokerage_record``eb_user_experience_record``eb_user_extract``eb_user_level``eb_user_recharge``eb_user_sign``eb_user_token``eb_user_visit_record` 等存在 `uid` 字段的用户表:删除 `uid` 在用户 ID 范围内的记录。
- `eb_store_order``eb_store_cart``eb_store_coupon_user``eb_store_pink``eb_store_product_log``eb_store_product_relation``eb_store_product_reply` 等存在 `uid` / `pay_uid` / `bargain_user_id` 的业务表:删除相关字段在用户 ID 范围内的记录。
- `eb_pay_component_order.out_user_id` 等明确表示用户 ID 的字段:删除字段值在用户 ID 范围内的记录。
### 其他相关表
- `t_platform_account.user_id` 等非 `wa_*` / `eb_*` 表:如字段语义明确为用户 ID删除字段值在用户 ID 范围内的记录。
- 仅字段名包含 `username``user_phone``user_address` 等非用户 ID 语义字段时,不按用户 ID 范围删除。
## 执行顺序
1. 先删除业务子表和日志表数据。
2. 再删除订单、商品、积分、账单、访问记录等用户关联数据。
3. 最后删除核心用户表:
- `wa_users WHERE id IN (...)`
- `eb_user WHERE uid IN (...)`
4. 不处理 `eb_user.spread_uid IN (...)` 的范围外用户。
## 校验要求
删除完成后必须逐表校验:
- 所有纳入删除范围的 `uid``user_id``seller_id``buyer_id``out_user_id``bargain_user_id``pay_uid` 等字段,对目标用户 ID 的命中数应为 `0`
- `wa_users.id` 在目标用户 ID 范围内的记录数应为 `0`
- `eb_user.uid` 在目标用户 ID 范围内的记录数应为 `0`
- `wa_order``seller_id``buyer_id` 在目标用户 ID 范围内的记录数应为 `0`
- `eb_user.spread_uid` 命中范围内 ID 的记录可以继续存在,作为保留边界说明输出。
## 输出要求
执行完成后输出以下结果:
- 每张表清理前命中数。
- 每张表实际删除数。
- 每张表清理后剩余命中数。
- `eb_user.spread_uid` 的保留说明。
- 最终结论:是否所有纳入删除范围的相关数据均已清零。