Lược đồ SQL Server 2014 thay đổi trong môi trường đa người dùng 24/7


12

Chúng tôi đã cài đặt SQL Server 2014 Enterprise để chạy cơ sở dữ liệu sẵn sàng 24/7. Cơ sở dữ liệu của chúng tôi đủ lớn (200gb +). Ngoài ra, chúng tôi có rất nhiều dịch vụ truy cập cơ sở dữ liệu của chúng tôi mỗi phút để đọc, cập nhật hoặc chèn dữ liệu mới. Chúng tôi muốn cung cấp một tính năng triển khai "nóng" cho khách hàng của chúng tôi và làm cho các cập nhật hàng ngày của chúng tôi (.net và cập nhật lược đồ) minh bạch cho khách hàng. Chúng tôi đã tìm thấy một giải pháp dựa trên cụm với bộ cân bằng tải để cập nhật nhị phân của ứng dụng của chúng tôi, nhưng chúng tôi vẫn có một số hiểu lầm về quy trình triển khai cơ sở dữ liệu và cách thực hành tốt nhất để giải quyết vấn đề này.

Đối với các thay đổi lược đồ, đưa một máy chủ xuống, áp dụng các thay đổi lược đồ, đưa nó trở lại và sau đó áp dụng các thay đổi tương tự cho thể hiện thứ hai. Nó có thể được thực hiện bằng các công cụ SQL Server không và đây có phải là cách tiếp cận phổ biến không? Làm thế nào đồng bộ dữ liệu sau khi máy chủ được sao lưu? Hay tôi hoàn toàn suy nghĩ sai hướng và có giải pháp nào tốt hơn?

Thay đổi lược đồ phổ biến của chúng tôi: thêm / thả cột, thêm / xóa thủ tục được lưu trữ


Bố cục SQL hiện tại của bạn là gì? Phân cụm? Luôn luôn? Nhân đôi? Một ví dụ duy nhất?
LowlyDBA

Ngày nay chúng ta có một trường hợp duy nhất, nhưng chúng ta có thể thay đổi nó theo yêu cầu, thêm máy chủ mới, v.v.
Shmitov Michael

4
Bạn nên làm theo cách tiếp cận xanh lam, theo cách này bạn có thể có một hệ thống trực tiếp (màu xanh lá cây) và thực hiện nâng cấp trên dàn (màu xanh) và sau đó chuyển đổi vai trò. Đây là những gì chúng tôi đã thực hiện bằng cách sử dụng Luôn luôn và nó hoạt động với chúng tôi - gần như cùng một kịch bản. Nó đòi hỏi lập kế hoạch, thực hiện và thử nghiệm thích hợp.
Kin Shah

Bạn có thể cho tôi xin kịch bản chi tiết hơn, ví dụ như thay đổi lược đồ xóa cột không?
Shmitov Michael

Giải thích về nhận xét trước đó, tôi đã chuyển các nút chính (S1) / thứ cấp (S2) trong cơ sở hạ tầng Luôn luôn, sau đó tôi quyết định xóa một số cột khỏi lược đồ trên Bản sao (S1, đó là chính trước khi chuyển đổi), nhưng tôi vẫn có thể nhận được một số dữ liệu sao chép từ S2 với cột đó trong bảng .... làm thế nào tôi có thể giải quyết vấn đề này?
Shmitov Michael

Câu trả lời:


1

Dưới đây sẽ yêu cầu một chút lập kế hoạch và thử nghiệm.


Khái niệm màu xanh lam:


Ý chính của Blue-Green Concept là chia sản phẩm của bạn thành 2 môi trường và chúng giống hệt nhau mọi lúc (đồng bộ hóa dữ liệu) trong đó

  1. Màu xanh lam (Hiện tại) sẽ có phiên bản hiện tại của lược đồ / bản dựng hoặc sản phẩm và sẽ là môi trường "TRỰC TIẾP" của bạn.

  2. Đồng thời, Green sẽ là môi trường dàn dựng / thử nghiệm của bạn, trong đó bạn sẽ nâng cấp lược đồ / bản dựng hoặc sản phẩm của mình lên bản phát hành NEXT, thực hiện kiểm tra hồi quy đầy đủ và được người dùng doanh nghiệp của bạn đăng xuất. Sau khi hạnh phúc, trong giai đoạn giới hạn, bạn sẽ quảng bá Màu xanh lá cây thành môi trường "TRỰC TIẾP" của mình và hạ bệ Blue thành tiền đề / dàn dựng hoặc thử nghiệm cho lần phát hành tiếp theo.

Bằng cách này, bạn có thời gian chết rất ít và nguy cơ lỗi triển khai trên hệ thống trực tiếp (trong cửa sổ bảo trì, vì bạn đang thực hiện nâng cấp) sẽ được giảm thiểu rất nhiều. Ngoài ra, theo cách tiếp cận Blue-Green, bạn sẽ dao động giữa phiên bản LIVE và PREVIOUS sẽ được dàn dựng cho phiên bản tiếp theo.

Một lần nữa, điều này sẽ đòi hỏi nhiều phần cứng / cấp phép cũng như lập kế hoạch và thử nghiệm.

Hầu hết các bước có thể được tự động hóa bằng cách sử dụng DACPAC và PowerShell. Ngoài ra, nếu bạn đang cài đặt nhiều phiên bản trên một máy chủ, hãy đảm bảo cân bằng lại cài đặt Bộ nhớ khi chuyển đổi giữa Xanh lam và Xanh lục. Môi trường LIVE nhận được nhiều bộ nhớ hơn môi trường thụ động.

Trong môi trường hiện tại của tôi, chúng tôi đã triển khai Mô hình xanh / xanh cho triển khai mã Agile cho phép chúng tôi quảng bá mã mỗi 2 tuần với nhiều thời gian để thử nghiệm và đăng xuất kinh doanh. Ngoài ra, nó là một làn gió để quay trở lại trong trường hợp có điều gì đó sai lầm khủng khiếp. Chúng tôi đã tự động hóa phần lớn các công cụ triển khai bằng Dacpacs và PowerShell.

nhập mô tả hình ảnh ở đây (Nguồn hình ảnh)

Đồng thời tham khảo bài viết của Grant Fritchey về Phục hồi và khắc phục sự cố; Những thách thức và chiến lược


0

Nếu cơ sở dữ liệu của bạn không được sao chép, vì vậy, các cột thêm và thả sẽ được chạy rất nhanh. Bởi vì cột thêm chỉ là một vị trí trống mà SQL tạo. Cột thả sẽ chỉ xóa tham chiếu.

Mặt khác, nếu có một số ràng buộc hoặc chỉ mục trên đó hãy cẩn thận.

ADD/DELETEthủ tục sẽ chỉ có hiệu lực trên chính thực thi. Đề xuất là trước khi có bất kỳ thay đổi nào trên đó chạy biên dịch lại

sp_recompile 'myproc'
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.