SELECT 'order' src, id, created_at FROM orders WHERE uid = ? UNION ALL SELECT 'comment', id, created_at FROM comments WHERE uid = ?;
邮件里写着要一份自己的全部数据,运营在后台点了半天只有订单和地址,评论、登录日志、埋点 ID 分散在四张表,最后手工拼了个 Excel 发过去。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:注册时没做用户维度的数据索引,各业务表用不同字段关联,导出只能靠人肉查。真有时限要求进来,两天的窗口根本不够跑完这些查询。
围绕「个人数据导出」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:先把用户标识统一成同一个 uid,评论和日志表都补一列;写一个导出接口按 uid 拉全量数据,输出 JSON 并附字段说明;接口加权限校验和操作日志,导出文件设有效期,到期自动删。
确认没问题再收工,用测试账号调一次导出,JSON 里能看到订单、评论、登录记录三类数据,字段说明对得上。
