Backup VPS: chu kỳ bao nhiêu là đủ và cất bản sao ở đâu

Chia sẻ bài viết

Mục lục
Backup VPS: chu kỳ bao nhiêu là đủ và cất bản sao ở đâu

Trả lời nhanh: Chu kỳ backup quyết định bạn chấp nhận mất tối đa bao nhiêu dữ liệu khi có sự cố. Backup hàng tuần nghĩa là xấu nhất mất bảy ngày dữ liệu, hàng ngày là mất một ngày, còn hệ thống nhiều giao dịch cần thêm bản sao nhật ký để mất tối thiểu. Ba nguyên tắc bắt buộc: bản sao phải nằm trên hệ thống tách rời khỏi máy chủ chạy dịch vụ, phải giữ nhiều bản chứ không chỉ bản mới nhất, và phải thử khôi phục định kỳ vì backup chưa từng thử khôi phục thì chưa gọi là backup.

Ai cũng biết cần backup. Nhưng hỏi cụ thể bao lâu chạy một lần, cất ở đâu, lần cuối thử khôi phục là khi nào thì phần lớn câu trả lời trở nên lúng túng.

Tóm tắt nhanh
  • Chu kỳ backup chính là mức dữ liệu bạn chấp nhận mất khi có sự cố.
  • Bản sao nằm cùng máy chủ đang chạy dịch vụ gần như vô nghĩa khi máy đó gặp sự cố.
  • Giữ nhiều bản theo thời gian, vì có lỗi vài ngày sau mới bị phát hiện.
  • Backup chưa từng thử khôi phục thì chưa chắc dùng được.

Hai con số cần thống nhất trước

Mất tối đa bao nhiêu dữ liệu là chấp nhận được. Con số này quyết định chu kỳ backup. Blog thì mất một tuần cũng không sao. Sàn thương mại điện tử mất một ngày đơn hàng là vấn đề lớn.

Chờ tối đa bao lâu để hệ thống chạy lại. Con số này quyết định cách bạn lưu bản sao và mức độ tự động. Chấp nhận chờ nửa ngày thì khác hẳn với yêu cầu chạy lại trong một giờ.

Trả lời hai câu này trước, rồi mới chọn giải pháp. Làm ngược lại thường dẫn tới mua thứ không cần hoặc thiếu thứ cần.

Chọn chu kỳ theo loại hệ thống

Loại hệ thốngChu kỳ hợp lýMất tối đa
Blog, trang giới thiệuHàng tuần7 ngày
Website doanh nghiệpHàng tuần hoặc vài ngày2 tới 7 ngày
Thương mại điện tửHàng ngày1 ngày
Ứng dụng nhiều giao dịchHàng ngày kèm sao lưu nhật kývài phút

Chu kỳ dày hơn tốn dung lượng và chi phí hơn, nên chọn theo giá trị dữ liệu chứ không chọn theo cảm giác an tâm.

Ba nguyên tắc không được vi phạm

  1. Bản sao phải nằm ở nơi khác. Để cùng máy chủ đang chạy dịch vụ thì khi máy đó hỏng nặng, bạn mất cả bản gốc lẫn bản sao.
  2. Giữ nhiều bản theo thời gian. Chỉ giữ bản mới nhất là bẫy: nếu dữ liệu bị hỏng từ ba ngày trước mà hôm nay mới phát hiện, bản mới nhất đã chứa dữ liệu hỏng rồi.
  3. Thử khôi phục định kỳ. Đây là bước bị bỏ qua nhiều nhất. Backup chạy đều mỗi tuần nhưng file rỗng hoặc thiếu database là chuyện đã xảy ra với rất nhiều người.

RAID không phải backup

Nhắc lại vì đây là hiểu lầm tốn kém nhất. RAID chỉ cứu bạn khi ổ cứng hỏng về mặt vật lý. Xoá nhầm, mã độc mã hoá file hay một bản cập nhật làm hỏng dữ liệu đều được ghi đồng thời lên cả ổ gương, không có gì để khôi phục.

Cấu hình an toàn cần cả hai lớp: RAID lo phần cứng, bản sao định kỳ ở hệ thống khác lo phần con người và phần mềm. Khi hỏi nhà cung cấp, hãy hỏi cả hai chứ đừng hài lòng với câu trả lời có RAID rồi.

Bảng chu kỳ sao lưu theo từng hệ thống

Hệ thốngChu kỳSố bản giữ lạiMất tối đa
Trang giới thiệu, ít thay đổiHằng tuần, cộng một bản trước mỗi lần thay đổi lớn4 bản tuần, 3 bản thángMột tuần nội dung
Trang tin tức, blogHằng ngày7 bản ngày, 4 bản tuần, 3 bản thángMột ngày bài viết
Cửa hàng trực tuyếnHằng ngày cho tệp, kèm bản sao nhật ký cơ sở dữ liệu mỗi giờ7 ngày, 4 tuần, 6 thángMột giờ đơn hàng
Hệ thống nội bộ nhiều giao dịchHằng ngày, cộng nhật ký liên tục14 ngày, 8 tuần, 12 thángVài phút

Cách nhớ: chu kỳ sao lưu chính là mức dữ liệu bạn chấp nhận mất. Câu hỏi đúng không phải "bao lâu một lần là đủ" mà là "mất bao nhiêu công việc thì công ty chịu được".

Kịch bản sao lưu cho một máy chủ ảo

#!/bin/bash
# /usr/local/bin/backup.sh
set -euo pipefail
NGAY=$(date +%F)
DICH=/backup
mkdir -p $DICH

# 1. Co so du lieu
docker compose -f /home/app/docker-compose.yml exec -T db \
  pg_dump -U postgres tendb | gzip > $DICH/db-$NGAY.sql.gz

# 2. Tep nguoi dung tai len
tar czf $DICH/uploads-$NGAY.tar.gz -C /home/app uploads

# 3. Day sang noi khac, day la buoc quan trong nhat
rclone copy $DICH remote:backup-vps/ --max-age 2d

# 4. Don ban cu tren may
find $DICH -name "*.gz" -mtime +7 -delete
echo "Xong $NGAY" >> /var/log/backup.log
# Dat lich chay 2 gio sang
sudo crontab -e
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup-cron.log 2>&1

Bước ba là bước quyết định. Bản sao nằm trên chính máy chủ đó gần như vô nghĩa: máy hỏng, bị xóa, hoặc bị mã hóa thì mất cả gốc lẫn bản sao.

Kiểm tra khôi phục, quy trình 20 phút mỗi quý

  1. Dựng một máy chủ ảo tạm, cấu hình nhỏ nhất cũng được.
  2. Kéo bản sao mới nhất về, giải nén.
  3. Khôi phục cơ sở dữ liệu và tệp, bật ứng dụng lên.
  4. Đăng nhập, mở vài trang, kiểm dữ liệu có đủ tới thời điểm sao lưu không.
  5. Ghi lại thời gian từ lúc bắt đầu tới lúc hệ thống chạy được. Đó là thời gian ngừng hoạt động thật của bạn.
  6. Xóa máy chủ tạm.

Ba thứ hay lộ ra ở lần thử đầu tiên: tệp sao lưu thiếu một thư mục quan trọng, mật khẩu cơ sở dữ liệu không được ghi ở đâu cả, và không ai nhớ trình tự dựng lại. Cả ba đều rẻ để sửa lúc này và rất đắt để phát hiện lúc có sự cố.

Ba điều kiện để bản sao có giá trị

  • Bản sao phải ở nơi tách rời. Khác máy chủ, và tốt nhất là khác nhà cung cấp.
  • Giữ nhiều bản theo thời gian. Dữ liệu hỏng có khi vài ngày sau mới phát hiện, lúc đó bản mới nhất đã chứa cả phần hỏng.
  • Bản sao phải được kiểm. Sao lưu chưa từng khôi phục thử không phải là sao lưu, mà là một thư mục tệp bạn hy vọng dùng được.

Về ổ đĩa dự phòng theo cơ chế gương: nó chống ổ hỏng, không chống xóa nhầm, không chống mã độc, không chống lỗi phần mềm. Xóa một tệp là nó biến mất khỏi cả hai ổ ngay lập tức. Đây là hai việc khác nhau và cần cả hai.

Câu hỏi thường gặp

Backup hàng tuần có đủ không?

Đủ với blog và website ít thay đổi. Không đủ với hệ thống có đơn hàng hoặc giao dịch, vì mất bảy ngày dữ liệu là thiệt hại thật.

Bản sao nên giữ bao nhiêu bản?

Tối thiểu bốn bản gần nhất, tốt hơn thì giữ thêm bản theo tháng. Lý do là nhiều lỗi dữ liệu vài ngày sau mới bị phát hiện.

Có RAID rồi còn cần backup không?

Vẫn cần. RAID chỉ xử lý tình huống hỏng ổ cứng, không cứu được xoá nhầm, mã độc hay lỗi ứng dụng.

Bao lâu nên thử khôi phục một lần?

Ít nhất mỗi quý một lần, khôi phục ra môi trường thử rồi kiểm tra dữ liệu có đầy đủ không. Đây là cách duy nhất biết chắc backup dùng được.

Hạ tầng NVMe Enterprise của TND
VPS ổ Enterprise U.2 NVMe, CPU xung cao, đặt tại Việt Nam
Truy vấn SQL, PHP dựng trang, build Next.js hay đóng gói app iOS và Android: phần lớn các bước này chạy đơn luồng và đập liên tục vào ổ đĩa. Nghẽn nằm ở tốc độ đọc ghixung nhịp CPU, không phải ở việc có thật nhiều nhân. Ổ Enterprise U.2 NVMe chuẩn máy chủ chạy RAID 10 cho IOPS đọc ghi ngẫu nhiên gấp 5 đến 7 lần ổ SATA SSD, khác hẳn NVMe M.2 phổ thông. Chạy trên chip Intel Xeon Platinum dòng xung cao, backup tự động hàng tuần, bàn giao trong 5 phút.
Xem VPS Enterprise U.2 NVMe RAID 10, CPU xung cao

Bài viết liên quan