生产环境错误数据修复办法

互联网项目的用户使用量通常比较大,如果系统设计的不好,考虑的不周全,很容易出现各种故障,随之也有很多的错误数据产生。下面列举一些处理线上数据的方法。

编写细粒度接口,修复数据

如果需要修复的数据的量不大,例如几百条,那么可以编写一些细粒度的接口,比如说,你需要更新某些订单数据的状态,那么你可以编写类似下面的方法。

public void updateOrderStatus(Long orderId,String orderStatus){
 orderRepository.updateOrderStatus(orderId,orderStatus);
}

然后每条慢慢修复。当然你用批量的方式也可以,但是要注意事务问题和如何跟踪哪条数据更新失败了。

使用批量的处理方式

如果数据量很大,例如12万条,那么只能使用批量的方式。这种情况下,最好是在夜深人静,系统访问量不大的时候执行,不然可能影响系统的响应速度的。

备注:
使用批量方式,如果数据更新出错或者插入失败,则应该事先编写细粒度接口,可以单独更新或者插入某条数据。这个很重要。

准备sql,让dba帮忙

当然如果可能的话,也可以让dba帮忙执行sql,修复线上数据

总结

1、修复线上错误数据是个苦差事,本来就是坑,如果你修复不当,就是另一个大坑;
2、整理数据需要细心仔细有耐心;
3、可能还需要编写一些小工具,帮助处理从数据库中查询出来的数据;
4、一定要有细粒度程序接口,否则无法针对单条数据进行修复;
5、在线上数据库进行sql查询时,不要动不动就整个表count(*),表数据量大,很容易拖垮数据库的。线上数据库执行sql,必须小心小心又小心。尽量多用limit关键字。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值