Hầu như ai thuê VPS cũng nghĩ mình "có sao lưu" — cho tới ngày cần khôi phục mới biết bản sao lưu nằm ngay trên chính cái máy vừa hỏng, đã cũ ba tháng, hoặc chưa ai từng thử mở ra. Bài này gom lại những gì cần biết để sao lưu VPS cho đúng: chống được những sự cố nào, quy tắc 3-2-1 áp vào VPS ra sao, tự sao lưu hay dùng dịch vụ, giữ bản bao lâu — kèm hai lần thử thật ngày 01/11/2026 trên VPS có cơ sở dữ liệu đang chạy.
1. Sao lưu để chống những gì
Trước khi chọn cách sao lưu, hãy hỏi: mình đang phòng sự cố nào? Mỗi lớp bảo vệ chỉ đỡ được một số tình huống. Bảng dưới so bốn thứ hay bị gọi chung là "sao lưu":
Hai điều rút ra. Một: lưu trữ dự phòng không phải sao lưu — nó giữ dữ liệu khi ổ cứng hỏng, nhưng lệnh xoá của bạn (hay của mã độc) cũng được chép sang mọi bản dự phòng ngay lập tức. Hai: không lớp nào đỡ được hết, nên cần ít nhất hai lớp khác nhau — đó chính là ý của quy tắc 3-2-1.
2. Quy tắc 3-2-1 áp vào VPS
Quy tắc 3-2-1 được nhiếp ảnh gia Peter Krogh phổ biến từ những năm 2000 cho kho ảnh số, sau đó thành thước đo chung của ngành sao lưu: giữ 3 bản dữ liệu, trên 2 loại nơi lưu khác nhau, trong đó 1 bản ở ngoài. Với một VPS, có thể hiểu cụ thể như sau:
Ngành sao lưu ngày nay còn hay nhắc bản mở rộng 3-2-1-1-0: thêm 1 bản không thể sửa/xoá từ phía máy đang chạy (ngoại tuyến hoặc khoá ghi), và 0 lỗi khi kiểm tra khôi phục. Với VPS, "không thể xoá từ phía máy" đạt được dễ nhất bằng cách để máy của bạn kéo bản sao lưu về (mục 5), thay vì để VPS đẩy đi — VPS có bị chiếm quyền thì kẻ tấn công cũng không với tới bản đã nằm trên máy bạn.
3. Tự sao lưu hay dùng dịch vụ?
Câu trả lời ngắn: dùng cả hai. Sao lưu nền tảng lo việc "quay lại hôm qua trong vài phút" cho cả máy; bản tự giữ lo tình huống không thể lường trước và cho bạn quyền mang dữ liệu đi. Đó chính là bản thứ 2 và bản thứ 3 của quy tắc 3-2-1. Hai lần thử dưới đây đo từng cách trên cùng một cơ sở dữ liệu.
4. Thử thật 1: sao lưu nền tảng lúc cơ sở dữ liệu đang ghi
Nỗi lo hay gặp nhất: "Sao lưu lúc MySQL đang chạy thì bản sao có bị hỏng không?". Chúng tôi dựng một VPS thử Ubuntu 24.04 (1 vCPU, 2 GB RAM, Hà Nội), cài MariaDB 10.11, tạo bảng 1.000.000 đơn hàng (116 MiB), rồi cho một tiến trình ghi liên tục: mỗi nhịp thêm một dòng đánh số tăng dần vào bảng ghi và sửa một đơn ngẫu nhiên — khoảng 80 giao dịch mỗi giây. Giữa lúc đó, bấm Sao lưu ngay.
Đọc kết quả: bản sao lưu giữ đúng 4.993 giao dịch đầu tiên, giao dịch cuối mang giờ 14:44:00,92 — khớp thời điểm chụp tới phần giây. Không giao dịch nào bị cắt dở, không đứt quãng, hai bảng kiểm OK, đủ 1 triệu đơn. 11.336 giao dịch ghi sau lúc chụp thì không còn — đó là bản chất của mọi bản sao lưu, không phải lỗi.
Vì sao được như vậy? Bản sao lưu nền tảng chụp ổ đĩa tại một thời điểm, giống hệt trạng thái máy bị ngắt điện đột ngột đúng lúc đó. InnoDB (MariaDB/MySQL), PostgreSQL, SQL Server đều ghi nhật ký giao dịch trước khi ghi dữ liệu, nên khởi động lại sau mất điện sẽ tự hoàn tất những gì đã cam kết và bỏ những gì dở dang. Điều kiện là dùng bộ máy lưu trữ có nhật ký (InnoDB, không phải MyISAM) — mặc định của các bản MySQL/MariaDB hiện nay.
Với VPS Windows, bài hướng dẫn Sao lưu VPS có lần thử tương tự: ổ 60 GB khôi phục trong 3 phút 18 giây, tệp khớp từng byte theo SHA-256.
5. Thử thật 2: tự sao lưu cơ sở dữ liệu mỗi đêm
Bản thứ 3 của quy tắc 3-2-1 là bản bạn tự giữ. Với website hay phần mềm có cơ sở dữ liệu, cách gọn nhất là xuất CSDL ra tệp mỗi đêm bằng mysqldump, giữ vài ngày trên VPS, rồi kéo về máy khác. Đo trên cùng VPS thử, cùng bảng 1 triệu đơn hàng:
Script dưới đây xuất CSDL shop ra tệp theo ngày và tự xoá bản cũ hơn 7 ngày. --single-transaction cho bản xuất nhất quán mà không khoá bảng (bảng InnoDB), website vẫn chạy bình thường trong lúc xuất. Đổi shop thành tên CSDL của bạn:
Chạy thật trên VPS thử: hai bản cũ hơn 7 ngày bị xoá, bản mới được tạo, mã thoát 0. Muốn nhận thư khi script lỗi, thêm dòng MAILTO=email@cua-ban ở đầu crontab (máy cần có dịch vụ gửi thư) hoặc cho script gọi API thông báo của bạn.
Kéo bản về máy của bạn. Windows 10/11 có sẵn scp (OpenSSH). Mở PowerShell trên máy tính công ty và chạy — có thể đặt lịch bằng Task Scheduler:
Kéo về (máy bạn chủ động lấy) an toàn hơn đẩy đi (VPS gửi tới kho của bạn): VPS không cần giữ mật khẩu hay khoá vào kho của bạn, nên lỡ VPS bị chiếm quyền, các bản đã nằm trên máy bạn vẫn yên. Dùng khoá SSH thay mật khẩu cho việc kéo tự động — xem Bảo mật VPS: 10 việc nên làm ngay.
Trên VPS Windows, ý tưởng giống hệt: dùng công cụ sao lưu của chính phần mềm (SQL Server có lệnh BACKUP DATABASE, MySQL/MariaDB trên Windows vẫn có mysqldump), đặt lịch bằng Task Scheduler, rồi kéo tệp về máy khác.
6. Bao lâu một bản, giữ bao lâu?
Hai con số quyết định mọi thứ, dân vận hành gọi là RPO và RTO:
Giữ bao lâu phụ thuộc vào việc bạn phát hiện sự cố muộn tới đâu. Lỡ tay xoá thì biết ngay; nhưng dữ liệu bị sửa sai, website bị cài mã độc nằm chờ, hay mã độc mã hoá từ từ thì có khi cả tuần sau mới lộ — lúc đó các bản của mấy ngày gần nhất đều đã "dính". Gợi ý:
- Máy ít thay đổi, dữ liệu không quá quan trọng: giữ 7 ngày là đủ.
- Website bán hàng, kế toán, máy chủ game có dữ liệu người chơi: giữ 30 ngày (7 bản ngày + 4 bản tuần), cộng bản tự giữ hằng tháng ở nơi khác.
- Dữ liệu phải lưu theo luật (hoá đơn, chứng từ): bản tự giữ theo tháng/năm, đúng thời hạn luật yêu cầu — đừng chỉ trông vào bản sao lưu ngắn ngày.
7. Bản sao lưu chưa từng khôi phục thử thì chưa chắc dùng được
Bản xuất có thể rỗng vì sai mật khẩu CSDL, script có thể dừng từ tháng trước vì đầy ổ mà không ai biết. Cách kiểm đơn giản, làm mỗi tháng một lần:
Ngoài ra: xem dung lượng tệp mỗi đêm có hợp lý không (đột ngột còn vài KB là có chuyện), và nhìn mục Lần thành công gần nhất ở tab Sao lưu của VPS. Với sao lưu nền tảng, Portal tự báo khi một lượt lỗi.
8. Danh sách việc cần làm
9. Câu hỏi thường gặp
Snapshot có phải là sao lưu không?
Bản chụp (snapshot) nằm cùng hệ lưu trữ với máy là "điểm quay lại" ngắn hạn, không phải sao lưu: hệ lưu trữ đó gặp sự cố thì mất cả máy lẫn bản chụp. Bản sao lưu đúng nghĩa phải được chép sang nơi khác — như kho ngoài cụm máy chủ của sao lưu nền tảng.
Đã có sao lưu nền tảng thì còn cần xuất CSDL không?
Nên có. Sao lưu nền tảng khôi phục được CSDL (lần thử 1 cho thấy MariaDB tự phục hồi sau 2 giây), nhưng nó đưa cả ổ về một thời điểm và nằm cùng nhà cung cấp. Bản xuất CSDL nhỏ, mang đi đâu cũng được, nạp riêng từng CSDL — là bản thứ 3 của quy tắc 3-2-1.
Mã độc mã hoá VPS có mã hoá luôn bản sao lưu không?
Bản sao lưu nền tảng nằm ở kho ngoài cụm máy chủ, VPS không có đường nào ghi vào đó, nên mã độc trong VPS không chạm được. Bản xuất CSDL nằm trên chính VPS thì có thể bị mã hoá theo — vì vậy phải kéo về máy khác. Điểm yếu còn lại là tài khoản Portal: hãy bật passkey.
Bao lâu sao lưu một lần là đủ?
Tối thiểu mỗi ngày một lần. Dữ liệu thay đổi liên tục (đơn hàng, giao dịch) thì xuất CSDL thêm mỗi giờ — một bản 116 MiB chỉ mất khoảng 10 giây.
Sao lưu có làm website chậm không?
Sao lưu nền tảng làm máy khựng dưới 1 giây lúc bắt đầu và lúc kết thúc lượt. mysqldump với --single-transaction không khoá bảng InnoDB nhưng có dùng CPU và ổ đĩa — nên đặt lịch vào giờ ít truy cập.
Lưu bản tự giữ ở đâu cho rẻ?
Bản xuất CSDL thường nhỏ (ví dụ 34 MB cho 1 triệu đơn hàng), nên máy tính công ty, ổ NAS hay dịch vụ lưu trữ trực tuyến sẵn có đều đủ. Điều quan trọng là nơi đó không phải chính VPS và không dùng chung tài khoản với VPS.




