Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Cấu Hình Always-On High Availability Groups Trên SQL Server

Trong bài viết này, chúng tôi sẽ hướng dẫn từng bước cách cài đặt và cấu hình Always On Availability Groups trên SQL Server chạy trên Windows Server 2019, thảo luận kịch bản failover, và một số chủ đề liên quan.

Always On Availability Groups cung cấp tính sẵn sàng cao trong Microsoft SQL Server. Always On xuất hiện từ bản MSSQL 2012.

Đặc Điểm Always On Availability Groups Trong SQL Server

Bạn có thể dùng SQL Server availability groups cho gì?

  • MS SQL high availability và failover tự động;
  • Cân bằng tải truy vấn SELECT giữa các node (secondary replica có thể đọc);
  • Backup từ secondary replica;
  • Dư thừa dữ liệu. Mỗi replica giữ bản sao database availability group.

Always On dựa trên Windows Server Failover Cluster (WSFC). WSFC giám sát node availability group và cung cấp failover tự động. Từ MS SQL Server 2017, Always On có thể dùng không cần WSFC và trên host Linux. Khi xây dựng cluster Linux, bạn có thể dùng Pacemaker thay vì WSFC.

Always On có trong phiên bản Standard, nhưng có hạn chế:

  • Giới hạn 2 replica (primary và secondary);
  • Secondary replica không đọc dữ liệu;
  • Secondary replica không backup MS SQL;
  • Chỉ hỗ trợ 1 database mỗi availability group.

Không có hạn chế trong phiên bản Enterprise.

Bạn có thể đọc về khía cạnh cấp phép MS SQL Server ở đây.

Hãy xem các thuật ngữ.

  • Always On Availability Group là tập hợp replica và database;
  • Replica là instance SQL Server trong availability group. Replica có thể primary hoặc secondary. Mỗi replica có thể chứa một hoặc nhiều database.

Always On dựa trên WSFC. Mỗi node availability group phải là thành viên Windows failover cluster. Mỗi instance SQL Server có thể có nhiều availability group. Mỗi availability group có tới 8 secondary replica.

Nếu primary replica lỗi, cluster sẽ bầu primary replica mới, và Always On sẽ biến một secondary replica thành primary. Vì user kết nối đến Listener (địa chỉ IP cluster đặc biệt và tên DNS tương ứng) khi làm việc với Always On, sẽ có thể chạy truy vấn ghi lại. Listener cũng chịu trách nhiệm cân bằng truy vấn SELECT giữa secondary replica.

Cấu Hình Windows Failover Cluster Cho Always On Availability Group

Trước hết, phải cấu hình failover cluster trên tất cả node dùng cho Always On.

Cấu hình của tôi:

  • 2 máy ảo chạy Windows Server 2019
  • 2 instance SQL Server 2019 Enterprise
  • Hostname node là testnode1 và testnode2. Tên instance SQL Server là node1 và node2.

Thêm vai trò Failover Clustering dùng Server Manager hoặc cài qua PowerShell:

Install-WindowsFeature –Name Failover-Clustering –IncludeManagementTools

Cấu Hình Always-On High Availability Groups Trên SQL Server

Cài đặt tự động, không cần cấu hình gì. Chạy snap-in Failover Cluster Manager (FailoverClusters.SnapInHelper.msc) và tạo cluster mới.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Thêm tên host bạn muốn join vào cluster.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Sau đó wizard đề nghị chạy test. Để làm vậy, chọn mục đầu tiên.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chỉ định tên cluster, chọn mạng, và địa chỉ IP cluster. Tên cluster xuất hiện trong DNS tự động; không cần tạo bản ghi DNS thủ công. Trong trường hợp tôi, tên cluster là ClusterAG.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Bỏ chọn Add all eligible storage to the cluster vì có thể thêm disk sau.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chỉ có 2 node trong cluster, nên phải cấu hình Cluster Quorum. Cluster Quorum là phiếu bầu quyết định. Ví dụ, nếu một node cluster không khả dụng, cluster phải phát hiện node nào thực sự online và thấy nhau. Cluster Quorum cung cấp tính nhất quán cluster (Cluster -> More Actions -> Configure Cluster Quorum Settings).

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chọn tùy chọn quorum witness.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Sau đó chọn loại witness: file share witness.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chỉ định đường dẫn UNC đến thư mục chia sẻ. Tạo thư mục yourself. Nó phải có trên server ngoài failover cluster.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Khi cấu hình cluster, bạn có thể thấy lỗi:

There was an error configuring the file share witness. Unable to save property changes for File Share Witness. The system cannot find the file specified.

Có thể tài khoản user chạy cluster không có quyền NTFS truy cập thư mục chia sẻ. Mặc định cluster chạy dưới tài khoản user cục bộ. Bạn có thể cấp quyền trên thư mục cho tất cả máy cluster hoặc đổi tài khoản dịch vụ cluster và cấp quyền liên quan.

Cấu hình Windows Failover Cluster cơ bản hoàn tất.

Cấu Hình Always On Availability Group Trên MS SQL Server

Sau cài đặt instance SQL Server điển hình, bạn có thể bật và cấu hình Always On Availability Groups. Bật chúng trong thuộc tính instance của SQL Server Configuration Manager. Như screenshot, SQL Server đã phát hiện nó thuộc cluster WSFC. Chọn Enable Always On Availability Groups và restart dịch vụ MSSQL instance. Làm tương tự cho instance thứ hai.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Mẹo. Trước cấu hình Always On, đảm bảo dịch vụ SQL Server không chạy dưới tài khoản local system. Khuyên dùng Group Managed Service Accounts hoặc tài khoản domain thường. Nếu không, bạn không hoàn thành cấu hình Always-On.

Chạy SQL Server Management Studio, kết nối đến host, nhấp Always On High Availability, và chạy New Availability Group Wizard.

Trong SQL Server Management Studio 18.x cho SQL Server 2017 và 2019 một số cài đặt Always On xuất hiện chỉ có trong T-SQL, nên khuyên dùng SSMS mới nhất.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chỉ định tên Always On availability group và chọn Database Level Health Detection. Dùng tùy chọn này, Always On phát hiện khi database không healthy.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chọn database SQL Server thêm vào Always On availability group.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Nhấp Add Replica và kết nối SQL server thứ hai. Vậy bạn thêm tới 8 server.

  • Initial Role là vai trò replica khi group tạo. Có thể Primary hoặc Secondary;
  • Automatic Failover – nếu database không khả dụng, Always On chuyển vai trò primary sang replica khác. Chọn mục này;
  • Availability Mode cho chọn Synchronous Commit hoặc Asynchronous Commit. Nếu chọn synchronous, transaction đến primary replica gửi đến tất cả secondary replica chế độ synchronous. Primary replica kết thúc transaction chỉ sau khi replica khác ghi lên disk. Do đó, mất dữ liệu bị loại nếu primary replica lỗi. Chế độ asynchronous, primary ghi thay đổi ngay không chờ phản hồi replica khác.
  • Readable Secondary cho phép chạy truy vấn SELECT trên secondary replica. Nếu giá trị yes, client truy cập read-only ngay cả khi kết nối không có ApplicationIntent=readonly.
  • Required synchronized secondaries to commit là số secondary replica đồng bộ để kết thúc transaction. Đặt tùy số replica, tôi đặt 1.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Không chỉnh sửa tab Endpoint.

Tab Backup Preferences, chọn nơi backup. Giữ mặc định: Prefer Secondary.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chỉ định tên, cổng, và địa chỉ IP availability group listener.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Giữ cài đặt Read-Only Routing không đổi.

Chọn loại đồng bộ replica. Tôi để mục đầu (Automatic seeding) chọn.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Sau đó cài đặt phải validated. Nếu không lỗi, nhấp Finish áp dụng thay đổi.

Trong trường hợp tôi, tất cả test thành công, nhưng ở bước Results sau cài, wizard báo lỗi tạo availability group listener. Lỗi EVENTID 1194 xuất hiện trong log sự kiện cluster:

Cluster network name resource failed to create its associated computer object in the domain.

Nghĩa là cluster không đủ quyền tạo listener. Tài liệu nói đủ cấp quyền tạo đối tượng loại computer cho đối tượng cluster. Dễ hơn làm bằng ủy quyền đặc quyền trong AD (hoặc cách nhanh nhưng không an toàn: tạm thêm CLUSTERAG$ vào Domain Admins).

Khi chẩn đoán Always-On và vấn đề hiệu suất SQL thấp trong availability group, nên nghiên cứu kỹ log Windows cluster bên cạnh công cụ chẩn đoán SQL Server tiêu chuẩn.

Vì tôi đã tạo availability group, chưa tạo listener, tôi thêm thủ công. Mở menu ngữ cảnh availability group và nhấp Add Listener.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chỉ định địa chỉ IP, cổng, và tên DNS listener.

Đảm bảo Listener xuất hiện trong phần Availability Group Listeners của Always On group.

Vậy, bạn đã hoàn tất cấu hình cơ bản availability group Always On.

SQL Server Always On: Kiểm Tra Hoạt Động & Failover

Hãy xem Availability Group Dashboard (Show Dashboard).

Cấu Hình Always-On High Availability Groups Trên SQL Server

OK, group đã tạo và hoạt động.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Thử làm node2 thành primary instance thủ công. Nhấp chuột phải availability group và chọn Failover.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chú ý giá trị Failover Readiness. No data loss nghĩa là không mất dữ liệu.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Kết nối đến node2.

Nhấp Finish.

Đảm bảo node2 thành primary replica (Primary Instance) trong availability group.

Đảm bảo listener hoạt động đúng. Chỉ định tên DNS listener và cổng cách nhau bằng dấu phẩy trong SSMS: ag1-listener-1,1445

Cấu Hình Always-On High Availability Groups Trên SQL Server

Chạy truy vấn SQL insert, select, update đơn giản đến database.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Sau đó kiểm tra failover tự động primary replica. Chỉ kill tiến trình sqlservr.exe trên TESTNODE2.

Kiểm tra trạng thái availability group trên node còn lại: TESTNODE1\NODE1.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Cluster tự động đổi trạng thái testnode1\node1 thành primary vì testnode2\node2 không khả dụng.

Kiểm tra trạng thái listener vì client dùng nó kết nối.

Trong trường hợp tôi, kết nối listener thành công, nhưng khi truy cập database, nhận lỗi:

Unable to access database 'TestDatabase' because it lacks a quorum of nodes for high availability. Try the operation again later.

Lỗi do tùy chọn Required synchronized secondaries to commit . Vì đặt giá trị 1 khi cấu hình, Always On không cho kết nối database, vì chỉ còn một primary replica.

Cấu Hình Always-On High Availability Groups Trên SQL Server

Đặt giá trị 0 và thử chạy truy vấn lại.

Testnode1 giữ trạng thái Primary instance, testnode2 thành secondary. Dữ liệu thay đổi trên testnode1 khi testnode2 tắt đồng bộ thành công sau khi bật máy.

Vậy, chúng ta đã đảm bảo mọi thứ hoạt động đúng và dữ liệu sẵn sàng đọc/ghi nếu lỗi nghiêm trọng.

Bạn có thể dễ dàng cấu hình Always On availability groups. Nếu muốn xây dựng giải pháp failover dựa trên SQL Server, availability groups sẽ quản lý tốt.