Estou construindo uma infraestrutura padrão, onde as gravações vão para o banco de dados mestre e as leituras vão para os bancos de dados escravos. A ideia é que, quando eu precisar de mais poder de leitura, eu apenas gere mais servidores escravos MySQL.
Agora estou ciente dos procedimentos padrão de como criar um novo escravo. E eles são um pouco lentos ... O que estou procurando é criar uma imagem de servidor que eu possa gerar quando precisar de mais poder de leitura e essa imagem seja sincronizada automaticamente com o mestre e se torne seu escravo para leituras.
No momento penso em fazer assim.
- Faça backups de banco de dados a cada 4 horas ou mais/
- Escreva um script que seja executado na primeira vez que o servidor for iniciado.
- O script baixava o backup mais recente e importava de forma regular... e bla bla bla...
Talvez alguém tenha feito algo semelhante e possa compartilhar alguns recursos?
Se você tem três ou mais Escravos, tenho uma boa sugestão: Use um dos Escravos como Voluntário para ser clonado.
Aqui está uma topologia
Digamos que você queira Spawn
SLV3
. Você poderia usarSLV0
como um CloneSLV3
(mesma versão de todos os outros escravos)STOP SLAVE;
service mysql stop
scp -r SLV0:/etc/my.cnf SLV3:/etc/my.cnf
scp -r SLV0:/var/lib/mysql SLV3:/var/lib/mysql
service mysql start
chown -R mysql:mysql /var/lib/mysql
server_id
para/etc/my.cnf
ser exclusivo de todos os outros escravosservice mysql start
É isso.
Este é o mesmo paradigma seguido pelo Percona XtraDB Cluster (PXC) . Quando se trata de PXC, introduzir um Novo Escravo no PXC é tão simples quanto adicionar o MasterIP ao my.cnf e iniciar o MySQL. Todas as etapas acima são executadas internamente pelo PXC usando Quorom Selection para escolher qual Slave se torna o Donor (também conhecido como Volunteer to be Cloned), bem como um dos três métodos para copiar dados (xtrabackup, rsync, mysqldump) Este método de cópia é conhecido como
SST
(Transferência de Instantâneo do Estado) .Se todos os dados no nível do aplicativo forem armazenados apenas no InnoDB, você deve procurar usar o PXC. Se você tiver uma mistura de InnoDB/MyISAM ou totalmente MyISAM, as 9 etapas acima devem ser escritas por você.