Các nhóm sẵn có có thể cung cấp chuyển đổi dự phòng liền mạch (không có lỗi truy vấn) không?


9

Tôi đã thử nghiệm tính năng Nhóm khả dụng trong SQL Server 2012 và tôi thấy rằng có khoảng 15 giây thời gian ngừng hoạt động khi máy chủ chính bị lỗi đối với máy chủ thứ cấp. Tất cả các truy vấn SQL được thực hiện trong thời gian này đều thất bại cho đến khi quá trình chuyển đổi dự phòng hoàn tất.

Có cách nào để giảm xuống 0 giây và ngăn các truy vấn không thành công trong quá trình chuyển đổi dự phòng không?

Nói cách khác, có cách nào để có bất kỳ truy vấn nào chạy trong khi không được chuyển hướng đến máy chủ chính thay vì không ... và có cách nào để có kết nối db mới kết nối ngay với máy chủ thứ cấp thay vì không kết nối trong quá trình chuyển đổi failover?

Tôi hiện có 2 máy chủ được thiết lập trong Nhóm sẵn có.


1
Kiểm tra câu hỏi này (và các câu trả lời): dba.stackexchange.com/questions/25124/iêu
Max Vernon

Chỉ có Oracle RAC có thể làm điều đó.
Richard Brown

Hoặc Bạn nên sử dụng linux loadballancer trong các cài đặt thích hợp trước máy chủ sql, như HAproxy.
kakaz

Câu trả lời:


9

Không, không có cách nào để thực hiện chuyển đổi dự phòng thời gian chết bằng 0 với Luôn luôn (hoặc trong SQL Server nói chung, theo như tôi biết). Để làm điều đó, Máy chủ SQL mà bạn đã kết nối sẽ phải thực hiện chuyển trạng thái sang một truy vấn giữa nút khác và vì nhiều lỗi không mong muốn, điều đó là không thể.

Tuy nhiên, bạn có thể kích hoạt "phần phụ chỉ đọc" trong Luôn luôn, và sau đó độc giả của bạn sẽ không có thời gian chết khi máy chủ chính không hoạt động - vì dù sao họ cũng kết nối với một bản sao phụ để thực hiện các truy vấn CHỌN của họ, họ sẽ không thậm chí thông báo chuyển đổi dự phòng. Vẫn sẽ có một sự gián đoạn đối với người dùng khi mở kết nối "Viết", nhưng ít nhất một phần cơ sở người dùng của bạn sẽ không bị gián đoạn.


Khi bật "phụ chỉ đọc", có bất kỳ yêu cầu đọc nào xảy ra trên chính hay chúng luôn được thực hiện trên các phụ? Và điều gì xảy ra nếu máy chủ thứ cấp có lỗi trong tình huống đó?
Giăng

Đọc ngược lại thứ cấp chỉ xảy ra nếu bạn định cấu hình máy khách để kết nối với phụ.
Max Vernon

1
Tôi thấy, do đó đòi hỏi một ứng dụng khách thông minh hơn.
John

@JohnHughes: Kiểm tra tài liệu này của Microsoft (giữa trang 5): tinyurl.com/9dtvndv và bài đăng trên blog này: tinyurl.com/8cyr9za . Bạn không nhất thiết cần một ứng dụng thông minh hơn - khi bạn bật tính năng này, bạn có thể chỉ định rằng bất kỳ ứng dụng nào cũng có thể kết nối với thứ cấp có thể đọc được, nhưng mọi nỗ lực thực hiện giao dịch DDL / DML sẽ thất bại. Nếu bạn đang sử dụng máy khách gốc mới hơn, bạn có thể chỉ định "ReadIntent", có nghĩa là máy khách mới hơn sẽ đọc từ phụ của bạn, trong khi các máy khách cũ hơn sẽ tiếp tục thực hiện tất cả các giao dịch so với chính của bạn. Một lựa chọn nhưng một số đọc là cần thiết.
SqlRyan

SqlRyan là chính xác, không có cách nào để chuyển đổi một phiên bản SQL Server bằng cách sử dụng Luôn sẵn sàng các nhóm mà không có máy khách bị ngắt kết nối.
mrdenny
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.