Tình huống
Chạy migration trên production, trong đó có bước edit dữ liệu. Migration chạy êm ru, không báo lỗi gì. Nhưng sau khi release, team phát hiện logic mới còn lỗi nặng hơn cả logic cũ. Quyết định revert? Quá muộn rồi. Vì data trên production đã thay đổi → revert không còn khả thi. 💀
Bối cảnh
Team mình thay đổi business logic và cần update lại dữ liệu cho phù hợp. Tưởng đâu an toàn, ai ngờ vừa release xong thì bug mới to gấp đôi bug cũ.
Hệ quả: Không thể quay lại trạng thái ban đầu, dữ liệu production đã bị “ghi đè” không thương tiếc.
Vấn đề
Sai lầm chí mạng: Thiếu backup và rollback plan. Chạy script trên production mà không chừa đường lui khác gì lái xe không thắng.
Giải pháp
Từ bài học này, team rút ra kinh nghiệm: Luôn backup trước khi chạm tay vào dữ liệu thật. Cách backup thì nhiều:
- Backup cả database → yên tâm nhưng hơi nặng.
- Backup đúng table cần chỉnh sửa → nhanh gọn hơn.
- Hoặc backup cột dữ liệu → thêm một column mới lưu bản gốc, rồi hẵng chỉnh sửa column cũ.
Bài học
Production không phải nơi để liều mạng.
Luôn luôn chừa một đường lui trước khi chạy migration hoặc bất kỳ script nào.
Không backup nghĩa là đang đánh cược sự nghiệp của cả team vào… một cú ALTER TABLE
. 🥲
👉 Lời khuyên chân thành: Backup không bao giờ thừa, nhưng mất backup thì luôn đau.