MySQL có phải được cài đặt một mình không


20

Tôi thường nghe thấy mọi người đưa ra các tuyên bố như "máy chủ MySQL của chúng tôi bị lỗi", điều này mang lại cho tôi cảm giác rằng họ dành một máy duy nhất làm máy chủ MySQL của họ (tôi đoán họ chỉ cài đặt HĐH và chỉ có MySQL trên đó). Là một nhà phát triển không phải là một sysadmin, tôi đã quen với việc MySQL được cài đặt như một phần của ngăn xếp LAMP cùng với máy chủ web và PHP.

Ai đó có thể giải thích cho tôi:

  • Điểm cài đặt MySQL trên một máy chủ riêng biệt là gì? Nghe có vẻ lãng phí tài nguyên khi tôi có thể thêm toàn bộ ngăn đèn ở đó và các máy chủ bổ sung.
  • Nếu cơ sở dữ liệu nằm trên một máy riêng biệt, làm thế nào để các ứng dụng cần sử dụng kết nối với nó?

Câu trả lời:


30

Khi nền tảng ứng dụng và cơ sở dữ liệu của bạn đang cạnh tranh tài nguyên, đó thường là dấu hiệu đầu tiên cho thấy bạn đã sẵn sàng cho một máy chủ cơ sở dữ liệu chuyên dụng.

Thứ hai, tính sẵn sàng cao: thiết lập một cụm cơ sở dữ liệu (và thường là cụm máy chủ ứng dụng / Web cân bằng tải).

Tôi cũng sẽ nói rằng bảo mật đóng một vai trò lớn trong việc chuyển sang các máy chủ riêng biệt vì bạn có thể có các chính sách khác nhau để truy cập mạng cho mỗi máy chủ (ví dụ: máy chủ Web DMZ có máy chủ cơ sở dữ liệu trên mạng LAN).

Truy cập vào máy chủ cơ sở dữ liệu qua mạng. tức là khi bạn thường chỉ định "localhost" cho máy chủ cơ sở dữ liệu của mình, bạn sẽ chỉ định địa chỉ máy chủ / IP của máy chủ cơ sở dữ liệu của mình. Lưu ý: thông thường bạn cần sửa đổi cấu hình của máy chủ cơ sở dữ liệu của mình để cho phép kết nối / cho phép nghe trên một giao diện khác với giao diện loopback.


Ngoài ra, một máy chuyên dụng cho phép điều chỉnh cấu hình đĩa một cách thích hợp. Các máy chủ web khá hài lòng khi dữ liệu sống trên RAID 6; máy chủ cơ sở dữ liệu thích RAID 1.
Simon Richter

12

Một máy chủ cơ sở dữ liệu riêng biệt chỉ là một phần của thiết kế tốt, có thể mở rộng. Điều này không quan trọng nếu lưu lượng truy cập của bạn không cao và một máy chủ thực sự là đủ.

Nhưng trong các dịch vụ bận rộn hơn, việc cách ly các dịch vụ với nhau là một điều tốt. Nếu ai đó DDoSkes máy chủ web của bạn và làm cho nó tiêu thụ tất cả các tài nguyên, điều đó hoàn toàn không bắt nạt máy chủ cơ sở dữ liệu. Trong các môi trường được chia sẻ, nhiều máy chủ web có thể đang sử dụng máy chủ cơ sở dữ liệu, vì vậy nếu máy chủ cơ sở dữ liệu chứa dữ liệu cho 50 trang web khác nhau, thì chỉ có một trang web bị hỏng do DDoS tốt hơn là lấy mọi thứ xuống.

Cũng theo quan điểm của sysadmin, rõ ràng hơn nếu có các máy chủ chuyên dụng được đặt tên hợp lý, chẳng hạn như "mysql-01.yourcompany.com" và "webserver-01.yourcompany.com". Khi họ nhận được thông báo, họ ngay lập tức thấy những gì đang diễn ra, ít nhất là theo nghĩa "OK, có gì đó không đúng với cơ sở dữ liệu". Tôi biết đây là một đối số yếu vì một số tên DNS có thể trỏ đến một máy chủ nhưng vẫn còn.

Các ứng dụng của bạn sẽ kết nối với một máy chủ cơ sở dữ liệu từ xa mà không gặp sự cố qua mạng. Aieeeeeee! Làm thế nào để trình duyệt web của bạn kết nối với một máy chủ từ xa? Thật kỳ diệu! Erm .... nghiêm túc hơn, thay vì 'localhost', bạn chỉ cần cung cấp địa chỉ máy chủ trong $ program_lingu_of_your_choice và bạn đã hoàn tất.


2
Nói thêm về nhận xét của Janne: quan điểm của sysadmin ... Khi bạn gặp vấn đề về hiệu năng hoặc nếu không cần gỡ lỗi ứng dụng, việc này sẽ dễ dàng hơn rất nhiều khi máy chủ web và máy chủ cơ sở dữ liệu nằm trên các máy riêng biệt.
HTTP500

5
  • Một số trang web / ứng dụng sử dụng cơ sở dữ liệu rất nhiều đến nỗi chúng yêu cầu một hoặc nhiều máy chủ dành riêng cho cơ sở dữ liệu.
  • Qua mạng.

3

LAMP là ngăn xếp ứng dụng, nhưng không cần phải cài đặt tất cả trên cùng một máy chủ. Như những người khác đã lưu ý về hiệu năng, bảo mật hoặc khả năng mở rộng thường không được cài đặt trên cùng một máy chủ. Bạn cũng có thể thấy rằng phần cứng tối ưu cho một phần của kiến ​​trúc có thể không dành cho phần khác.

Ví dụ, cơ sở dữ liệu là tất cả về quản lý lưu trữ. Tôi có thể lấy thông tin ra khỏi đĩa càng nhanh thì tôi càng có thể lấy nó nhanh hơn cho người yêu cầu. Nếu tôi đang chia sẻ một hệ thống con đĩa với một số thành viên ngăn xếp ứng dụng khác, chẳng hạn như máy chủ web, sự tranh chấp mà tôi phải đối mặt với tài nguyên được chia sẻ của các ổ đĩa đọc và ghi của các ổ đĩa thực sự có thể cản trở hiệu suất của tôi. Ngoài ra, việc phân chia RAM giữa máy chủ web và máy chủ cơ sở dữ liệu trên một máy chủ nhất định có thể không cung cấp nguồn tài nguyên đủ lớn để chạy theo cách hiệu quả nhất, có thể lưu trữ nhiều thông tin trong RAM mà không cần phải vào đĩa một hình ảnh, một trang hoặc một tập kết quả truy vấn.

Về mặt hành chính cũng có những hiệu quả đạt được. Hãy tưởng tượng nếu bạn điều hành doanh nghiệp của mình trên các ứng dụng nguồn mở tận dụng MySQL như một phụ trợ chung. Bạn có thực sự muốn có sự phổ biến máy chủ cơ sở dữ liệu với mỗi ứng dụng không? Đây có thể là một cơn ác mộng DBA, "OK, ứng dụng nào sử dụng DB này?" Bạn sẽ có nhiều phiên bản, cấu hình phần cứng / phần mềm, nhiều chiến lược duy trì dữ liệu. Bạn cũng có thể có các kỹ năng hành chính rất lan tỏa. Thay vào đó, kết hợp các thể hiện với một phần cứng vật lý được tối ưu hóa cho vai trò và gán các tài nguyên chuyên dụng để quản lý máy chủ và dữ liệu của nó.


2

Các truy vấn MySQL có khả năng rất tốn tài nguyên, có thể làm chậm máy chủ LAMP của bạn.

Khi bạn đang chạy một trang web lớn, phức tạp, nặng về tài nguyên, bạn nên cân nhắc việc chuyển cơ sở dữ liệu sang một máy chủ chuyên dụng khác. Bằng cách đó, bạn có hai máy chủ, một dành riêng cho web và một dành riêng cho cơ sở dữ liệu. Điều này có khả năng giải phóng tài nguyên và tăng tốc cả truy vấn cơ sở dữ liệu và trang web.

Máy chủ web chỉ cần kết nối với địa chỉ máy chủ cơ sở dữ liệu thay vì localhostthực hiện các truy vấn cơ sở dữ liệu.

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.