Hướng dẫn

Chiến lược backup theo từng tenant cho hệ thống WordPress multi-tenant

Đội ngũ GrabWP
· 9 min read · Đã kiểm duyệt bởi Đội ngũ GrabWP

Chạy hàng loạt website khách hàng trên cùng một bản cài đặt WordPress thì rất tiết kiệm tài nguyên, cho đến khi có ai đó cần restore dữ liệu. Nếu công cụ backup của bạn chỉ hoạt động ở cấp độ “cả một server”, lỗi của một khách hàng sẽ khiến mọi người cùng bị downtime. Một wordpress tenant backup strategy thực thụ phải xử lý được ở mức độ chi tiết của từng tenant: backup, dọn dẹp, đẩy offload và restore mỗi khách hàng hoàn toàn độc lập. Bài hướng dẫn này sẽ chỉ cho bạn cách thiết kế hệ thống đó với GrabWP Tenancy Pro.

Tại sao backup hệ thống cần chi tiết đến từng tenant

Bản chất của multi-tenancy là các tenant dùng chung codebase nhưng data thì hoàn toàn cách ly. Chiến lược backup của bạn cũng phải tôn trọng ranh giới đó. Tạo snapshot cho cả server thì rất ổn khi cần khắc phục thảm hoạ, nhưng lại sai bét nếu Khách hàng A lỡ tay xoá một page và muốn lấy lại. Nếu bạn dùng bản image của cả server để sửa lỗi cho một tenant, bạn sẽ vô tình rollback luôn tất cả đơn hàng, comment và nội dung của mọi tenant khác.

GrabWP Tenancy Pro xem mỗi tenant là một đơn vị backup độc lập. Khi backup, hệ thống chỉ lấy database, thư mục uploads, content và config của riêng tenant đó; khi restore cũng chỉ build lại đúng những thành phần này. Nghĩa là bạn có thể đưa Khách hàng A quay về hôm qua, trong khi Khách hàng B sáng nay vẫn nhận đăng ký user mới bình thường. Với các agency hay đơn vị làm hosting, đây là sự khác biệt giữa một thao tác fix lỗi 5 phút với một sự cố sập toàn hệ thống. Nó cũng giúp thu hẹp phạm vi ảnh hưởng: một lệnh per tenant wordpress backup restore nếu có bị lỗi thì cũng chỉ tác động đúng vào tenant mà bạn chọn.

Lên lịch: Cấu hình mặc định chung và ghi đè cho từng tenant

Cấu hình backup mặc định chung và ghi đè cho từng tenant trong GrabWP Tenancy Pro

Bạn không thể nào ngồi click backup bằng tay khi hệ thống có hàng chục site, nên việc lên lịch tự động chính là bước khởi đầu. GrabWP cho phép bạn setup các thông số mặc định chung để backup tự động, sau đó có thể ghi đè (override) cấu hình này cho từng tenant riêng lẻ. Mỗi tenant sẽ tự quản lý trạng thái bật/tắt, lịch chạy và số bản backup được giữ lại (retention), nhờ đó khách hàng VIP của bạn có thể được backup thường xuyên hơn hẳn một site ít traffic, mà bạn chẳng cần phải quản lý từng cron job bằng tay.

Các tuỳ chọn lặp lại đáp ứng đủ mọi nhu cầu của hệ thống: chạy hàng giờ, hai lần mỗi ngày, hàng ngày, hàng tuần, mỗi nửa tháng, và hàng tháng. Bạn cứ chọn một mức mặc định chung cho hợp lý, rồi tăng tần suất cho các tenant bận rộn và giảm đi với những tenant im lìm.

Chỉ số retention là mảnh ghép còn lại của việc lên lịch. GrabWP sẽ tự động dọn dẹp các bản backup cũ trên cả server và remote sau khi chạy thành công, chỉ giữ lại đúng số lượng mà bạn đã cấu hình. Việc này giúp dung lượng disk không bị phình to và ngăn rác backup âm thầm chất đống. Hãy setup retention cho từng tenant để một store thay đổi liên tục sẽ có lịch sử backup dài hơn một site tĩnh. Tốt nhất là chọn con số phù hợp với ngân sách lưu trữ và nhu cầu restore của riêng bạn thay vì copy mù quáng một cấu hình mặc định.

Đảm bảo an toàn dữ liệu ngoại vi với S3

Bản backup mà nằm chung server với cái site nó đang bảo vệ thì đâu gọi là backup. GrabWP hỗ trợ lưu trữ remote tương thích S3 để các bản backup của tenant được đẩy ra khỏi server. Hệ thống driver cho phép bạn tái sử dụng thông tin đăng nhập S3 đã cấu hình trước đó hoặc nhập S3 credential tuỳ chỉnh cho một bucket riêng.

Có vài tính năng giúp việc này thực sự hiệu quả khi chạy ở quy mô lớn:

  • Tính năng Auto-offload sẽ tự động thực hiện wordpress backup s3 offload ngay khi chạy xong, đảm bảo không có bất kỳ khoảng hở nào để bản sao duy nhất chỉ nằm trên máy chủ.
  • Pull-to-local sẽ kéo bản backup từ S3 về lại server khi bạn cần restore, giúp server luôn gọn nhẹ mà tốc độ phục hồi vẫn cực nhanh.
  • Xoá từ xa (remote deletion) ngay trên giao diện danh sách backup giúp bạn xoá sạch bản lưu trên S3 mà không cần thoát khỏi dashboard.
  • Giới hạn số file theo tenant sẽ tự động dọn các bản backup cũ trên remote ngay khi tenant vượt quá số lượng file S3 đã cấu hình, giúp lưu trữ đám mây luôn được kiểm soát hệt như dung lượng server.

Danh sách tenant sẽ hiển thị huy hiệu storage driver (S3 hoặc Local), nhìn qua là bạn biết ngay tenant nào đang an toàn ở nơi khác và tenant nào chưa. Hãy dùng nó như một bảng checklist: đừng để bất kỳ client nào nằm ở trạng thái chỉ lưu Local quá lâu.

Quy trình restore dữ liệu

Quy trình restore từng tenant trong GrabWP Tenancy Pro

Một bản backup mà bạn chưa từng thử restore thì chỉ là cầu may chứ không phải là một kế hoạch. Tính năng restore của GrabWP là một quy trình bài bản, chia thành nhiều bước với giao diện tiến trình AJAX để bạn thấy rõ từng công đoạn hoàn thành, thay vì cứ phải nhìn một cái icon quay đều vô vọng. Quá trình backup chạy qua 7 bước; còn tiến trình restore gồm 8 bước, bao gồm toàn bộ database, uploads, content và config của tenant.

Trang restore cung cấp cho bạn hai tab. Tab existing backups dùng để khôi phục từ một bản đã có sẵn trên ổ cứng, đây là cách thường dùng nhất để “undo những gì xảy ra hôm qua”. Tab upload cho phép bạn restore từ một file backup tự tải lên server, rất tiện khi bạn muốn chuyển tenant giữa các môi trường hoặc lấy lại data từ một bản lưu trữ cũ. Tính năng cross-database restore hỗ trợ khôi phục chéo qua nhiều loại DB, nên một tenant dùng engine database này có thể được build lại sang engine khác mà bạn không cần phải tự sửa file dump.

Ngay từ giao diện quản lý backup, bạn có thể xem danh sách, download, xoá và restore các bản lưu trên ổ cứng, gom trọn vòng đời quản lý vào một chỗ. Một thói quen cực tốt bạn nên tập: thỉnh thoảng hãy thử restore một tenant vào môi trường test và check xem data lên có mượt không. Đó là cách bạn xác nhận luồng multi tenant wordpress backup của mình có thật sự ngon nghẻ trước khi cần dùng đến.

Lưu ý rõ ranh giới ở đây. Đây là tính năng backup và restore từng tenant nằm bên trong bản GrabWP Tenancy Pro. Còn plugin GrabWP Restore miễn phí độc lập lại là một tool hoàn toàn khác, nó dùng để build một file ZIP export từ bản Pro thành một site độc lập (standalone). Chỉ nên dùng nó khi bạn muốn tách một tenant ra khỏi hệ thống, chứ không phải dùng để khắc phục sự cố thường ngày.

Tự động hoá với WP-CLI và Schedule Assurance

Tất cả mọi thứ kể trên đều có thể viết script. GrabWP mang đến các lệnh WP-CLI để chạy backup, cấu hình lịch cho tenant, xem trạng thái kèm lịch sử gần nhất, và đổi lịch chạy cho mọi tenant cùng lúc. Nhờ vậy, backup trở thành một phần cốt lõi trong các luồng provisioning và CI của bạn: spin up một tenant, setup lịch trình, rồi đi làm việc khác. Khả năng lên lịch lại cho cả hệ thống chỉ bằng một câu lệnh sẽ rất tiện lợi sau khi bạn thay đổi policy chung.

Điểm yếu chí mạng với mọi tính năng lên lịch trong WordPress là WP-Cron, nó chỉ chạy khi site có traffic. Với một tenant im lìm, bản backup đáng ra phải chạy hằng ngày có thể bị trượt lịch. Tính năng Schedule Assurance trong phần cài đặt Pro sinh ra chính xác là để trị bệnh này: nó hiển thị trạng thái WP-Cron, lịch backup tiếp theo, các khoảng thời gian khả dụng và, nếu WP-Cron bị tắt, nó sẽ hướng dẫn bạn kết nối một system cron thực sự. Setup chuẩn cho một hệ thống lớn là disable WP-Cron đi và dùng lệnh wp qua crontab của hệ thống, khi đó các bản backup định kỳ sẽ được trigger cực chuẩn theo đồng hồ mà chẳng cần quan tâm đến traffic.

Chiến lược cơ bản khuyên dùng

Gom tất cả lại, dưới đây là một mức cơ bản hợp lý mà bạn có thể tinh chỉnh lại cho đúng nhu cầu của mình:

  1. Set lịch chạy hằng ngày làm mặc định chung, sau đó override cấu hình cho các tenant bận rộn (chạy hai lần mỗi ngày hoặc hàng giờ) và giảm đi cho các tenant nhàn rỗi (hàng tuần).
  2. Thiết lập chỉ số retention cho từng tenant để khớp với tốc độ thay đổi data, giúp các cửa hàng lớn có lịch sử backup dày dặn hơn.
  3. Bật auto-offload lên S3 cho mọi tenant và setup giới hạn số file theo tenant để kho lưu trữ remote tự biết đường dọn dẹp.
  4. Điều khiển lịch chạy bằng system cron khi WP-Cron đã bị tắt, và check lại bằng Schedule Assurance sau mọi thay đổi.
  5. Test restore thường xuyên bằng cách build lại một tenant vào môi trường nháp.

Làm chuẩn như vậy, bạn sẽ có khả năng phục hồi siêu chi tiết, kiểm soát tốt dung lượng lưu trữ ở cả hai đầu, và yên tâm với các bản backup offsite mà không cần tốn công canh chừng.

Plugin nền tảng GrabWP Tenancy đang được phát hành miễn phí trên WordPress.org, còn các tính năng backup từng tenant, lên lịch chạy, tải lên S3, và cross-database restore đi kèm trong bản GrabWP Tenancy Pro với giá $9.99/month. Nếu bạn vẫn đang phân vân không biết nên chia tách dữ liệu tenant như thế nào từ đầu, hãy đọc bài hướng dẫn của chúng tôi về MySQL độc lập so với SQLite cho hệ thống WordPress multi-tenant.

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

Tôi có thể restore một tenant mà không làm ảnh hưởng đến các tenant khác không?
Được chứ. GrabWP Tenancy Pro thực hiện backup và restore từng tenant hoàn toàn độc lập. Quá trình restore chỉ build lại database, uploads, content và config của riêng tenant đó, nên phần còn lại của hệ thống vẫn chạy bình thường.
Các bản backup từ xa được lưu ở đâu?
GrabWP hỗ trợ lưu trữ remote tương thích S3. Bạn có thể dùng lại thông tin đăng nhập S3 hiện có hoặc thêm cấu hình mới, tự động đẩy từng bản backup lên S3 ngay khi chạy xong, và kéo các bản backup chỉ có trên remote về server khi cần.
Sẽ thế nào nếu WP-Cron chạy không ổn định trên server của tôi?
Tính năng Schedule Assurance trong phần cài đặt Pro sẽ báo cáo trạng thái WP-Cron, lịch chạy backup tiếp theo và các khoảng thời gian khả dụng. Nếu WP-Cron bị tắt, hệ thống sẽ hướng dẫn bạn setup system cron để các bản backup của tenant vẫn chạy đúng giờ.

Editorial standards: Our content is written by WordPress experts with hands-on multi-tenancy experience. Articles are fact-checked and regularly updated to ensure accuracy.