Não há uma resposta única para dimensionar o MySQL. Algumas dicas gerais:
-
Escale "diagonalmente" o quanto puder, ou seja. manter as coisas em um único servidor MySQL, desde que você ainda seja capaz de rodar em hardware comum. Isso provavelmente significa 2 x CPUs quad-core, 64+ GB RAM, 8 discos RAID 10 - ou superior. O limite superior do que é "hardware comum" está ficando mais rápido a cada ano.
-
Veja as apresentações de Brad Fitzpatrick sobre o dimensionamento do LiveJournal. Eles são praticamente clássicos no que diz respeito ao dimensionamento do LAMP. Em página 25 - 26 desta apresentação você vê o problema que eventualmente enfrentará com a replicação do MySQL: As gravações consumir toda a E / S de disco disponível.
-
Leia " Alto desempenho do MySQL ". É um livro muito bom por autores que viram muitas instalações de alta carga do MySQL .
-
Evite fragmentar (espalhando dados em vários servidores MySQL) pelo maior tempo possível. Ao iniciar o sharding, você abre mão da maioria dos benefícios dos bancos de dados relacionais e diminui o desenvolvimento. Se você tiver que fazer sharding, considere o uso de um datastore NoSQL com um modelo de multi-servidor embutido - fx Riak, Cassandra, HBase, MongoDB. Idealmente, faça o "particionamento funcional" entre MySQL e NoSQL, para que você continue usando o MySQL para obter dados menos importantes que caibam em um RDBMS, e você usa o mecanismo NoSQL para dados "quentes" que não precisa se juntar ao MySQL dados.
maybe mysql cluster? if so, are there any pitfalls or limitations in switching the database to ndb?
Em " Operações na Web " há um capítulo sobre MySQL por Baron Schwartz. Ele praticamente apenas diz "Não!" ao usar o MySQL Cluster / NDB em um ambiente de website. Citação: ".. não funciona bem para junções e consultas GROUP BY, e aplicações web precisam disso."