Tags

, , , , , , , , , , , ,

GIẢI PHÁP ALWAYSON TRONG SQL SERVER 2012 (Phần 2)

Giải pháp AlwaysOn trong SQL Server 2012 (Phần 1)

A. ALWAYSON AVAILABILITY GROUPS:

Tính năng AlwaysOn Availability Groups là 1 giải pháp HA & DR thay thế cho tính năng Database Mirroring hoặc Log Shipping.

Mỗi một Availability Group hỗ trợ môi trường failover cho 1 nhóm các user database nhất định, gọi là Availability Databases. Nhóm các database này sẽ cùng ở chung trong 1 Instance, được gọi là Replica. Các databases trong 1 group có khả năng fail over cùng nhau từ 1 Replica chính (primary replica), trong những trường hợp cần thiết, qua 1 Replica khác (secondary replica). Luôn có 1 primary replica duy nhất và có thể có tối đa 4 secondary replica, trong đó tối đa 2 active secondary replica cho phép đọc và/hoặc thực hiện backup. Mỗi replica phải ở trên các node khác nhau trong 1 WSFC cluster, nghĩa là mỗi Instance phải ở trên 1 server khác nhau (có thể là 1 server vật lý hay 1 server ảo)

Một availability group chỉ có thể fail over ở level replica (instance). Việc fail over sẽ không diễn ra ở level của database bởi các vấn đề như mất data files, database bị xóa hay transaction log bị hỏng.

Các ứng dụng (Application) kết nối đến các database nằm trong 1 availability group thông qua các Availability Group Listeners. Listener đóng vai trò như 1 gateway (hay server ảo) để cung cấp khả năng chuyển hướng các client connection đến primary replica.

Các Chế độ Đồng bộ

AlwaysOn Availablity Groups hỗ trợ 2 chế độ đồng bộ giữa primary replica và một secondary replica:

  • Asynchronous-commit mode: thay thế cho Log Shipping để xây dựng một giải pháp DR cho những Replica ở cách xa nhau về mặt địa lý.

Trong chế độ này, các transaction log của primary replica sẽ được gửi 1 cách không liên tục và không đồng bộ để commit ở secondary replica. Vì thế không bắt buộc dữ liệu trong các replica là phải giống nhau mà có thể chấp nhận 1 độ trễ nhất định để đồng bộ dữ liệu giữa các replica.

Asynchronous-commit mode không hỗ trợ Automatic Failover. Trong những trường hợp gặp xử cố, người quản trị phải tự mình fail over database (force manual failover) để chuyển 1 secondary replica thành primary replica, và chấp nhận việc mất dữ liệu.

  • Synchronous-commit mode:  thay thế cho Database Mirroring để có thể đảm bảo toàn vẹn dữ liệu ở tối đa 3 Replica (kể cả primary replica)

Chế độ này yêu cầu primary replica chỉ được commit transaction log sau khi transaction log đã được gửi đến và commit ở secondary replica. Tốc độ đồng bộ sẽ bị giảm đáng kể nếu như đường truyền không tốt nhưng bù lại dữ liệu được bảo toàn, tránh bị mất dữ liệu nếu gặp sự cố.

Synchronous-commit mode hỗ trợ cả Automatic Failover và Planned Manual Failover, đảm bảo dữ liệu được bảo toàn sau khi fail over.

AlwaysOn Availability Groups hỗ trợ tối đa 2 secondary replica có thể cấu hình synchronous-commit mode với primary replica.

Các Chế độ Failover

Failover cung cấp khả năng để các replica có thể tráo đổi vai trò của nhau trong những trường hợp cần thiết. Có 3 chế độ Failover được hỗ trợ:

  • Force Manual Failover (Force Failover): (mất dữ liệu) chỉ xảy ra khi cấu hình ở chế độ đồng bộ asynchronous-commit mode. Force failover là 1 lựa chọn khôi phục dữ liệu sau thảm họa (DR) trong những trường hợp secondary replica không thể đồng bộ với primary replica và khi đó phải chấp nhận mất dữ liệu.
  • Planned Manual Failover (Manual Failover): (không mất dữ liệu) người quản trị sẽ quyết định failover 1 secondary replica thành primary replica vì 1 mục đích nào đó ví dụ như bảo trì/ nâng cấp/ thay thế primary replica hiện hành. Manual failover chỉ xảy ra khi secondary được cấu hình synchronous-commit mode và đã được đồng bộ (synchronized) với primary replica.
  • Automatic Failover: (không mất dữ liệu) quá trình failover sẽ tự động xảy ra giữa 1 synchronized secondary replica và primary khi các thỏa mãn các điều kiện sau:
    • Chế độ đồng bộ giữa secondary replica và primary replica là synchronous-commit mode.
    • Cả 2 replica đều chọn chế độ failover là Automatic Failover.
    • Ngay trước khi failover, trạng thái của secondary replica là synchronized.
    • Trong WSFC phải có Quorum và thỏa mãn failover policy

Trong các điều kiện trên, Flexibile failover policy là 1 trong những điều kiện quan trọng quy định những nguyên nhân/ điều kiện để automatic failover xảy ra, bao gồm 2 yếu tố:

  • Health-check timeout Threshold: sử dụng sp_server_diagnostics để kiểm tra sức khỏe của primary replica. Thời gian phản hồi được chấp nhận mặc định là 30 giây, nếu lâu hơn đồng nghĩa với việc primary replica có vấn đề.
  • Failure-condition level: có 5 level quy định giới hạn cho những điều kiện có thể dẫn đến quá trình failover. Level 2 là mặc định. Xem chi tiết: Flexible Failover Policy for Automatic Failover of an Availability Group.

Các Ưu điểm

  • Xây dựng được 1 giải pháp HA & DR cho 1 nhóm database.
  • Không cần phải tốn thêm 1 SQL Server Instance đứng vai trò trung gian như trong Database Mirroring.
  • Tận dụng được tối đa sức mạnh của WSFC.
  • Hỗ trợ đến 5 Availability Replica, nghĩa là có thể có đến 4 bản copy dự phòng thay vì chỉ hỗ trợ 1 như trong giải pháp Database Mirroring.
  • Hỗ trợ 2 chế độ sẵn sàng khác nhau Asynchronous-commit mode thay thế cho Log Shipping và Synchronous-commit mode thay thế cho Database Mirroring.
  • Hỗ trợ 3 chế độ Failover khác nhau: Automatic Failover, Planned Manual Failover, Force Manual Failover.
  • Hỗ trợ tối đa 2 Active Secondary Replica, là cơ sở để tận dụng được các database trong server dự phòng (active-secondary replica) cho các ứng dụng khác truy cập và đọc dữ liệu; hoặc lên kế hoạch backup thay vì phải tốn tài nguyên để backup ở server chính (primary replica).

Enjoy!!!
Nhat Phan

Giải pháp AlwaysOn trong SQL Server 2012 (Phần 3)