Tôi biết đây là một chuỗi cũ nhưng đó là cấu trúc tương tự mà chúng tôi đã có trong 2 năm qua và hiện tại chạy 1768 cơ sở dữ liệu trên 3 máy chủ.
Chúng tôi đã thiết lập sau (không bao gồm gương và vân vân): Máy chủ trang trại
- 2 web và 4 máy chủ nội dung
dụ
- SQL chỉ cho một cơ sở dữ liệu tổng thể của khách hàng, mà được truy vấn khi họ truy cập trang web của họ bằng ID để lấy tên máy chủ/cá thể và tên cơ sở dữ liệu mà dữ liệu của họ cư trú. Điều này sau đó được lưu trữ trong vé xác thực.
- 3 máy chủ SQL để lưu trữ cơ sở dữ liệu khách hàng trên cơ sở tổng số người học hiện tại trong tất cả các cơ sở dữ liệu trên mỗi máy chủ (được tính nhanh bằng trường số giấy phép trong cơ sở dữ liệu chính).
- Trên mỗi máy chủ SQL, có một cơ sở dữ liệu chủ nhỏ hơn chứa dữ liệu tĩnh dùng chung cho tất cả các máy khách, do đó cho phép cơ sở dữ liệu khách hàng nhỏ hơn và cập nhật nội dung nhanh hơn.
Điều lớn nhất như đã đề cập ở trên là giữ cấu trúc cơ sở dữ liệu đồng bộ hóa! Đối với điều này, tôi đã lập trình một biểu mẫu .NET nhỏ để tra cứu tất cả các khách hàng trong cơ sở dữ liệu chủ và bạn dán mã vào để thực thi và nó sẽ lặp lại thông qua việc lấy vị trí cơ sở dữ liệu và thực thi SQL bạn đã qua.
Tạo khách hàng mới cũng gây ra một số vấn đề cho chúng tôi, vì vậy tôi đã lập một hệ thống quản lý cho nhân viên bán hàng của mình và tạo cơ sở dữ liệu mới dựa trên bản sao lưu của cơ sở dữ liệu "trống", do đó chúng tôi có DB mới nhất mà không cần phải tái kịch bản toàn bộ tập lệnh tạo cơ sở dữ liệu. Sau đó nó chèn các chi tiết khách hàng bên trong cơ sở dữ liệu chủ với vị trí nơi cơ sở dữ liệu được tạo và di chuyển bất kỳ dữ liệu cũ nào từ một phiên bản cũ của phần mềm của chúng tôi. Tất cả điều này được thực hiện trên một cá thể riêng biệt trước khi di chuyển, do đó giảm bất kỳ khóa SQL nào.
Chúng tôi hiện đang chuyển sang một cơ sở dữ liệu duy nhất cho phiên bản tiếp theo của phần mềm như dự phòng cơ sở dữ liệu gần như không thể với nhiều cơ sở dữ liệu! Đây là một điều rất quan trọng để xem xét khi SQL tạo ra một vài nhiệm vụ chờ đợi để phản chiếu dữ liệu của bạn trên cơ sở dữ liệu, một khi bạn bắt đầu nhân các cơ sở dữ liệu nó bị mất và hệ thống hầu như chỉ được giao nhiệm vụ đồng bộ hóa và có thể khóa. số của chủ đề. Xem trang 30 của Microsoft tài liệu dưới đây:
SQLCAT's Guide to High Availability Disaster Recovery.pdf
tuy nhiên tôi có nghi ngờ về việc chuyển sang một cơ sở dữ liệu duy nhất, do một số vấn đề như đã đề cập ở trên, chẳng hạn như liên tục kiểm tra trong mỗi quy trình đơn lẻ mà khách hàng hiện có truy cập vào chỉ dữ liệu của họ và cũng có những thứ dọc theo dòng của một vấn đề nhỏ bây giờ sẽ ảnh hưởng đến mọi cơ sở dữ liệu duy nhất, chẳng hạn như lập chỉ mục bảng và như vậy.Cũng tại phút, khách hàng của chúng tôi có khoảng cách trên 3 máy chủ, nhưng cơ sở dữ liệu duy nhất có nghĩa là chúng tôi có dự phòng, nhưng nếu lỗi nằm trong cơ sở dữ liệu thay vì máy chủ đi xuống, thì đó là tất cả khách hàng xuống, không chỉ 1 cơ sở dữ liệu khách hàng.
Tất cả trong tất cả, nó phụ thuộc vào những gì bạn đang làm và nếu bạn muốn dự phòng; đối với tôi, dự phòng giờ đây là chìa khóa và mọi thứ khác trong một thế giới hoàn hảo không nên xảy ra (chẳng hạn như lỗi gây ra lỗi trong cơ sở dữ liệu cho tất cả mọi người). Chúng tôi chỉ bắt đầu mong đợi một trăm hoặc hơn để chuyển sang hệ thống từ phần mềm tự lưu trữ cũ và nhanh chóng chuyển thành 200.500.1000.100 ... Chúng tôi hiện có hơn 750.000 người dùng sử dụng hệ thống của chúng tôi mỗi năm và vào tháng 8/tháng 9, chúng tôi có hơn 15.000 người dùng đồng thời trực tuyến (dự kiến đạt 20.000 trong năm nay).
Hope rằng đây là sự giúp đỡ một người nào đó dọc theo dòng :-)
Trân
Liam
tôi đang xem xét một thiết lập tương tự cho một ứng dụng tổ chức chúng tôi hiện đang phát triển, vì vậy bất kỳ những câu chuyện chiến tranh trong thế giới thực sẽ được chào đón nhiều nhất :) – elo80ka
Cho đến nay ý tưởng đã hoạt động rất tốt nhưng nó đòi hỏi rất nhiều mã công cụ để hỗ trợ. Ví dụ: chúng tôi có ứng dụng quản trị để tạo trang web mới và công cụ nhập/xuất để di chuyển khách hàng từ máy chủ này sang máy chủ khác. Di chuyển đã được gỡ lỗi chủ yếu, nhưng trong tương lai chúng tôi dự định có hai máy chủ prod mà chúng tôi sẽ sử dụng để cân bằng tải. – Frank
Hiệu ứng phụ tuyệt vời khác của cơ sở dữ liệu riêng biệt cho mỗi khách hàng là nó buộc bạn thiết kế một môi trường có thể đặt lại nơi bạn có thể nhanh chóng tạo ra một cá thể mới của ứng dụng của bạn và chạy các bài kiểm tra đơn vị/thủ công. – Frank