Technical Secrets of PolarDB: High Availability - Smooth Switchover
Bài tóm tắt Alibaba 2025 4. Điều chỉnh Độ khó: Khó
Alibaba · 2025 · 4. Điều chỉnh · Độ khó: Khó — bài gốc
Bài của nhà cung cấp (Alibaba Cloud), phần 4 của series về PolarDB lập kỷ lục TPC-C. Mọi nhận định về hiệu quả là theo Alibaba. Cùng họ sản phẩm với Alibaba 2026 (bản phân tán).
Bối cảnh
- Bài test TPC-C có phần kiểm tra high availability: tiêm lỗi node, mất mạng, đo throughput, latency, RTO, RPO.
- Khác MySQL primary/secondary truyền thống (replicate binlog, mỗi bên một bản dữ liệu), PolarDB for MySQL dùng storage chia sẻ: primary (RW) và read-only (RO) trong cùng zone đọc chung một bản dữ liệu, nên dự phòng không tốn thêm storage.
Thay đổi chính
- VotingDisk: khoá phân tán dựa trên lease cài bằng thao tác đọc/ghi nguyên tử của storage chia sẻ (PolarStore), không cần ZooKeeper hay Redis, cũng không cần bỏ phiếu đa số kiểu Paxos. Primary gia hạn lease; RO dự phòng nóng thử lấy khoá định kỳ (trylock) để phát hiện lỗi và lên thay; RO khác chỉ theo dõi topo. I/O fence của storage giới hạn quyền ghi theo phạm vi khoá, nên không thể có hai primary. Theo Alibaba: phát hiện lỗi chính xác hơn dò qua mạng (tránh failover nhầm do chậm), xác định trạng thái cụm trong 1–5 giây, RPO = 0 vì dùng chung storage.
- Dự phòng nóng thật sự: RO dự phòng giữ sẵn trong bộ nhớ buffer pool, undo, redo, binlog của primary, nên lúc chuyển không phải đọc lại từ storage.
- Không đứt kết nối: proxy giữ trạng thái session cho kết nối rảnh; với giao dịch đang chạy, ngữ cảnh giao dịch được đồng bộ sang RO, proxy khôi phục ngữ cảnh trên primary mới để giao dịch chạy tiếp. Thử với sysbench 32 luồng: chỉ có query chậm hơn 1 giây lúc chuyển, không mất kết nối.
- Bản multi-master (Limitless): mỗi primary có lease riêng; có thể không cần RO, primary còn sống nhận shard của primary hỏng (hiệu năng giảm khi tải cao).
- Nhiều zone trong một region: bốn mức từ async chỉ storage (phải dựng compute khi chuyển) đến ba node (primary, secondary, log) đồng bộ mạnh bằng X-Paxos trên redo vật lý, RTO dưới 15 giây, không mất dữ liệu. Nhiều region (GDN): đồng bộ bằng redo log thay vì binlog, đọc tại region gần, chuyển region bằng tay; GDN 2.0 cho ghi gần theo database/bảng/partition.
Bài học cho SWE
- Khi storage đã chia sẻ và có thao tác nguyên tử, lease + fence trên chính storage thay được dịch vụ đồng thuận riêng để chọn primary (Failover, replica và dự phòng dữ liệu).
- Failover "mượt" gồm ba lớp: phát hiện đúng, bên dự phòng nóng sẵn, và tầng proxy giữ phiên/giao dịch; thiếu lớp cuối thì ứng dụng vẫn thấy lỗi.
- Mỗi mức DR nhiều zone/region là một điểm khác nhau trên trục chi phí – RPO – RTO (Độ tin cậy và multi-region).
Liên quan
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (2)