Azure SQL: Hướng dẫn Toàn diện
Tài liệu này cung cấp cái nhìn chi tiết và dễ hiểu về các dịch vụ cơ sở dữ liệu SQL trên Azure, giúp bạn chọn đúng dịch vụ và vận hành hiệu quả.
1. Tổng quan: Chọn dịch vụ nào?
Khi nói đến "SQL trên Azure", người mới thường bị rối vì có quá nhiều lựa chọn. Hãy hình dung như sau:
A. SQL Server on Azure VM (IaaS)
- Là gì?: Bạn thuê một máy chủ ảo (VM) trên Azure và tự cài đặt SQL Server lên đó (hoặc dùng image có sẵn).
- Tương tự: Giống hệt như bạn mua một máy chủ vật lý đặt tại văn phòng, nhưng máy chủ này nằm ở data center của Microsoft.
- Quyền hạn: Bạn có toàn quyền Admin (Remote Desktop vào Win/Linux). Bạn có thể cài thêm phần mềm khác lên máy này.
- Trách nhiệm: Bạn phải tự lo việc cập nhật Windows, cập nhật SQL Server, cấu hình backup, cấu hình High Availability.
- Khi nào dùng?: Khi bạn cần chuyển một ứng dụng cũ (Legacy) lên Cloud mà ứng dụng đó yêu cầu quyền truy cập sâu vào hệ điều hành.
B. Azure SQL Managed Instance (PaaS)
- Là gì?: Microsoft quản lý hạ tầng cho bạn. Bạn không thấy máy chủ vật lý, không Remote Desktop được. Nhưng nó có đầy đủ tính năng của SQL Server Enterprise.
- Tương tự: Giống như bạn thuê một DBA (Database Administrator) chuyên nghiệp quản lý server cho bạn.
- Quyền hạn: Bạn chỉ quản lý Database.
- Trách nhiệm: Microsoft lo patch, backup, HA.
- Khi nào dùng?: Khi bạn muốn di chuyển ứng dụng doanh nghiệp (ERP, CRM) lên Cloud để giảm tải vận hành ("Lift and Shift") nhưng vẫn cần các tính năng nâng cao như SQL Agent, Cross-database queries.
C. Azure SQL Database (PaaS)
- Là gì?: Dịch vụ Database hiện đại nhất, sinh ra cho Cloud.
- Tương tự: Giống như bạn thuê một "ngăn chứa dữ liệu" thông minh.
- Đặc điểm: Tự động scale, Serverless (tự tắt khi không dùng), dung lượng khổng lồ (Hyperscale).
- Khi nào dùng?: Khi bạn viết ứng dụng mới (Modern Apps, Microservices, SaaS).
2. Bảng so sánh chi tiết
| Tính năng | SQL on VM | Managed Instance | SQL Database |
|---|---|---|---|
| Loại dịch vụ | IaaS (Hạ tầng) | PaaS (Nền tảng) | PaaS (Nền tảng) |
| Truy cập OS | Có (RDP/SSH) | Không | Không |
| VNet | Nằm trong VNet | Nằm trong VNet | Cần Private Link |
| SQL Agent | Có | Có | Không (Dùng Elastic Jobs) |
| Backup | Tự cấu hình | Tự động | Tự động |
| Update/Patch | Tự làm | Tự động | Tự động |
| Chi phí | License + VM | Cao | Linh hoạt (Rất rẻ đến Rất đắt) |
3. Mô hình mua hàng (Purchasing Models)
Khi tạo Azure SQL Database, bạn sẽ gặp 2 khái niệm khó hiểu: DTU và vCore.
DTU (Database Transaction Unit)
- Là gì?: Một đơn vị đo lường tổng hợp bao gồm CPU, Memory, và I/O.
- Dễ hiểu: Giống như bạn mua gói cước điện thoại "Combo" (100 phút gọi + 2GB Data). Bạn không biết chính xác mình có bao nhiêu CPU, chỉ biết gói "Basic" yếu hơn gói "Standard".
- Ưu điểm: Đơn giản, dễ chọn cho người mới. Giá rẻ cho database nhỏ.
- Nhược điểm: Khó đoán hiệu năng chi tiết.
vCore (Virtual Core)
- Là gì?: Bạn chọn chính xác số lượng nhân CPU (vCore) và dung lượng RAM.
- Dễ hiểu: Giống như bạn build PC (chọn CPU i7, RAM 16GB).
- Ưu điểm: Linh hoạt, minh bạch. Dùng được Azure Hybrid Benefit (mang license SQL có sẵn lên để giảm giá).
- Nhược điểm: Phức tạp hơn.
Lời khuyên
Bắt đầu với mô hình vCore Serverless nếu bạn chưa rõ nhu cầu. Nó sẽ tự động scale CPU dựa trên tải thực tế và tính tiền theo giây. Rất tiết kiệm cho môi trường Dev/Test.
4. Các tầng dịch vụ (Service Tiers)
- General Purpose: Dùng cho hầu hết các ứng dụng thông thường. Dữ liệu lưu trên Azure Storage (Remote Storage). Độ trễ trung bình.
- Business Critical: Dùng cho ứng dụng yêu cầu hiệu năng cực cao (Low latency). Dữ liệu lưu trên ổ SSD cục bộ (Local SSD) của máy chủ. Tốc độ đọc ghi cực nhanh.
- Hyperscale: Dùng cho database cực lớn (lên tới 100TB). Kiến trúc phân tán đặc biệt.
5. Bảo mật (Security)
Bảo mật SQL Database gồm nhiều lớp như củ hành:
-
Network Security (Tường lửa):
- Mặc định, DB bị chặn truy cập từ Internet.
- Bạn cần thêm IP của mình vào Firewall Rules để kết nối.
- Tốt nhất là dùng Private Link để kết nối qua mạng nội bộ Azure, không đi qua Internet.
-
Authentication (Xác thực):
- SQL Authentication: Username/Password truyền thống.
- Microsoft Entra ID (Azure AD): Đăng nhập bằng tài khoản email công ty. An toàn hơn, hỗ trợ MFA. Khuyên dùng.
-
Authorization (Phân quyền):
- User này được đọc bảng nào? Được ghi bảng nào?
-
Row-Level Security (RLS):
- Kiểm soát dữ liệu ở cấp độ dòng. Ví dụ: Nhân viên Sale khu vực miền Bắc chỉ nhìn thấy đơn hàng của miền Bắc, dù họ
SELECT * FROM Orders.
- Kiểm soát dữ liệu ở cấp độ dòng. Ví dụ: Nhân viên Sale khu vực miền Bắc chỉ nhìn thấy đơn hàng của miền Bắc, dù họ
6. Vận hành (Operations)
Backup & Restore
- Azure tự động backup full hàng tuần, differential hàng ngày, và log backup mỗi 5-10 phút.
- Point-in-time Restore (PITR): Bạn có thể khôi phục database về bất kỳ thời điểm nào trong vòng 7 ngày (mặc định) đến 35 ngày. Ví dụ: "Khôi phục về lúc 10:15:30 sáng nay trước khi tôi lỡ tay xóa bảng".
Scaling (Mở rộng)
- Bạn có thể đổi từ 2 vCore lên 4 vCore, 8 vCore... chỉ với vài cú click chuột.
- Quá trình này diễn ra online, database vẫn hoạt động bình thường (chỉ mất kết nối khoảng vài giây ở bước cuối cùng).