O MySQL Router deveria ser um balanceador de carga e gerenciador de alta disponibilidade para o MySQL. Não deixa de ser. O que me incomoda é sua baixa resiliência, e, minguada capacidade para para administrar números substanciais de conexões.
O MySQL Router é filho órfão do naufragado e péssimo projeto: MySQL Proxy. Um mal ajambrado e ruim projeto, destemperado e sem nexo que inclusive rodava scripts em LUA. Nunca teve apoio, e, cheio de bugs. Tanto que jamais deixou de ser classificado como “Alpha Release”. Com um breve banho de loja, virou, MySQL Router. Continue lendo MySQL Router – Alta Disponibilidade? →
O Facebook dispensa qualquer tipo de apresentação. Até acho que existe mais gente no “face” do que viva no mundo real. Durante muitos anos o Facebook rodou e confiou na plataforma LAMP com Linux, Apache, MySQL-MemCache e PHP. Com o passar dos anos sua base de dados foi crescendo: 1TB, 10TB, 50TB, 100TB… 200TB, 500TB e continua crescendo.
De fato, o Facebook usou, ativamente, o MySQL até por volta de 100TB. Ooops, quer dizer que o MySQL pode ser escalado até 100TB de base? Sim e não! Eu, particularmente, acredito que o MySQL é muito competente, mas, eu não me sentiria confortável com uma base maior que 2TB ou 3TB. A dificuldade de manutenção acima disso é muito grande. Até 1TB é tranquilo. Mas, voltando ao Facebook, para conseguir a façanha de usar o MySQL com 100TB eles lançaram mão de milhares de “shards” lógicos controlados pela aplicação e sistema operacional. Inclua-se na aplicação, não só o site, mas também o MySQL personalizado pela equipe interna de desenvolvimento. Personalizar o MySQL não é para qualquer um. E, passa a ser mais um ponto de atenção… a cada atualização da comunidade e/ou do fabricante é preciso ser revista com atenção pela equipe de desenvolvimento. Controlar uma dezena de “shards” lógicos já é um drama, imagine milhares. É muito “if”! “If” nome do fulano começa com “A” os dados estão no servidor tal, “If” o nome do ciclano inicia com “C’, e, mora na Holanda, os dados estão no servidor 1.321! “If’ o desenvolvedor se perdeu no monte de “If”… só sobra o “f” (complete a palavra)!
Não, este não sou eu! O Titio é bem mais bonitinho (boa definição para um feio arrumadinho). Mas, esta cara de bocó abismado bem me veste, ao trazer à luz este assunto. Sinceramente, não sei dizer se seria um byta-bug, ou, um problema de configuração.
Apesar da introdução, como não poderia deixar de ser, o assunto é sério e merece uma revisão da configuração de seu ambiente de replicação.
Ao longo do tempo tenho ouvido algumas reclamações, muito esporádicas e pontuais, sobre problemas na replicação, que por vezes “deixa de replicar”. Contudo, como na maioria das vezes, tratava-se de uma “meia dúzia” de comandos, muitos de manutenção, os quais podiam ser replicados manualmente, jamais, justificou-se um forensic (investigação) mais apurado.