如何降低UPDATE/DELETE时WHERE条件写错,或者压根没写WHERE条件带来的影响? 0、尽量不要在线手工执行任何SQL命令,很容易出差错。线上直接执行SQL命令最好有第二检查人帮助确认。 1、最好在测试环境执行SQL确认无误后,再到生产环境执行,或者提前在本地文本环境编辑好确认后再执行。 2、建议打开sql_safe_updates选项,禁止没有WHERE条件或者不加LIMIT或者没有使用索引条件的UPDATE/DELETE命令被执行。也可以在用mysql客户端连接到服务器端时增加--safe-updates选项。 例如:# mysql --safe-updates -udba -p -S /data/mysql/3306/sock/mysql.sock 3、线上手动执行DML操作时,先开启事务模式,万一误操作可以回滚。例如:mysql> begin; update xxx; rollback; 4、通过DB管理平台执行DML操作,且在平台上增加对此类危险SQL的判断,直接拒绝危险SQL的执行。 5、配置延迟从库,发现误删除数据后,从延迟从库快速恢复数据。