Estou procurando algo que nos ajude a criar muitos escravos mysql conectados ao mestre especificado, digamos uma espécie de replicação em massa .
Se existir alguma solução para o efeito. No caso simples, pode ser apenas um script bash, que bloqueia o banco de dados mestre, copia os arquivos da tabela para o novo escravo, restaura a posição e inicia a replicação.
Do seu conhecimento se algo descrito acima existe?
Gostaria de sugerir algo radical. Eu tive essa ideia de StarTrek: Deep Space 9 (Call to Arms)
Com essa analogia do DS9, trago uma ideia interessante.
Você configurou 2 escravos de leitura inicial com MySQL Slave com innodb desabilitado
Isso é opcional. Minha preferência é um escravo totalmente MyISAM para fazer leituras porque é mais rápido para leituras do que o InnoDB para pequenos conjuntos de dados. Se você optar por usar o InnoDB, certifique-se de relaxar a conformidade do ACID com este
No caso de um acidente, apenas destrua o Escravo e crie um novo
Chamaremos os Escravos de S0 e S1
Aqui está outra coisa: tenha isso em /etc/my.cnf em S0
Isso ajudará o desligamento rápido do S0 com dados completamente liberados.
O seguinte é o que você deve escrever no processo do replicador
Quando você precisar gerar um novo escravo (vamos chamá-lo de S2), eis o que você deve fazer
PASSO 01) Em S0, execute
service mysql stop
PASSO 02) Instale a mesma versão do MySQL que o S0 possui no S2
PASSO 03) Em S0,
scp /etc/my.cnf S2:/etc/.
PASSO 04) No S2, você precisa alterar o
server-id
/etc/my.cnf no S2 para um Valor Único (sugestão: use o 2º, 3º e 4º octeto [sem os pontos] do IP privado do S2)PASSO 05) No S2, remova ou comente o
innodb_max_dirty_pages_pct = 0
arquivo /etc/my.cnfPASSO 06) No S0, execute
rsync -av /var/lib/mysql S2:/var/lib/mysql
( Nota: Se você tiver que girar 5 escravos, execute os 5 rsyncs neste ponto )PASSO 07) No S2,
service mysql start
(a replicação do MySQL começa imediatamente de onde o S0 parou)PASSO 08) Em S0, rode
service mysql start
Depois de criar o script do replicador, você pode usá-lo para ativar o MySQL em novos escravos.
Enquanto isso, S1 está disponível para consultas SELECT e continua replicando.
S0 é usado para recriar um novo Slave.
Se você estiver fazendo isso em conjunto com a ativação do Amazon EC2 ou de alguns outros servidores de banco de dados em nuvem, verifique com os administradores do sistema qualquer comando/API do Linux que permita a ativação de um servidor de banco de dados. Em seguida, você aplica o replicador ao servidor de banco de dados recém-gerado. Melhor ainda, você pode incorporar a API de criação do Db Server em seu Replicator Script.
EMBARGO
Se você tiver que rodar dezenas ou centenas de Slaves, tudo que você precisa fazer é ter 10 Replicator Slave Servers (S0 - S9) e ter 10 cópias do replicator script operator em diferentes Replicator Slaves.
Escrevi esta postagem no blog que explica como criar o script bash para automatizar a replicação Master-Slave no MySQL:
http://blog.ditullio.fr/2016/04/30/initialize-mysql-master-slave-replication-script/
Dá um shell script (veja o final do post) onde você simplesmente insere as variáveis:
Em seguida, ele inicia automaticamente a replicação do mestre nesses escravos.
Ele é otimizado para um grande número de escravos porque bloqueia e exporta o despejo mestre e a posição do log apenas uma vez. Em seguida, ele distribui o arquivo dump para todos os escravos e inicializa a replicação em cada escravo.
Sim, é chamado mysqldump:
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
Você pode usá-lo para copiar dados para um escravo e iniciar a replicação em um comando. Está tudo lá.
Veja também:
http://dev.mysql.com/doc/refman/5.1/en/replication-howto-existingdata.html