线上手一抖,差点直接提桶

很多人都有过线上操作数据库的经历,大一点的公司可能有层层审核,小公司就直接上去就是干了,而我,就在这样的小公司。

手一抖,直接把用户的充值记录干没了,虽然最后从备份恢复了,但是也扣了工资,还通报了。。。

痛定思痛,开始学习怎么避免这种情况。。。

定期备份

别管多大的库,都要有备份,而且要定期备份,哪怕有个从库,至少不会提桶。。

如果是小表,比如是配置表,可以先克隆一个表出来备份。

测试服先试试

如果条件允许,现在测试服环境试一下,别太自信。。。

别用聊天工具直接发SQL

尤其是长SQL,用文本,最好也别换行,你自己校验的时候换行看都行,发出去最好别换行。

操作前select先

比如我要把所有的订单状态改一下,就先查出来,看是不是对的,然后再写update语句。

分批操作

大事务的执行最好都分批,不然会锁表。不管是删除还是更新。

加字段

  • is_delete:即软删除。给自己留一个机会。
  • update_time:可以找出来自己影响了哪些行,方便修复。
  • update_user:如果有多个人操作数据库,最好加上。

表名前面加库名

如果业务中分了库,一定要记得加库名,因为很多表名都可能重复,一不小心就。。。

默认值

很多线上加了一个字段,不加默认值,就insert失败了。。。

不允许直接删字段

这个大公司应该还好,都会走流程、DBA审查之类的。小公司就不一定了,一问都没用,那就直接删吧。。。

首先是确定所有代码中都没有用,其次要在测试服先测,最后要在停服维护的时候,把要删的字段统计一下,一起删。

改字段

  • 改名字,不允许,这和删字段有啥区别。
  • 改类型,走测试,和版本一起上线。
  • 改长度,最好别,设计的时候干嘛去了,浪费了就浪费了把。
原文地址:https://www.cnblogs.com/HappyTeemo/p/15350010.html