Bài 29: Backup database và kiểm tra restore
Bài này chi tiết hóa Database backup/restore theo hướng thực hành: có lab, lệnh mẫu, tình huống thực tế, checklist và bài tập.
- Database backup/restore giải quyết vấn đề gì trong DevOps thực tế.
- Các khái niệm/lệnh quan trọng cần nhớ.
- Cách dựng lab nhỏ để thực hành.
- Cách kiểm tra, rollback và ghi chú vận hành.
1. Bối cảnh thực tế
Database backup/restore thuộc nhóm kỹ năng giúp tự động hóa, chuẩn hóa và vận hành hệ thống ở quy mô lớn hơn. Khi server/app nhiều lên, thao tác tay sẽ dễ sai; vì vậy cần quy trình, công cụ và checklist rõ ràng.
2. Khái niệm cần nắm
- State: trạng thái hiện tại của hệ thống hoặc ứng dụng.
- Config as code: cấu hình được lưu thành file để review, tái sử dụng.
- Idempotent: chạy nhiều lần vẫn cho kết quả ổn định.
- Rollback: quay lại trạng thái an toàn khi triển khai lỗi.
3. Lab thực hành
# MySQL/MariaDB mysqldump -u root -p --single-transaction dbname > dbname.sql mysql -u root -p dbname_restore < dbname.sql # PostgreSQL pg_dump -Fc dbname > dbname.dump createdb dbname_restore pg_restore -d dbname_restore dbname.dump ls -lh dbname.sql dbname.dump 2>/dev/null || true sha256sum dbname.sql 2>/dev/null || true
4. Tình huống thực tế
Website có backup database hằng ngày nhưng chưa từng restore. Anh tạo database test, restore backup vào đó và kiểm tra số bảng/dữ liệu để chứng minh backup dùng được.
5. Quy trình áp dụng an toàn
- Viết cấu hình hoặc command trong môi trường lab.
- Kiểm tra syntax/plan/status trước khi apply.
- Chạy với phạm vi nhỏ trước.
- Quan sát log, metric và health check.
- Ghi lại thay đổi vào tài liệu vận hành.
- Chuẩn bị rollback hoặc version trước đó.
6. Lỗi thường gặp
- Copy cấu hình từ mạng mà không hiểu biến/môi trường.
- Không lưu file cấu hình vào Git.
- Không kiểm tra log sau khi apply.
- Không có môi trường test/staging.
7. Checklist
- Có file cấu hình rõ ràng.
- Có bước kiểm tra trước khi apply.
- Có log/health check sau khi apply.
- Có rollback/version cũ.
- Có tài liệu ai chạy, chạy khi nào, kết quả gì.
8. Bài tập
- Dựng một lab nhỏ theo lệnh mẫu.
- Chạy lệnh kiểm tra trạng thái trước/sau.
- Tạo một lỗi cấu hình nhỏ và sửa lại.
- Viết checklist production cho chủ đề này.
