Đánh Lại Chỉ Mục Zero-Downtime: Hoán Đổi Nguyên Tử swapIndexes & Bí Quyết Dự Phòng NVMe
MeiliSizer Blueprint Summary: Mỗi khi thay đổi trọng số xếp hạng, từ điển tách từ hay mô hình Vector, bạn buộc phải đánh lại toàn bộ chỉ mục. Xóa Index cũ để nạp lại sẽ làm rỗng kết quả tìm kiếm suốt 20 phút — hãy dùng cơ chế hoán đổi nguyên tử Blue/Green.
Tính Chuẩn Đỉnh RAM & Dung Lượng Ổ NVMe Gấp Đôi Trong Lúc Chạy Song Song (MeiliSizer Guide)
Khi chạy quy trình Blue/Green, máy chủ vừa phải giữ nguyên chỉ mục đang phục vụ khách (products) trong RAM, vừa phải xây mới chỉ mục nháp (products_staging) trong vùng nhớ --max-indexing-memory và ghi xuống đĩa. Điều này làm dung lượng ổ NVMe tăng gấp đôi tạm thời và đòi hỏi giới hạn chặt số luồng CPU (--max-indexing-threads) để không cướp tài nguyên của luồng trả kết quả trực tiếp.
Lệnh Hoán Đổi Nguyên Tử /swap-indexes Dưới 1 Mili-Giây Trên Meilisearch
# 1. Tạo và nạp toàn bộ dữ liệu vào bảng nháp products_staging_20261112
# 2. Kiểm tra số lượng bản ghi đã khớp 100% & chạy thử truy vấn kiểm tra
# 3. Thực thi lệnh tráo đổi con trỏ nguyên tử tức thì (0ms gián đoạn):
curl -X POST 'http://127.0.0.1:7700/swap-indexes' \
-H 'Authorization: Bearer '"$MEILI_MASTER_KEY" \
-H 'Content-Type: application/json' \
--data-binary '[{ "indexes": ["products", "products_staging_20261112"] }]'
# 4. Xóa bảng cũ sau 30 giây để thu hồi ngay dung lượng ổ cứng NVMe!
Bảng Định Cỡ RAM MeiliSizer Cho ATOMIC-INDEX-SWAP
| Quy Mô Danh Mục | Tập Làm Việc Nóng | Đỉnh RAM Dự Phòng | Cấu Hình Khớp Tải |
|---|---|---|---|
| 1M Bản ghi Blue/Green (1.5 KB) | 4.6 GB RAM Đỉnh | Cần >= 60 GB NVMe | Hostinger KVM 4 16GB / 200GB NVMe ($10.49) |
| 5M Bản ghi Blue/Green (4.0 KB) | 30.5 GB RAM Đỉnh | Cần >= 220 GB NVMe | UltaHost VDS 32GB / 400GB NVMe ($58.00) |
| 20M Bản ghi Blue/Green (4.0 KB) | 64+ GB RAM Đỉnh | Cần >= 800 GB NVMe | UltaHost VDS 64GB / 800GB NVMe ($95.00) |
Checklist Triển Khai MeiliSizer: ATOMIC-INDEX-SWAP
- Luôn chọn ổ cứng NVMe lớn gấp tối thiểu 2.2 lần kích thước dữ liệu LMDB/RocksDB thường trực để đủ chỗ chứa đồng thời bản Chính + bản Nháp.
- Khóa --max-indexing-threads ở mức 50%–65% tổng số nhân vCPU để tốc độ gõ phím của khách đang mua hàng vẫn dưới 15ms.
- Với Typesense, hãy cho ứng dụng gọi vào tên bí danh (Collection Alias) rồi cập nhật con trỏ qua API PUT /aliases/products.
- Đợi khoảng 30 giây sau khi hoán đổi rồi mới xóa bảng cũ để các truy vấn phân trang đang dở dang hoàn tất êm ái.
UltaHost VDS Tài Nguyên Riêng (Chuyên Trị Typesense RAM Lớn & Vector HNSW) — MeiliSizer Pick
100% Nhân CPU vật lý & RAM DDR5 độc lập (0% CPU Steal) • Cụm Singapore, Tokyo, Mỹ, Âu • Không giới hạn băng thông
Hostinger KVM DDR5 NVMe VPS (Docker / Meilisearch 1-Click) — MeiliSizer Option
Giảm tới 67% + Giảm thêm 20% đối tác • 8GB–32GB RAM DDR5 + NVMe Gen4 tối ưu LMDB Mmap
Câu Hỏi Kỹ Thuật MeiliSizer: ATOMIC-INDEX-SWAP
- Lệnh swapIndexes có làm hỏng Search API Key hay Tenant Token đang chạy ngoài trình duyệt không?
-
Không bao giờ hỏng! Lệnh swapIndexes tráo đổi kho dữ liệu bên dưới nhưng giữ nguyên tên định danh "products", nên mọi khóa API và giao diện web hoạt động xuyên suốt không cần tải lại trang.
- Tại sao lúc chạy nạp lại chỉ mục ban đêm trên Cloud giá rẻ thì tìm kiếm bị vọt lên 200ms?
-
Các gói Cloud chia sẻ CPU ảo (Burstable) sẽ bóp xung nhịp sau vài phút chạy 100% tải. Chuyển sang nhân vật lý riêng UltaHost VDS (0% CPU Steal) hoặc KVM AMD EPYC của Hostinger sẽ chấm dứt triệt để tình trạng này.