Amazon Aurora MySQL Bài 17: Cơ chế Failover tự động khi Writer gặp sự cố: Thời gian downtime mất bao lâu?
Trong vận hành hệ thống sản xuất (Production), không có hệ thống nào là bất bại trước các sự cố phần cứng hoặc phần mềm. Khoảnh khắc nút ghi chính (Writer Instance) sập nguồn đột ngột chính là lúc bản lĩnh của kiến trúc cơ sở dữ liệu được thử thách.
Bài viết này sẽ mổ xẻ chi tiết cách Cơ chế Failover tự động của Aurora MySQL diễn ra và trả lời câu hỏi: Thời gian downtime thực tế mất bao lâu?
1. Nỗi đau Failover ở MySQL truyền thống (RDS Multi-AZ)
Ở cơ sở dữ liệu RDS MySQL Multi-AZ truyền thống, khi Master instance chết:
-
AWS phát hiện mất tín hiệu từ Master.
-
Hệ thống tiến hành thúc đẩy (promote) nút Standby ở AZ khác lên làm Master mới.
-
Nút thắt cổ chai: Standby instance phải chạy tiến trình Crash Recovery (quét lại tệp redo log trên ổ cứng cục bộ để đồng bộ trạng thái giao dịch chưa hoàn tất). Quá trình này có thể kéo dài từ 1 phút đến vài phút tùy thuộc vào dung lượng tải ghi trước đó. Trong suốt thời gian này, ứng dụng nhận toàn bộ lỗi kết nối và không thể thao tác ghi dữ liệu.
2. Cơ chế Failover tự động trong Aurora MySQL diễn ra như thế nào?
Aurora thiết kế lại hoàn toàn quy trình chuyển đổi dự phòng để tối ưu hóa tốc độ, loại bỏ gần như toàn bộ các tác vụ nặng nhọc ở tầng tính toán:
-
Bước 1: Phát hiện sự cố (Health Check & Failure Detection):
-
Aurora liên tục thực hiện các gói tin kiểm tra sức khỏe (
health checks) ở cấp độ cluster và instance. -
Nếu Writer instance không phản hồi trong một khoảng thời gian ngắn (vài giây), AWS tự động kích hoạt tiến trình chuyển đổi dự phòng.
-
-
Bước 2: Bầu chọn Writer mới (Promotion):
-
Nếu trong cụm Aurora của bạn có sẵn các Reader Instances (đặc biệt là các nút được cấu hình độ ưu tiên Failover Tier cao), AWS sẽ chọn ngay một Reader khỏe mạnh nhất và ra lệnh Promote nó lên làm Writer mới.
-
Điểm khác biệt chí mạng: Vì toàn bộ các Read Replicas đã dùng chung một Aurora Storage Volume bên dưới, node mới lên ngôi không cần phải thực hiện bất kỳ tiến trình recovery dữ liệu nào trên đĩa. Dữ liệu đã sẵn sàng hiển hiện trên shared storage.
-
-
Bước 3: Định tuyến lại DNS (DNS Switch):
- AWS tự động cập nhật bản ghi DNS của Cluster Endpoint để trỏ thẳng sang địa chỉ IP của Writer mới vừa được chọn.
3. Thời gian Downtime thực tế mất bao lâu?
-
Con số công bố và thực tế: Trong điều kiện tiêu chuẩn, thời gian downtime khi Failover của Aurora chỉ kéo dài từ 15 đến 30 giây.
-
Trong khoảng thời gian ngắn ngủi này:
-
Các câu lệnh ghi gửi tới Cluster Endpoint sẽ tạm thời thất bại hoặc bị nghẽn chờ kết nối mới.
-
Các câu lệnh đọc gửi qua Reader Endpoint vẫn có thể tiếp tục hoạt động bình thường nếu các Read Replicas không bị ảnh hưởng bởi lỗi của Writer.
-
Ngay khi DNS được cập nhật, ứng dụng tự động thiết lập lại kết nối mới và tiếp tục ghi dữ liệu bình thường mà không cần sự can thiệp thủ công của DBA.
-
4. Mở rộng nâng cao: Aurora Tiered Failover Priority
Bạn hoàn toàn có thể kiểm soát nút nào sẽ được ưu tiên lên làm Writer trước khi sự cố xảy ra bằng cách cấu hình Promotion Tier (từ cấp độ 0 đến 15):
-
Cấp
0: Ưu tiên cao nhất, thường gán cho Read Replica có phần cứng mạnh nhất hoặc đặt ở AZ chính. -
Cấp cao hơn (ví dụ
1đến15): Ưu tiên thấp hơn, dùng cho các replica cấu hình nhỏ hoặc đặt ở AZ phụ phòng hờ.
5. Góc nhìn vận hành cho Backend Engineer
- Thiết kế ứng dụng chịu lỗi ngắn hạn (Retry Strategy): Do Failover diễn ra trong vòng ~30 giây, ứng dụng backend cần được trang bị các cơ chế Retry (Thử lại thông minh) ở tầng kết nối cơ sở dữ liệu (ví dụ: thử lại sau mỗi 2 giây, tối đa 3 lần) cho các giao dịch quan trọng. Điều này giúp hệ thống tự phục hồi hoàn toàn mượt mà mà không làm văng lỗi 500 khó chịu ra màn hình của người dùng cuối.
All rights reserved