Você tem algumas opções a considerar para melhorar o desempenho do seu banco de dados, não apenas incluindo o dimensionamento.
- Otimize as configurações do MySQL - Existem dezenas de parâmetros de configuração que podem ter um impacto drástico no desempenho do MySQL. Certifique-se de investigar esta opção antes de decidir se realmente precisa escalar.
- Otimize o aplicativo - Como o Paul mencionou, certifique-se de que seu aplicativo esteja se comportando de maneira razoável. Se você não usar os índices e consultas adequados, terá um desempenho ruim, independentemente do número de servidores e desperdiça dinheiro / tempo a longo prazo.
- Ampliação - Obter uma máquina maior pode ser uma solução mais simples, dependendo do nível de hardware em que você está no momento. Para cada aplicativo, no entanto, há algum ponto em que será mais fácil / melhor começar a expandir (replicação / fragmentação).
- Replication - A configuração usual é ter um servidor mestre e vários servidores escravos. O Mestre recebe todas as solicitações de gravação e qualquer um dos escravos pode atender a solicitações de leitura. Isso é bom para casos em que você espera muito mais leituras que gravações.
- Sharding - Cada um dos vários servidores MySQL manipula uma parte do banco de dados geral. Por exemplo, os usuários a-d estão no db1, e-i no db2, etc .... Acredito que isso seja tratado na camada de aplicação e não no próprio MySQL.
Os itens acima estão na ordem em que eu os investigaria, embora isso dependa da aplicação e de seus requisitos. Por exemplo, se você também quisesse adicionar redundância para uma configuração de alta disponibilidade, a replicação provavelmente seria a escolha óbvia.