O MySQL deve ser instalado sozinho

20

Muitas vezes ouço pessoas fazendo declarações como "nossa máquina do servidor MySQL falhou", o que me dá a impressão de que eles dedicam uma única máquina como servidor MySQL (eu acho que eles apenas instalam o sistema operacional e somente o MySQL nele). Como desenvolvedor e não um administrador de sistemas, estou acostumado com o MySQL sendo instalado como parte de uma pilha LAMP junto com o servidor web e o PHP.

Alguém pode me explicar:

  • qual é o objetivo de instalar o MySQL em um servidor separado? Parece um desperdício de recursos quando posso adicionar toda a pilha de lâmpadas e servidores adicionais.
  • se o banco de dados estiver em uma máquina separada, como os aplicativos que precisam usar se conectam a ele?
por sameold 14.03.2012 / 13:18

5 respostas

30

Quando sua plataforma de aplicativos e seu banco de dados competem por recursos, essa é geralmente a primeira indicação de que você está pronto para um servidor de banco de dados dedicado.

Em segundo lugar, alta disponibilidade: configurar um cluster de banco de dados (e geralmente, por sua vez, um cluster de servidor de aplicativos / balanceamento de carga).

Eu também diria que a segurança desempenha um grande papel na mudança para servidores separados, pois você pode ter políticas diferentes para acesso à rede para cada servidor (por exemplo, um servidor Web com DMZ com um servidor de banco de dados na LAN). / p>

O acesso ao servidor de banco de dados está na rede. ou seja, quando você geralmente está especificando "localhost" para o seu host de banco de dados, você estaria especificando o endereço IP do host do seu servidor de banco de dados. Nota: normalmente você precisa modificar a configuração do seu servidor de banco de dados para permitir conexões / ativar a escuta em uma interface diferente da interface de loopback.

    
por 14.03.2012 / 13:25
12

Um servidor de banco de dados separado é apenas parte de um bom design escalável. Isso não importa se o seu tráfego não é muito alto e um único servidor realmente é suficiente.

Mas em serviços mais ocupados, isolar os serviços uns dos outros é uma coisa boa. Se alguém DDoSses seu servidor web e faz com que ele consuma todos os recursos, isso não intimida o servidor de banco de dados em tudo. Em ambientes compartilhados, é provável que mais de um servidor da Web esteja usando o servidor de banco de dados, portanto, se o servidor de banco de dados contiver dados de 50 sites diferentes, apenas um site desativado devido ao DDoS será melhor do que desativá-lo.

Também do ponto de vista do sysadmin, fica mais claro se existem servidores dedicados com nomes sensatos, como "mysql-01.yourcompany.com" e "webserver-01.yourcompany.com". Quando recebem alertas, eles imediatamente vêem o que está acontecendo, pelo menos no sentido de "OK, há algo errado com o banco de dados". Eu sei que este é um argumento fraco, já que vários nomes DNS podem apontar para um único servidor, mas ainda assim.

Seus aplicativos se conectariam a um servidor de banco de dados remoto sem problemas na rede. Aeeeeeeee! Como o seu navegador da web se conecta a um servidor remoto? É Magica! Erm ... mais a sério, em vez de 'localhost' você acabou de fornecer o endereço do servidor em $ programming_language_of_your_choice e está tudo pronto.

    
por 14.03.2012 / 13:27
5
  • Alguns sites / aplicativos usam um banco de dados tão strongmente que exigem um ou mais servidores dedicados ao próprio banco de dados.
  • na rede.
por 14.03.2012 / 13:23
3

LAMP é a pilha de aplicativos, mas nem todos precisam ser instalados no mesmo host. Como outros notaram para fins de desempenho, segurança ou escalabilidade, muitas vezes eles não estão instalados no mesmo host. Você também pode descobrir que o hardware ideal para uma parte da arquitetura pode não ser para outra.

Por exemplo, bancos de dados são todos sobre gerenciamento de armazenamento. Quanto mais rápido eu conseguir obter informações do disco, mais rápido posso obtê-las ao solicitante. Se eu estiver compartilhando um subsistema de disco com vários outros membros da pilha de aplicativos, como um servidor da Web, a contenção que enfrento no recurso compartilhado dos leds de leitura e gravação das unidades de disco pode realmente prejudicar meu desempenho. Além disso, a divisão da RAM entre o servidor da Web e o servidor de banco de dados em um determinado host pode não fornecer um pool de recursos suficientemente grande para ser executado da maneira mais eficiente, capaz de armazenar o máximo de informações na RAM sem precisar ir ao disco para uma imagem, uma página ou um conjunto de resultados de consulta.

Administrativamente, há eficiências a serem obtidas também. Imagine se você rodasse sua empresa em aplicativos de código aberto que aproveitam o MySQL como um back-end comum. Você realmente gostaria de ter uma proliferação de servidores de banco de dados com cada aplicativo? Isso poderia ser um pesadelo DBA, "OK, qual aplicativo usa esse banco de dados?" Você teria várias versões, configurações múltiplas de hardware / software, várias estratégias de retenção de dados. Você provavelmente também teria habilidades administrativas muito difusas. Em vez disso, junte as instâncias a uma parte física do hardware otimizada para a função e atribua recursos dedicados para gerenciar o servidor e seus dados.

    
por 14.03.2012 / 16:51
2

As consultas do MySQL têm o potencial de exigir muitos recursos, o que pode tornar o seu servidor LAMP mais lento.

Quando você está executando um site grande, complicado e cheio de recursos, é aconselhável considerar a possibilidade de mover o banco de dados para outro servidor dedicado. Dessa forma, você tem dois servidores, um dedicado à web e um dedicado à compactação de banco de dados. Isso tem o potencial de liberar recursos e acelerar tanto o site quanto as consultas ao banco de dados.

O servidor da Web simplesmente precisa se conectar ao endereço do servidor de banco de dados em vez de localhost para fazer suas consultas ao banco de dados.

    
por 14.03.2012 / 20:34