数据库操作的特殊风险

写操作先用 SELECT 预演

SELECT * FROM users WHERE status = 'inactive';

START TRANSACTION;
UPDATE users SET status = 'disabled' WHERE status = 'inactive';
SELECT ROW_COUNT();
-- 确认后 COMMIT,否则 ROLLBACK

即使有事务,也要检查 WHERE、影响行数、锁范围和执行时间。DDL 是否可回滚取决于数据库和具体操作,不能照搬 DML 经验。

不要手动处理数据库内部文件

不要直接移动、编辑或删除 MySQL 数据目录、redo/binlog 或 Redis 持久化文件。应使用数据库支持的备份、复制和迁移工具。

重启与升级

操作前检查备份、复制延迟、磁盘、锁、长事务、连接数和回滚。升级应先阅读官方升级路径并在副本或测试数据上演练。

Schema 兼容

推荐“扩展—迁移—收缩”:先增加兼容字段/表,部署同时兼容新旧结构的代码,回填和验证,再在后续版本删除旧结构。避免一个发布同时删除旧字段并要求所有实例瞬间切换。