MySQL을 단독으로 설치해야합니까?


20

나는 종종 "My MySQL server machine failed"와 같은 진술을하는 사람들의 말을 듣게되는데, 이는 하나의 머신을 MySQL 서버로 사용한다는 인상을줍니다. sysadmin이 아닌 개발자로서 웹 서버 및 PHP와 함께 LAMP 스택의 일부로 MySQL을 설치하는 데 익숙합니다.

누군가 나에게 설명 할 수 있습니까?

  • 별도의 서버에 MySQL을 설치하는 시점은 무엇입니까? 전체 램프 스택과 추가 서버를 추가 할 수있을 때 리소스 낭비처럼 들립니다.
  • 데이터베이스가 별도의 컴퓨터에있는 경우 사용해야하는 앱이 어떻게 연결됩니까?

답변:


30

응용 프로그램 플랫폼과 데이터베이스가 리소스를 놓고 경쟁 할 때는 대개 전용 데이터베이스 서버를 사용할 준비가되었음을 나타내는 첫 번째 표시입니다.

둘째, 고 가용성 : 데이터베이스 클러스터 (일반적으로로드 밸런스 웹 / 애플리케이션 서버 클러스터)를 설정합니다.

또한 각 서버 (예 : LAN에 데이터베이스 서버가있는 DMZ 웹 서버)에 대해 서로 다른 네트워크 액세스 정책을 가질 수 있으므로 별도의 서버로 이동하는 데 보안이 큰 역할을합니다.

데이터베이스 서버에 대한 액세스가 네트워크를 통해 이루어집니다. 즉, 일반적으로 데이터베이스 호스트에 "localhost"를 지정하는 경우 데이터베이스 서버의 호스트 / IP 주소를 지정하게됩니다. 참고 : 일반적으로 루프백 인터페이스 이외의 인터페이스에서 연결 / 듣기를 허용하려면 데이터베이스 서버의 구성을 수정해야합니다.


또한 전용 시스템으로 디스크 구성을 적절히 조정할 수 있습니다. 웹 서버는 데이터가 RAID 6에있을 때 매우 행복합니다. 데이터베이스 서버는 RAID 1을 선호합니다.
Simon Richter

12

별도의 데이터베이스 서버는 확장 가능하고 우수한 디자인의 일부입니다. 트래픽이 많지 않고 단일 서버로도 충분하다면 이것은 중요하지 않습니다.

그러나 더 바쁜 서비스에서 서비스를 서로 분리하는 것은 좋은 일입니다. 누군가가 웹 서버를 DDoSses하고 모든 자원을 소비하게하더라도 데이터베이스 서버를 전혀 괴롭히지 않습니다. 공유 환경에서 둘 이상의 웹 서버가 데이터베이스 서버를 사용 중일 수 있으므로 데이터베이스 서버에 50 개의 서로 다른 웹 사이트에 대한 데이터가 포함 된 경우 DDoS로 인해 다운되는 웹 사이트는 모두 다운하는 것보다 낫습니다.

또한 sysadmin의 관점에서 "mysql-01.yourcompany.com"및 "webserver-01.yourcompany.com"과 같이 적절한 이름의 전용 서버가 있는지 더 분명합니다. 경고를 받으면 최소한 "확인, 데이터베이스에 문제가 있습니다"라는 의미에서 진행 상황을 즉시 확인할 수 있습니다. 여러 DNS 이름이 단일 서버를 가리킬 수 있기 때문에 이것이 약한 주장이라는 것을 알고 있습니다.

응용 프로그램은 네트워크를 통해 문제없이 원격 데이터베이스 서버에 연결합니다. 아이예! 웹 브라우저는 원격 서버에 어떻게 연결됩니까? 마술이야! Erm .... 더 심각하게, 'localhost'대신에 $ programming_language_of_your_choice에 서버 주소를 제공하면 모든 준비가 완료됩니다.


2
Janne의 의견 re : sysadmin point of view ... 성능 문제가 있거나 응용 프로그램을 디버깅해야 할 경우 웹 서버와 데이터베이스 서버가 별도의 시스템에있을 때 수행하기가 훨씬 쉽습니다.
HTTP500


3

LAMP는 응용 프로그램 스택이지만 모두 동일한 호스트에 설치 될 필요는 없습니다. 다른 사람들이 성능, 보안 또는 확장 성 목적으로 언급 한 것처럼 종종 동일한 호스트에 설치되지 않습니다. 또한 아키텍처의 한 부분에 최적 인 하드웨어가 다른 부분에 적합하지 않을 수도 있습니다.

예를 들어, 데이터베이스는 모두 스토리지 관리에 관한 것입니다. 디스크에서 정보를 더 빨리 얻을 수 있으면 요청자에게 더 빨리 얻을 수 있습니다. 웹 서버와 같은 여러 다른 응용 프로그램 스택 구성원과 디스크 하위 시스템을 공유하는 경우 디스크 드라이브의 읽기 및 쓰기 heds의 공유 리소스에 대한 경합이 실제로 성능을 방해 할 수 있습니다. 또한 특정 호스트에서 웹 서버와 데이터베이스 서버간에 RAM을 분할하면 가장 효율적인 방식으로 실행할 수있는 충분한 리소스 풀을 제공하지 않을 수 있습니다. 디스크에 가지 않고도 RAM에 많은 정보를 캐시 할 수 있습니다. 이미지, 페이지 또는 쿼리 결과 세트

행정적으로도 얻을 수있는 효율성이 있습니다. MySQL을 공통 백엔드로 활용하는 오픈 소스 애플리케이션에서 엔터프라이즈를 운영한다고 가정 해보십시오. 각 앱마다 데이터베이스 서버 확산을 원하십니까? 이것은 DBA의 악몽 일 수 있습니다. "OK, 어떤 응용 프로그램이이 DB를 사용합니까?" 여러 버전, 하드웨어 / 소프트웨어의 다중 구성, 여러 데이터 보존 전략이 있습니다. 또한 매우 광범위한 관리 기술을 보유하고있을 것입니다. 대신, 인스턴스를 역할에 최적화 된 하나의 물리적 하드웨어로 통합하고 서버와 데이터를 관리하기위한 전용 리소스를 할당하십시오.


2

MySQL 쿼리는 리소스를 많이 사용하므로 LAMP 서버 속도가 느려질 수 있습니다.

크고 복잡한 리소스가 많은 웹 사이트를 실행할 때는 데이터베이스를 다른 전용 서버로 옮기는 것이 좋습니다. 그러면 웹 전용과 데이터베이스 크 런칭 전용의 두 서버가 있습니다. 이를 통해 리소스를 확보하고 웹 사이트 및 데이터베이스 쿼리 속도를 높일 수 있습니다.

웹 서버는 localhost데이터베이스 쿼리 대신 데이터베이스 서버 주소에 연결하기 만하면됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.