Một bản sao lưu chỉ thật sự có giá trị khi bạn đã thử khôi phục từ nó và thành công. Rất nhiều đội sao lưu đều đặn nhiều năm, rồi phát hiện ra bản sao lưu bị hỏng đúng vào ngày cần tới nó. Hãy giữ nhiều bản ở nhiều nơi, trong đó có ít nhất một nơi tách hẳn khỏi hệ thống chính, và định kỳ tập khôi phục thật.
Chào bạn, đây là Nhà Lập Trình. Hỏi bất kỳ đội phần mềm nào có sao lưu không, gần như ai cũng nói có. Hỏi tiếp lần cuối thử khôi phục là khi nào, rất nhiều người im lặng. Tập này là về khoảng im lặng đó, và cách lấp nó trước khi quá muộn.
Những cách sao lưu hỏng âm thầm
Sao lưu có thể hỏng theo nhiều cách mà không ai biết. Cách thứ nhất: tiến trình sao lưu tự động lỗi từ lâu mà không báo. Ổ đĩa đầy, mật khẩu đổi, máy chủ đích bị chuyển. Mỗi đêm nó chạy, thất bại, và im lặng. Đến lúc cần, bản mới nhất đã cũ vài tháng.
Cách thứ hai: sao lưu chạy thành công, nhưng thiếu thứ quan trọng. Chỉ sao lưu cơ sở dữ liệu mà quên thư mục ảnh người dùng tải lên. Hoặc sao lưu cơ sở dữ liệu chính mà quên một cơ sở dữ liệu phụ mới thêm năm ngoái.
Cách thứ ba: bản sao lưu bị hỏng từ bên trong. Sao lưu trong lúc dữ liệu đang được ghi, tạo ra bản không nhất quán. Hoặc tệp bị cắt cụt vì hết dung lượng giữa chừng. Nhìn bên ngoài vẫn có tệp, kích thước hợp lý, nhưng khôi phục thì báo lỗi.
Cách thứ tư: không ai biết cách khôi phục. Người viết quy trình sao lưu đã nghỉ, tài liệu không có, và giữa lúc hệ thống sập, cả đội đứng nhìn một đống tệp mà không biết bắt đầu từ đâu.
Nhiều bản, nhiều nơi, một bản tách rời
Có một nguyên tắc sao lưu quen thuộc trong nghề: giữ nhiều bản sao, trên nhiều loại lưu trữ khác nhau, và ít nhất một bản ở nơi khác hẳn. Một bản trên cùng máy chủ để khôi phục nhanh. Một bản ở máy khác. Một bản ở địa điểm khác hoặc dịch vụ lưu trữ khác.
Lý do là mỗi loại sự cố phá huỷ một thứ khác. Ổ đĩa hỏng phá bản trên cùng máy. Cháy phòng máy phá mọi thứ trong phòng. Tài khoản quản trị bị chiếm phá mọi thứ tài khoản đó chạm tới được.
Loại cuối cùng ngày càng quan trọng. Kẻ tấn công vào được hệ thống thường tìm và xoá hoặc mã hoá luôn các bản sao lưu, rồi mới đòi tiền chuộc. Nếu máy chủ chính có quyền ghi và xoá vào nơi lưu bản sao, kẻ tấn công cũng có.
Vì vậy cần ít nhất một bản mà hệ thống chính không xoá được: một nơi chỉ cho thêm mà không cho sửa xoá, hoặc một nơi kéo bản sao về chứ không để máy chính đẩy tới. Chiều kéo về là một chi tiết nhỏ nhưng quyết định bản sao đó có sống sót hay không.
Tập khôi phục như tập phòng cháy
Cách duy nhất để biết bản sao lưu dùng được là khôi phục từ nó. Không phải kiểm tra tệp có tồn tại, không phải kiểm tra kích thước, mà khôi phục thật ra một môi trường riêng, rồi mở ứng dụng lên xem dữ liệu có đúng không.
Hãy làm việc này định kỳ, chẳng hạn mỗi quý một lần, như công ty tập phòng cháy. Lần đầu tập, bạn sẽ gần như chắc chắn phát hiện ra vấn đề: thiếu một bảng, thiếu thư mục ảnh, lệnh khôi phục cần một công cụ chưa cài, mất nhiều giờ hơn dự tính.
Ghi lại từng bước khôi phục thành một tài liệu mà người khác đọc là làm theo được. Lần tập sau, để một người khác trong đội làm theo tài liệu đó. Chỗ nào họ bí, chỗ đó tài liệu còn thiếu.
Đo thời gian khôi phục. Nếu hệ thống sập, cần bao lâu để chạy lại? Nếu câu trả lời là hai ngày mà công việc kinh doanh chỉ chịu được vài giờ, bạn cần thay đổi cách sao lưu từ bây giờ.
Mất bao nhiêu dữ liệu thì chịu được?
Có hai câu hỏi cần hỏi người chủ doanh nghiệp, không phải hỏi lập trình viên. Câu thứ nhất: nếu có sự cố, mất dữ liệu của bao lâu thì chịu được? Một ngày, một giờ, hay không được mất gì?
Nếu sao lưu mỗi đêm một lần, sự cố lúc năm giờ chiều nghĩa là mất gần một ngày dữ liệu. Với một trang tin tức, có thể chấp nhận. Với một cửa hàng bán hàng liên tục, mất một ngày đơn hàng là thảm hoạ.
Câu thứ hai: hệ thống ngừng bao lâu thì chịu được? Câu trả lời quyết định bạn cần sao lưu nhanh khôi phục nhanh đến đâu, có cần máy dự phòng chạy sẵn không.
Hai câu trả lời này quyết định chi phí. Không mất gì và không ngừng phút nào thì rất đắt. Mất một ngày và ngừng vài giờ thì rẻ hơn nhiều. Người lập trình giỏi đưa ra các lựa chọn kèm chi phí, để chủ doanh nghiệp quyết định, thay vì tự đoán.
Những thói quen nhỏ cứu dữ liệu
Trước mọi thao tác nguy hiểm trên dữ liệu thật như sửa hàng loạt, xoá hàng loạt, đổi cấu trúc bảng, hãy sao lưu riêng phần sắp đụng tới. Mất năm phút, và có khi cứu cả sự nghiệp.
Để tiến trình sao lưu báo cáo khi thành công, không chỉ khi thất bại. Nếu một ngày không nhận được báo cáo thành công, bạn biết có vấn đề, kể cả khi chính hệ thống báo lỗi cũng đã hỏng.
Mã hoá bản sao lưu nếu nó chứa dữ liệu cá nhân, và giữ chìa khoá ở nơi an toàn tách rời. Một bản sao lưu bị lộ cũng nguy hiểm như cơ sở dữ liệu bị lộ.
Và đừng bao giờ thử nghiệm trên dữ liệu thật. Nhiều câu chuyện mất dữ liệu đau lòng nhất trong nghề không bắt đầu từ tin tặc hay thiên tai, mà từ một người chạy thử một lệnh xoá trên máy chủ thật vì nghĩ mình đang ở máy thử nghiệm.
Câu hỏi thường gặp
Bao lâu nên sao lưu dữ liệu một lần?
Tuỳ vào lượng dữ liệu bạn chấp nhận mất khi có sự cố. Nhiều hệ thống sao lưu toàn bộ mỗi đêm và ghi lại thay đổi liên tục trong ngày để có thể khôi phục tới gần thời điểm sự cố.
Vì sao phải thử khôi phục bản sao lưu?
Vì bản sao lưu có thể hỏng, thiếu dữ liệu hoặc không ai biết cách khôi phục mà không ai phát hiện. Chỉ khôi phục thật mới chứng minh bản sao lưu dùng được.
Sao lưu trên cùng máy chủ có đủ không?
Không đủ. Nếu ổ đĩa hỏng, máy chủ bị tấn công hoặc phòng máy gặp sự cố, bản sao trên cùng máy cũng mất theo. Cần thêm bản ở máy khác và nơi khác.
Làm sao bảo vệ bản sao lưu khỏi tin tặc?
Giữ ít nhất một bản ở nơi mà hệ thống chính không có quyền xoá hoặc sửa, ví dụ nơi chỉ cho phép thêm hoặc nơi tự kéo bản sao về. Mã hoá bản sao lưu nếu chứa dữ liệu cá nhân.
Ai nên quyết định chính sách sao lưu?
Người chủ doanh nghiệp nên quyết định mức mất dữ liệu và thời gian ngừng chịu được. Người kỹ thuật đưa ra các lựa chọn kèm chi phí và thực hiện.